autohand-cli 0.9.1 → 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 (432) hide show
  1. package/README.md +103 -79
  2. package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
  3. package/dist/AgentRegistry-JBXZUPML.js +18 -0
  4. package/dist/{CommunitySkillsCache-ZACDPD4J.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
  5. package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
  6. package/dist/{HookManager-2S6AHOC3.js → HookManager-BELBPQQI.js} +1 -1
  7. package/dist/{HookManager-TVEQI5ZU.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
  8. package/dist/{ImportWizard-AF2XL6DS.cjs → ImportWizard-U6CIJREW.cjs} +12 -12
  9. package/dist/{ImportWizard-AEBMAKXE.js → ImportWizard-VJFSWSUQ.js} +3 -3
  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-SJPY3ONR.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
  15. package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
  16. package/dist/{PermissionManager-MT7KBNNR.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-RB4RVAF6.js → ProviderFactory-XUT6BSGB.js} +4 -3
  20. package/dist/SessionManager-LGPQIA57.cjs +10 -0
  21. package/dist/{SessionManager-554PHVPC.js → SessionManager-OR4KDDDS.js} +2 -2
  22. package/dist/{SkillsRegistry-NHHMIUYJ.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/{about-3USFSGOH.js → about-OYVGQMJJ.js} +3 -3
  27. package/dist/{about-QR52U5DD.cjs → about-U2BH7HDR.cjs} +4 -4
  28. package/dist/{acp-5Y2W6OZP.js → acp-JWHGXZL5.js} +169 -103
  29. package/dist/{acp-GSYE75OB.cjs → acp-S37JOBCS.cjs} +184 -118
  30. package/dist/{actionExecutor-KHUU3Z3Q.cjs → actionExecutor-2QEPMELQ.cjs} +13 -13
  31. package/dist/{actionExecutor-PLQJZLZV.js → actionExecutor-6NCCORRB.js} +12 -12
  32. package/dist/add-dir-KFUHSIR2.cjs +11 -0
  33. package/dist/{add-dir-HCERJDBR.js → add-dir-MM2BM2Z2.js} +2 -2
  34. package/dist/agent-DUIYLIVN.js +132 -0
  35. package/dist/agent-YYEHGDAK.cjs +132 -0
  36. package/dist/agents-GBGG4CW7.cjs +19 -0
  37. package/dist/agents-ZH34C72F.js +19 -0
  38. package/dist/agents-new-ERXLS7SB.cjs +17 -0
  39. package/dist/{agents-new-7GAQ25EK.js → agents-new-EVTGPTA4.js} +6 -6
  40. package/dist/{autoSkill-66PKCYTW.js → autoSkill-HEWKJ5JV.js} +2 -2
  41. package/dist/autoSkill-YL6PN6AV.cjs +20 -0
  42. package/dist/automode-4BJ7FNPL.cjs +10 -0
  43. package/dist/{automode-BUF3VGXU.js → automode-S4U7A7Q2.js} +2 -2
  44. package/dist/chrome-45ZXHL5N.cjs +22 -0
  45. package/dist/{chrome-Y3T7EIHG.js → chrome-BBSRVG6S.js} +2 -2
  46. package/dist/chrome-IFVZRHAT.cjs +50 -0
  47. package/dist/chrome-MYE6DNA2.js +22 -0
  48. package/dist/{chunk-45CHNQM6.cjs → chunk-24CEJYEG.cjs} +93 -31
  49. package/dist/{chunk-6JWCGQJU.cjs → chunk-255GIVM2.cjs} +6 -6
  50. package/dist/{chunk-D546G7DA.cjs → chunk-2BDSR2OW.cjs} +98 -75
  51. package/dist/{chunk-PGFLPURU.js → chunk-2BPIR7LA.js} +121 -4
  52. package/dist/{chunk-AOKXYGBQ.cjs → chunk-2NY7OHBF.cjs} +41 -26
  53. package/dist/chunk-2WUNHTXL.js +303 -0
  54. package/dist/{chunk-PQBYFEBL.cjs → chunk-34B6ZO6W.cjs} +124 -7
  55. package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
  56. package/dist/{chunk-3UC6DMFI.cjs → chunk-3CAXECWJ.cjs} +15 -15
  57. package/dist/{chunk-YWH55BWK.cjs → chunk-3CBYUBZC.cjs} +6 -9
  58. package/dist/chunk-3DF3GZQ7.js +277 -0
  59. package/dist/{chunk-KASXKDF2.cjs → chunk-3JURXAL6.cjs} +58 -7
  60. package/dist/{chunk-JV5HVCHU.cjs → chunk-3KWAP2Y3.cjs} +88 -9
  61. package/dist/{chunk-WPE2XHVX.js → chunk-3MCK6UBL.js} +1 -1
  62. package/dist/{chunk-U2QUMKCB.js → chunk-3TH7IK4M.js} +62 -9
  63. package/dist/{chunk-YXM6SA7P.js → chunk-3V77OB3W.js} +3 -3
  64. package/dist/{chunk-MZN6JBRZ.cjs → chunk-3Y5UEK7K.cjs} +4 -4
  65. package/dist/{chunk-BP37FVBM.js → chunk-4GPPSBEZ.js} +3 -3
  66. package/dist/{chunk-4XVLNOFA.js → chunk-5CMBAJ6K.js} +20 -3
  67. package/dist/{chunk-PNIAIOMZ.cjs → chunk-5YRXFBYZ.cjs} +35 -6
  68. package/dist/chunk-6AC2TT26.js +156 -0
  69. package/dist/{chunk-PSAH4ZQB.cjs → chunk-6EIQ6A6U.cjs} +2 -2
  70. package/dist/{chunk-YQDI753V.js → chunk-6HSEDXVF.js} +4 -4
  71. package/dist/{chunk-O5GI6SR3.js → chunk-6NUXK62F.js} +1 -1
  72. package/dist/{chunk-HVCIB4SW.cjs → chunk-6TGCAPYH.cjs} +62 -9
  73. package/dist/{chunk-HZWU6IO3.js → chunk-6W3SZCSP.js} +2 -5
  74. package/dist/{chunk-Q3BS6FPM.js → chunk-73LV3DDZ.js} +4 -4
  75. package/dist/{chunk-ZNGRLCFQ.js → chunk-7BGGLIQF.js} +83 -1
  76. package/dist/{chunk-ZNYZB7XY.cjs → chunk-7EEK7CRR.cjs} +83 -1
  77. package/dist/{chunk-HK5A54AV.cjs → chunk-7TO3PDMV.cjs} +48 -4
  78. package/dist/chunk-7UU22RSH.cjs +277 -0
  79. package/dist/{chunk-XNIMSVS6.cjs → chunk-A3GAM6FM.cjs} +11 -11
  80. package/dist/{chunk-W5QLA6WP.cjs → chunk-A7DJU75T.cjs} +8 -8
  81. package/dist/{chunk-7XTUL7ZD.cjs → chunk-AAAO4ERQ.cjs} +9 -9
  82. package/dist/{chunk-M5DK524Z.js → chunk-AAJLMP57.js} +2 -2
  83. package/dist/chunk-ABR756QN.js +529 -0
  84. package/dist/{chunk-OIGYWOL6.js → chunk-APFGDIPD.js} +3 -1
  85. package/dist/{chunk-PTTZI4QZ.js → chunk-APQYRMYL.js} +4 -4
  86. package/dist/{chunk-CO2AADYU.cjs → chunk-AZKOIF2G.cjs} +55 -17
  87. package/dist/{chunk-P6SLT2F4.cjs → chunk-AZLHUPNC.cjs} +2 -2
  88. package/dist/chunk-B55VCYSQ.cjs +30 -0
  89. package/dist/{chunk-JMJRFSNJ.js → chunk-BLQUMSM3.js} +1 -1
  90. package/dist/{chunk-MGNXABSU.cjs → chunk-BXKPX6K4.cjs} +9 -9
  91. package/dist/{chunk-MQQH4XQH.cjs → chunk-C66FN2LP.cjs} +4 -4
  92. package/dist/{chunk-CECH6QQP.js → chunk-CH7KUFAS.js} +10 -10
  93. package/dist/{chunk-PIXQ2AVM.cjs → chunk-CILSXOPI.cjs} +17 -17
  94. package/dist/{chunk-IEPLQ47J.js → chunk-CM24K6ZT.js} +89 -12
  95. package/dist/chunk-CMEZ42F2.cjs +303 -0
  96. package/dist/{chunk-X5P6QQOB.cjs → chunk-CNQKIWIS.cjs} +100 -23
  97. package/dist/{chunk-AQ5PVHOC.cjs → chunk-CSUGNNJY.cjs} +4 -3
  98. package/dist/{chunk-QRQF3556.js → chunk-D6HB3H3L.js} +25 -10
  99. package/dist/{chunk-XZVDYC5U.js → chunk-D7AYKVKW.js} +2 -2
  100. package/dist/{chunk-3UHRCHKB.cjs → chunk-DLCXWOWT.cjs} +23 -23
  101. package/dist/{chunk-CK4HAHVY.cjs → chunk-DMM2BKSV.cjs} +118 -25
  102. package/dist/{chunk-SPQ7QIQ6.js → chunk-DW3DPV77.js} +1 -1
  103. package/dist/chunk-ECQD2QC3.cjs +33 -0
  104. package/dist/{chunk-SNDDZG5H.js → chunk-EEYOS3UC.js} +90 -70
  105. package/dist/{chunk-DGBPWODD.js → chunk-EF2EN5CR.js} +2 -2
  106. package/dist/{chunk-M7B7RRBK.cjs → chunk-EFXFURDY.cjs} +138 -51
  107. package/dist/chunk-EK34UZPB.cjs +40 -0
  108. package/dist/{chunk-CRTCZ4WL.cjs → chunk-FJR6EZLO.cjs} +3834 -2337
  109. package/dist/{chunk-TYBPTKFT.js → chunk-FPO7YNPQ.js} +1 -1
  110. package/dist/{chunk-X3TI5TJJ.js → chunk-FS4I6BNR.js} +1 -1
  111. package/dist/{chunk-WNJXIACY.js → chunk-FSJ2MNOC.js} +3 -3
  112. package/dist/{chunk-44ZWOBTI.js → chunk-GEHZMC4G.js} +12 -9
  113. package/dist/{chunk-Y5BDE24P.cjs → chunk-GO6C2RAR.cjs} +3 -0
  114. package/dist/{chunk-XW3XCK4E.cjs → chunk-GSMR6V36.cjs} +4 -4
  115. package/dist/{chunk-H426KOGY.js → chunk-GSZWATME.js} +1 -1
  116. package/dist/{chunk-S5JNQIGL.cjs → chunk-GYLGCR6F.cjs} +5 -5
  117. package/dist/{chunk-ONVYXTUT.cjs → chunk-H3OOWNYQ.cjs} +3 -3
  118. package/dist/{chunk-V5ELP2XE.js → chunk-H65446XW.js} +110 -15
  119. package/dist/{chunk-LANGD5CO.js → chunk-H7HXRRHK.js} +45 -1
  120. package/dist/{chunk-RBXBH6EB.cjs → chunk-HN2JTDN5.cjs} +17 -17
  121. package/dist/{chunk-SOVR7S3T.cjs → chunk-HNXUZ5OY.cjs} +2 -2
  122. package/dist/{chunk-AZ47LKD5.cjs → chunk-HOYT3E65.cjs} +3 -3
  123. package/dist/{chunk-P4FUTSVK.js → chunk-HTPY5ESD.js} +3 -3
  124. package/dist/{chunk-5SFV2NCY.cjs → chunk-HVLWH2AF.cjs} +10 -10
  125. package/dist/{chunk-VQHSYAPZ.cjs → chunk-HZTEU4W5.cjs} +62 -93
  126. package/dist/{chunk-4XFHP2SN.cjs → chunk-I5T7LPFP.cjs} +7 -7
  127. package/dist/{chunk-ZPLCAXJW.js → chunk-IB5CJXE7.js} +7 -7
  128. package/dist/{chunk-KM7R5YPS.cjs → chunk-INNXFLDR.cjs} +9 -6
  129. package/dist/{chunk-2ESQR35E.cjs → chunk-JFLEP3T7.cjs} +10 -10
  130. package/dist/chunk-JJGDOBFL.js +40 -0
  131. package/dist/{chunk-5A7ZL64N.js → chunk-JSU46T6K.js} +1 -1
  132. package/dist/{chunk-NB6M6ESM.js → chunk-K6WN6BT4.js} +1 -1
  133. package/dist/{chunk-QQ64HEHP.cjs → chunk-KIQH3SMT.cjs} +34 -31
  134. package/dist/{chunk-MANJ67D3.js → chunk-KPRXHIE2.js} +52 -83
  135. package/dist/{chunk-6HF6XSCC.js → chunk-LIO3RX2Z.js} +2 -2
  136. package/dist/{chunk-NZ3ZWLUW.js → chunk-LOSXLH7P.js} +109 -16
  137. package/dist/{chunk-NZ7GCK7Y.cjs → chunk-LSOR72PB.cjs} +23 -23
  138. package/dist/{chunk-6AYJCDTA.js → chunk-MA3AVDCC.js} +47 -9
  139. package/dist/{chunk-PZZMIYII.js → chunk-ME3S2WIR.js} +3 -3
  140. package/dist/{chunk-2IW5YFJ4.js → chunk-NC2I2M4P.js} +4 -4
  141. package/dist/{chunk-AE2ILW25.cjs → chunk-NC4A4LVC.cjs} +13 -13
  142. package/dist/{chunk-EEHWALXA.js → chunk-NGEK5FCJ.js} +85 -3
  143. package/dist/{chunk-MMKZSJUN.js → chunk-NKW6CHXQ.js} +1 -1
  144. package/dist/{chunk-JB3JCYBJ.js → chunk-NOWCRKP2.js} +4 -3
  145. package/dist/{chunk-3ZOOH44N.js → chunk-NUB2LMB6.js} +2 -2
  146. package/dist/chunk-O246MKIW.cjs +267 -0
  147. package/dist/{chunk-SRMGWMQO.js → chunk-OGFWL2PS.js} +1 -1
  148. package/dist/{chunk-YISPVAXO.cjs → chunk-ONNGAR6W.cjs} +340 -597
  149. package/dist/{chunk-7WAUCLLQ.js → chunk-OOFR6A62.js} +33 -4
  150. package/dist/{chunk-4E7SHPNQ.js → chunk-OZ7FHO7J.js} +2 -2
  151. package/dist/{chunk-NV6LCD2I.cjs → chunk-P5EWGUI2.cjs} +109 -27
  152. package/dist/{chunk-YC5OBZQU.js → chunk-P6BQJPAI.js} +41 -18
  153. package/dist/{chunk-SHRLFX6F.js → chunk-PG2JIU5M.js} +57 -6
  154. package/dist/{chunk-6OECOAK5.cjs → chunk-PI27G2ED.cjs} +25 -8
  155. package/dist/{chunk-TR6NECEZ.js → chunk-PI7LRPL6.js} +1 -1
  156. package/dist/{chunk-GAOPJ5S3.cjs → chunk-PMPEC5HN.cjs} +18 -15
  157. package/dist/{chunk-5GCQ5UMV.cjs → chunk-PYUP7AKY.cjs} +14 -14
  158. package/dist/{chunk-S5QKRA2V.js → chunk-QC5Z3ZT5.js} +2 -2
  159. package/dist/chunk-QDO4L2A7.cjs +156 -0
  160. package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
  161. package/dist/{chunk-26G7YGOW.js → chunk-QVXMSQOG.js} +84 -21
  162. package/dist/{chunk-SVVP4UUZ.cjs → chunk-R4UKBKDY.cjs} +11 -11
  163. package/dist/{chunk-HG3ZASBH.cjs → chunk-R75AWII3.cjs} +112 -17
  164. package/dist/{chunk-TE4SYTWR.cjs → chunk-RD5PLUIX.cjs} +8 -8
  165. package/dist/{chunk-FFHSCM5M.js → chunk-RGB34CV5.js} +3 -3
  166. package/dist/{chunk-SY2P3Z5W.cjs → chunk-RJCZLFHE.cjs} +96 -32
  167. package/dist/{chunk-22SCR3EV.cjs → chunk-RKWNM2BJ.cjs} +2 -2
  168. package/dist/{chunk-FBQJZKFX.js → chunk-RMVONICR.js} +3 -3
  169. package/dist/{chunk-PY73W5MQ.cjs → chunk-RPSYRJL7.cjs} +10 -4
  170. package/dist/{chunk-HXHE2KAO.js → chunk-RWKU2X7O.js} +7 -4
  171. package/dist/{chunk-NQZH5CR2.cjs → chunk-RZLEGVMH.cjs} +102 -5
  172. package/dist/{chunk-KMP6Y3LJ.js → chunk-S2L3Y677.js} +1 -1
  173. package/dist/{chunk-GSDV75A5.js → chunk-S7KVUIOS.js} +1 -1
  174. package/dist/{chunk-7PT646AL.cjs → chunk-SACJJ6NO.cjs} +5 -3
  175. package/dist/{chunk-LEZEWKPA.js → chunk-SJQU2ZFR.js} +96 -32
  176. package/dist/{chunk-65LRPW5W.js → chunk-SKAQKQFF.js} +12 -2
  177. package/dist/chunk-T4DXP5OP.js +30 -0
  178. package/dist/{chunk-EYHKL4QC.js → chunk-T6FTB6K2.js} +1 -1
  179. package/dist/{chunk-DNSD7DVJ.js → chunk-T6N6GRFT.js} +13 -10
  180. package/dist/{chunk-575PXZX7.js → chunk-TJFKA6A7.js} +82 -3
  181. package/dist/{chunk-HSWWM6AM.js → chunk-TJZUPS4Z.js} +34 -291
  182. package/dist/{chunk-DHUQZ53B.cjs → chunk-TLKHZ425.cjs} +2 -2
  183. package/dist/{chunk-VLGGMQUN.cjs → chunk-TQ24NLXO.cjs} +6 -6
  184. package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
  185. package/dist/{chunk-EA2MS25U.cjs → chunk-TZB5XADL.cjs} +4 -4
  186. package/dist/{chunk-U6PLSPMD.cjs → chunk-UAYXZXWU.cjs} +4 -4
  187. package/dist/{chunk-OV3T5MUH.cjs → chunk-UKBFNBDO.cjs} +11 -11
  188. package/dist/{chunk-SZD45IDG.js → chunk-UMJYX5KD.js} +101 -4
  189. package/dist/{chunk-B76FJKEJ.cjs → chunk-USKYTHDL.cjs} +69 -18
  190. package/dist/{chunk-NZQFKXM3.cjs → chunk-VAJUSZMC.cjs} +15 -15
  191. package/dist/{chunk-SDLY4X3G.js → chunk-VGQG4NBJ.js} +2 -2
  192. package/dist/{chunk-KWXGDSYT.js → chunk-VLUIVJ3J.js} +58 -7
  193. package/dist/{chunk-KJ26T7GM.cjs → chunk-VOBINVMV.cjs} +105 -42
  194. package/dist/{chunk-C5QIQQ37.js → chunk-VSHKKCSH.js} +16 -5
  195. package/dist/{chunk-L46OUKW5.cjs → chunk-VSZU3MGA.cjs} +28 -17
  196. package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
  197. package/dist/{chunk-UWZ4G3SQ.js → chunk-VXGYFX45.js} +4 -4
  198. package/dist/{chunk-C46B72VK.js → chunk-WH6YUQDB.js} +141 -54
  199. package/dist/{chunk-SFFEKZGC.js → chunk-WQ6TD55V.js} +2 -2
  200. package/dist/{chunk-7PJKTSRN.js → chunk-WQWECXTY.js} +3 -3
  201. package/dist/{chunk-DSSCERHI.cjs → chunk-WVDJUJH6.cjs} +2 -2
  202. package/dist/{chunk-JPFRI4L4.js → chunk-X24VIVDZ.js} +210 -26
  203. package/dist/{chunk-7IRQ7JEH.js → chunk-X4NRTLXD.js} +7 -1
  204. package/dist/{chunk-7MY4JHER.js → chunk-X53SHYCG.js} +2 -2
  205. package/dist/{chunk-RFUKZIJF.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
  206. package/dist/{chunk-WJYFLQ7G.cjs → chunk-Y47OJGLB.cjs} +3 -3
  207. package/dist/{chunk-HC2Q6A3E.cjs → chunk-Y4MN27V3.cjs} +361 -177
  208. package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
  209. package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
  210. package/dist/{chunk-63ANVAOJ.cjs → chunk-YMXYC777.cjs} +3 -3
  211. package/dist/{chunk-X7XMITIL.cjs → chunk-Z3GRWK6O.cjs} +8 -8
  212. package/dist/{chunk-3ICORF7M.cjs → chunk-Z5GG2KSL.cjs} +4 -4
  213. package/dist/{chunk-I2ZK3AOD.js → chunk-ZER7DYQK.js} +2 -2
  214. package/dist/{chunk-V3SZLWEQ.cjs → chunk-ZFDXZEZJ.cjs} +11 -11
  215. package/dist/{chunk-QBYGMMDD.js → chunk-ZFV4HJA6.js} +66 -4
  216. package/dist/chunk-ZHMYTI5D.cjs +529 -0
  217. package/dist/{chunk-4567QNRB.js → chunk-ZLR2TFBC.js} +3 -0
  218. package/dist/{chunk-OCATAKXV.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
  219. package/dist/{chunk-CCIDL4SA.js → chunk-ZVLVLDYN.js} +2915 -1418
  220. package/dist/clear-AJGXD2BB.cjs +12 -0
  221. package/dist/{clear-Y5TO3RZA.js → clear-HAHDSWKW.js} +3 -3
  222. package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
  223. package/dist/{communityInstaller-RVL4STPS.js → communityInstaller-OLKEUGMX.js} +5 -5
  224. package/dist/completion-G7Z436TF.cjs +17 -0
  225. package/dist/{completion-SE3XYG74.js → completion-ZS3AXJ6A.js} +4 -4
  226. package/dist/{config-7KPHKFTP.js → config-OWYAQPCX.js} +5 -4
  227. package/dist/config-W2BHT2QE.cjs +22 -0
  228. package/dist/{constants-EJFAWJQI.js → constants-AS6K67AA.js} +5 -3
  229. package/dist/constants-B4W5BT7F.cjs +23 -0
  230. package/dist/{export-BJVIDZC4.js → export-5HIU3KMD.js} +4 -4
  231. package/dist/export-GFD32UY2.cjs +15 -0
  232. package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
  233. package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
  234. package/dist/feature-KP74CZ3F.cjs +14 -0
  235. package/dist/{feature-V4JF5TNJ.js → feature-OPNVMB2E.js} +2 -2
  236. package/dist/features-LT55MURX.cjs +24 -0
  237. package/dist/features-ZDIU26WX.js +24 -0
  238. package/dist/feedback-7WTJFQ6S.js +18 -0
  239. package/dist/feedback-CEOJ3453.cjs +18 -0
  240. package/dist/go-2CY5SZNR.js +16 -0
  241. package/dist/go-O2CSQON4.cjs +16 -0
  242. package/dist/goal-DL2N2AWT.cjs +16 -0
  243. package/dist/goal-IJS7VZSG.js +16 -0
  244. package/dist/help-RNOGDEBA.cjs +12 -0
  245. package/dist/{help-MLIROWKM.js → help-TCWD2IRH.js} +2 -2
  246. package/dist/{history-GQJ6RZD6.js → history-ATOR5OQV.js} +2 -2
  247. package/dist/history-UUSGX2AL.cjs +14 -0
  248. package/dist/{hooks-PPFHCF7T.js → hooks-R3Z5QKUP.js} +5 -5
  249. package/dist/hooks-RWM5UY67.cjs +18 -0
  250. package/dist/{i18n-Q7UZJRPL.js → i18n-4QI4TD4I.js} +1 -1
  251. package/dist/i18n-MFAEU5RV.cjs +33 -0
  252. package/dist/{ide-BUSVE54P.js → ide-6PBTCCUQ.js} +4 -4
  253. package/dist/ide-UE3G7NMQ.cjs +15 -0
  254. package/dist/{import-C7S6UJMW.cjs → import-2IG76KAN.cjs} +6 -4
  255. package/dist/{import-U47DXCA7.js → import-E47QL4DW.js} +2 -2
  256. package/dist/import-NQDNBFUL.cjs +10 -0
  257. package/dist/{import-3VBKI6BN.js → import-VQIHGJWS.js} +6 -4
  258. package/dist/index.cjs +444 -334
  259. package/dist/index.d.cts +38 -0
  260. package/dist/index.d.ts +38 -0
  261. package/dist/index.js +324 -214
  262. package/dist/init-DX3RDGDT.cjs +10 -0
  263. package/dist/{init-Q2O4R42R.js → init-Q54OAAFZ.js} +2 -2
  264. package/dist/{inputPrompt-3CFZDUBH.js → inputPrompt-V2VBDRM7.js} +2 -2
  265. package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
  266. package/dist/language-I6KXAOXD.js +23 -0
  267. package/dist/language-XMIVOH5E.cjs +23 -0
  268. package/dist/learn-JPVVGTKU.js +23 -0
  269. package/dist/learn-NLSHI2MZ.cjs +23 -0
  270. package/dist/login-NABQYLYC.cjs +28 -0
  271. package/dist/login-XPOVFSWN.js +28 -0
  272. package/dist/logout-HNHCGB4Q.js +25 -0
  273. package/dist/logout-SKGDXJSW.cjs +25 -0
  274. package/dist/{mcp-AH3MMUBU.js → mcp-EN73YFGZ.js} +8 -7
  275. package/dist/mcp-TADZCPJQ.cjs +22 -0
  276. package/dist/{mcp-install-IA4ZS2SV.cjs → mcp-install-2GKWWBAS.cjs} +14 -13
  277. package/dist/{mcp-install-222PCKSW.js → mcp-install-3TBTVSHW.js} +9 -8
  278. package/dist/memory-GRXFTDIN.cjs +10 -0
  279. package/dist/{memory-VB46T5H3.js → memory-K2P3CDCH.js} +2 -2
  280. package/dist/{model-SJJG64AM.js → model-DEG22OWA.js} +2 -2
  281. package/dist/model-OSD74T7Z.cjs +10 -0
  282. package/dist/new-4NWBOATU.cjs +12 -0
  283. package/dist/{new-ERZ5C6CN.js → new-KJAP2MB6.js} +3 -3
  284. package/dist/{onboarding-ZQXMPSMJ.js → onboarding-2U5WE2OA.js} +17 -14
  285. package/dist/onboarding-5DZFCO5Q.cjs +39 -0
  286. package/dist/permissions-KY5I6YQ3.cjs +10 -0
  287. package/dist/{permissions-7ACNFK7A.js → permissions-TKYON7PP.js} +2 -2
  288. package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
  289. package/dist/plan-PYKP652W.cjs +13 -0
  290. package/dist/quit-GSKJL42O.js +14 -0
  291. package/dist/quit-TQSRTBUT.cjs +14 -0
  292. package/dist/{registry-4DXUDKJN.js → registry-EZ4V4TUQ.js} +1339 -1
  293. package/dist/{registry-UEO3ETZ7.cjs → registry-LCWYI4IB.cjs} +1378 -40
  294. package/dist/resume-4VWJXARX.cjs +17 -0
  295. package/dist/{resume-XSXZMDMD.js → resume-TLHWWWFN.js} +5 -5
  296. package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
  297. package/dist/review-XLJEUH5K.cjs +9 -0
  298. package/dist/{rpc-XH7QLN4H.js → rpc-3DLQBDWU.js} +151 -124
  299. package/dist/{rpc-YF54T7JU.cjs → rpc-O36WUU3L.cjs} +169 -142
  300. package/dist/search-DSX2CY4A.cjs +22 -0
  301. package/dist/search-I3QUDUQL.js +22 -0
  302. package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
  303. package/dist/sessionBranching-FKV4CR36.js +19 -0
  304. package/dist/sessions-3JUOT3ED.cjs +10 -0
  305. package/dist/{sessions-NJYHJOEL.js → sessions-VWMDIPOS.js} +2 -2
  306. package/dist/{settings-ZXUQH3DO.js → settings-FT2LZZUV.js} +11 -8
  307. package/dist/settings-RL4KNWHB.cjs +45 -0
  308. package/dist/setup-HQEJVOYT.js +32 -0
  309. package/dist/setup-MN54LKOL.cjs +32 -0
  310. package/dist/share-BUAFZNBX.cjs +17 -0
  311. package/dist/{share-WFAGZ5PY.js → share-CGB6MAVJ.js} +6 -6
  312. package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
  313. package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
  314. package/dist/{skills-NBTNDVAY.js → skills-7DKR3HRZ.js} +7 -7
  315. package/dist/{skills-OB6RDW7D.js → skills-BBBENOEY.js} +9 -9
  316. package/dist/skills-OQM7IHAF.cjs +29 -0
  317. package/dist/{skills-ZROBG3RZ.cjs → skills-RA2PKL63.cjs} +9 -9
  318. package/dist/{skills-install-ILX6QVEF.cjs → skills-install-D7K476SL.cjs} +15 -15
  319. package/dist/{skills-install-BHTIEMKH.js → skills-install-T4SOKJSL.js} +8 -8
  320. package/dist/{skills-new-YMRP2HNO.js → skills-new-S33NGEU3.js} +6 -6
  321. package/dist/skills-new-UVYH53MD.cjs +18 -0
  322. package/dist/slashCommands-MWOUDSQP.js +111 -0
  323. package/dist/slashCommands-XASURUTV.cjs +111 -0
  324. package/dist/squad-PIIYDFVH.cjs +15 -0
  325. package/dist/squad-VHYOVEJP.js +15 -0
  326. package/dist/status-GHFTXQBL.js +25 -0
  327. package/dist/status-WXMIJIU3.cjs +25 -0
  328. package/dist/statusline-2K7AC6ZQ.js +21 -0
  329. package/dist/statusline-GROI4HOC.cjs +21 -0
  330. package/dist/sync-254WF6JI.cjs +42 -0
  331. package/dist/sync-2DIZN4EH.cjs +24 -0
  332. package/dist/{sync-OCJN4ZSO.js → sync-J6I2ZUKQ.js} +5 -3
  333. package/dist/{sync-7C25MOT2.js → sync-Z3LVSEEV.js} +8 -6
  334. package/dist/{teammate-D77B6QRT.cjs → teammate-EXR76PEQ.cjs} +5 -5
  335. package/dist/{teammate-EZCMHOIL.js → teammate-K4DAOFEQ.js} +5 -5
  336. package/dist/theme-MVQDSU47.js +23 -0
  337. package/dist/theme-QAKEYWJG.cjs +23 -0
  338. package/dist/ui/questionModal.cjs +5 -5
  339. package/dist/ui/questionModal.js +4 -4
  340. package/dist/{undo-GNUTFXCW.js → undo-5AU47JHF.js} +2 -2
  341. package/dist/undo-ME6WKUXZ.cjs +10 -0
  342. package/dist/{usage-QSTNSDAO.js → usage-QTKO2YMD.js} +6 -5
  343. package/dist/usage-TYNJKVER.cjs +25 -0
  344. package/package.json +4 -3
  345. package/dist/AgentRegistry-GOV7FN2O.js +0 -10
  346. package/dist/AgentRegistry-J2C6JBZ3.cjs +0 -10
  347. package/dist/CommunitySkillsCache-22BB3J6H.cjs +0 -8
  348. package/dist/LearnAdvisor-KKEQ5QCV.js +0 -9
  349. package/dist/LearnAdvisor-Q7RAYLPF.cjs +0 -9
  350. package/dist/MemoryManager-PMNAEZMB.cjs +0 -8
  351. package/dist/MemoryManager-QZRLTUB5.js +0 -8
  352. package/dist/NVIDIAProvider-C3FWQOBZ.cjs +0 -14
  353. package/dist/PermissionManager-URCNP5EC.cjs +0 -11
  354. package/dist/ProviderFactory-56N3ECE4.cjs +0 -12
  355. package/dist/SessionManager-2IZGWASQ.cjs +0 -10
  356. package/dist/SkillsRegistry-GMRVONOQ.cjs +0 -9
  357. package/dist/SubAgent-4GOR2FIJ.js +0 -13
  358. package/dist/SubAgent-ZJMDH4FI.cjs +0 -13
  359. package/dist/add-dir-BTAD5OZS.cjs +0 -11
  360. package/dist/agent-B3EVT7NN.cjs +0 -126
  361. package/dist/agent-SATQ3WZ3.js +0 -126
  362. package/dist/agents-44CRJGM7.cjs +0 -18
  363. package/dist/agents-NN4ZAJ7R.js +0 -18
  364. package/dist/agents-new-6D6G4QS6.cjs +0 -17
  365. package/dist/autoSkill-VQLGBELN.cjs +0 -20
  366. package/dist/automode-45DWV4TN.cjs +0 -10
  367. package/dist/chrome-Q2U73HZB.cjs +0 -50
  368. package/dist/chrome-Q54OALOK.cjs +0 -21
  369. package/dist/chrome-ZNJ46OYW.js +0 -21
  370. package/dist/chunk-JCUHCH37.cjs +0 -247
  371. package/dist/chunk-VKOXFT4L.cjs +0 -23
  372. package/dist/clear-QJXU25IF.cjs +0 -12
  373. package/dist/communityInstaller-LXMVKVAV.cjs +0 -22
  374. package/dist/completion-JX4T2ONW.cjs +0 -17
  375. package/dist/config-3224PRW4.cjs +0 -21
  376. package/dist/constants-MCCGUU5F.cjs +0 -21
  377. package/dist/export-KU4557HK.cjs +0 -15
  378. package/dist/feature-K3LG5IJP.cjs +0 -14
  379. package/dist/features-5OJTLKS7.js +0 -23
  380. package/dist/features-VCBJQXCX.cjs +0 -23
  381. package/dist/feedback-D4437VE4.js +0 -18
  382. package/dist/feedback-VZPEHGFY.cjs +0 -18
  383. package/dist/go-X4E6BCD6.js +0 -12
  384. package/dist/go-XREVFS5I.cjs +0 -12
  385. package/dist/goal-4M3J6JS2.cjs +0 -16
  386. package/dist/goal-EI66BV7W.js +0 -16
  387. package/dist/help-GGFS7WHY.cjs +0 -12
  388. package/dist/history-J4LUIOSI.cjs +0 -14
  389. package/dist/hooks-FSRIUS6A.cjs +0 -18
  390. package/dist/i18n-CI6VFXL5.cjs +0 -33
  391. package/dist/ide-YR27BPGM.cjs +0 -15
  392. package/dist/import-DBK4OCDF.cjs +0 -10
  393. package/dist/init-OXTYS72D.cjs +0 -10
  394. package/dist/inputPrompt-JMACL4EB.cjs +0 -90
  395. package/dist/language-EK3M6UBV.cjs +0 -22
  396. package/dist/language-Q3RUGGOW.js +0 -22
  397. package/dist/learn-3DSX7DYG.cjs +0 -23
  398. package/dist/learn-OPOH5L43.js +0 -23
  399. package/dist/login-GST7MWXJ.cjs +0 -27
  400. package/dist/login-Q7DZKAX4.js +0 -27
  401. package/dist/logout-2G7OUK7I.cjs +0 -24
  402. package/dist/logout-FNBBL2UI.js +0 -24
  403. package/dist/mcp-DW7R63IB.cjs +0 -21
  404. package/dist/memory-6NX3DAIY.cjs +0 -10
  405. package/dist/model-64NAELFS.cjs +0 -10
  406. package/dist/new-DU5SOOOY.cjs +0 -12
  407. package/dist/onboarding-2U2BV2KE.cjs +0 -36
  408. package/dist/permissions-GSNNV7RJ.cjs +0 -10
  409. package/dist/plan-XEJMOT55.cjs +0 -13
  410. package/dist/quit-WY6T267G.js +0 -10
  411. package/dist/quit-XIRE2KRE.cjs +0 -10
  412. package/dist/resume-RQZ3WXBP.cjs +0 -17
  413. package/dist/review-UWHWQHCB.cjs +0 -9
  414. package/dist/search-VXXFGZWU.cjs +0 -21
  415. package/dist/search-YAWGX7P7.js +0 -21
  416. package/dist/sessions-OSG3UJEZ.cjs +0 -10
  417. package/dist/settings-SO2UIGWV.cjs +0 -42
  418. package/dist/setup-KG7EGKF5.js +0 -30
  419. package/dist/setup-RSOPCQ57.cjs +0 -30
  420. package/dist/share-ZU3SGACF.cjs +0 -17
  421. package/dist/skills-KBVAQAD2.cjs +0 -29
  422. package/dist/skills-new-B45VQ2PP.cjs +0 -18
  423. package/dist/slashCommands-53VYIBJU.js +0 -105
  424. package/dist/slashCommands-BG2RGGZ6.cjs +0 -105
  425. package/dist/status-CQ2IUOVK.cjs +0 -24
  426. package/dist/status-E7IGNVPC.js +0 -24
  427. package/dist/sync-XRP46IVG.cjs +0 -40
  428. package/dist/sync-ZMFVE7T4.cjs +0 -22
  429. package/dist/theme-KKRDE6P7.cjs +0 -22
  430. package/dist/theme-XF7XIWBQ.js +0 -22
  431. package/dist/undo-U4KN7QQM.cjs +0 -10
  432. package/dist/usage-YDEMQBNQ.cjs +0 -24
@@ -7,16 +7,16 @@ var _chunkFMB3TSWPcjs = require('./chunk-FMB3TSWP.cjs');
7
7
  var _chunkSD3NTC7Dcjs = require('./chunk-SD3NTC7D.cjs');
8
8
 
9
9
 
10
- var _chunkAQ5PVHOCcjs = require('./chunk-AQ5PVHOC.cjs');
10
+ var _chunkCSUGNNJYcjs = require('./chunk-CSUGNNJY.cjs');
11
11
 
12
12
 
13
- var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
13
+ var _chunkDMM2BKSVcjs = require('./chunk-DMM2BKSV.cjs');
14
14
 
15
15
 
16
- var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
16
+ var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
17
17
 
18
18
 
19
- var _chunkKASXKDF2cjs = require('./chunk-KASXKDF2.cjs');
19
+ var _chunk3JURXAL6cjs = require('./chunk-3JURXAL6.cjs');
20
20
 
21
21
  // src/auth/AuthClient.ts
22
22
  var DEFAULT_TIMEOUT = 1e4;
@@ -24,7 +24,7 @@ var AuthClient = class {
24
24
 
25
25
 
26
26
  constructor(config = {}) {
27
- this.baseUrl = config.baseUrl || _chunkKASXKDF2cjs.AUTH_CONFIG.apiBaseUrl;
27
+ this.baseUrl = config.baseUrl || _chunk3JURXAL6cjs.AUTH_CONFIG.apiBaseUrl;
28
28
  this.timeout = config.timeout || DEFAULT_TIMEOUT;
29
29
  }
30
30
  /**
@@ -123,9 +123,12 @@ var AuthClient = class {
123
123
  signal: controller.signal
124
124
  });
125
125
  clearTimeout(timeoutId);
126
- if (!response.ok) {
126
+ if (response.status === 401 || response.status === 403) {
127
127
  return { authenticated: false };
128
128
  }
129
+ if (!response.ok) {
130
+ throw new Error(`HTTP ${response.status}`);
131
+ }
129
132
  const data = await response.json();
130
133
  let user;
131
134
  if (typeof data === "object" && "user" in data) {
@@ -179,9 +182,9 @@ var _child_process = require('child_process');
179
182
  var _os = require('os');
180
183
  async function getGitCommit() {
181
184
  if (true) {
182
- return "da69f79";
185
+ return "1d7b7b1";
183
186
  }
184
- const match = _chunkAQ5PVHOCcjs.package_default.version.match(/-alpha\.([0-9a-f]{7,40})$/i);
187
+ const match = _chunkCSUGNNJYcjs.package_default.version.match(/-alpha\.([0-9a-f]{7,40})$/i);
185
188
  if (_optionalChain([match, 'optionalAccess', _ => _[1]])) {
186
189
  return match[1];
187
190
  }
@@ -244,7 +247,21 @@ async function runUpgrade() {
244
247
  });
245
248
  });
246
249
  }
247
- async function ensureAuthenticated(config) {
250
+ async function ensureAuthenticated(config, options = {}) {
251
+ if (options.bare) {
252
+ const token = resolveBareModeApiKey(config);
253
+ if (!token) {
254
+ console.error(_chalk2.default.red("Bare mode requires AUTOHAND_API_KEY or auth.apiKeyHelper in --settings/config."));
255
+ process.exit(1);
256
+ }
257
+ return {
258
+ ...config,
259
+ auth: {
260
+ ...config.auth,
261
+ token
262
+ }
263
+ };
264
+ }
248
265
  if (_optionalChain([config, 'access', _2 => _2.auth, 'optionalAccess', _3 => _3.token])) {
249
266
  if (isTokenExpiredLocally(config)) {
250
267
  return await promptLogin(config);
@@ -253,8 +270,29 @@ async function ensureAuthenticated(config) {
253
270
  }
254
271
  return await promptLogin(config);
255
272
  }
273
+ function resolveBareModeApiKey(config) {
274
+ const envToken = _optionalChain([process, 'access', _4 => _4.env, 'access', _5 => _5.AUTOHAND_API_KEY, 'optionalAccess', _6 => _6.trim, 'call', _7 => _7()]);
275
+ if (envToken) {
276
+ return envToken;
277
+ }
278
+ const helper = _optionalChain([config, 'access', _8 => _8.auth, 'optionalAccess', _9 => _9.apiKeyHelper, 'optionalAccess', _10 => _10.trim, 'call', _11 => _11()]);
279
+ if (!helper) {
280
+ return null;
281
+ }
282
+ const result = _child_process.spawnSync.call(void 0, helper, {
283
+ shell: true,
284
+ encoding: "utf8",
285
+ timeout: 5e3,
286
+ stdio: ["ignore", "pipe", "ignore"]
287
+ });
288
+ if (result.status !== 0 || result.error) {
289
+ return null;
290
+ }
291
+ const token = String(result.stdout || "").trim();
292
+ return token.length > 0 ? token : null;
293
+ }
256
294
  async function checkAuthenticated(config) {
257
- if (!_optionalChain([config, 'access', _4 => _4.auth, 'optionalAccess', _5 => _5.token])) {
295
+ if (!_optionalChain([config, 'access', _12 => _12.auth, 'optionalAccess', _13 => _13.token])) {
258
296
  return false;
259
297
  }
260
298
  if (isTokenExpiredLocally(config)) {
@@ -269,7 +307,7 @@ async function checkAuthenticated(config) {
269
307
  }
270
308
  }
271
309
  function isTokenExpiredLocally(config) {
272
- if (!_optionalChain([config, 'access', _6 => _6.auth, 'optionalAccess', _7 => _7.expiresAt])) {
310
+ if (!_optionalChain([config, 'access', _14 => _14.auth, 'optionalAccess', _15 => _15.expiresAt])) {
273
311
  return false;
274
312
  }
275
313
  const expiresAt = new Date(config.auth.expiresAt);
@@ -278,11 +316,11 @@ function isTokenExpiredLocally(config) {
278
316
  async function promptLogin(config) {
279
317
  if (process.stdout.isTTY) {
280
318
  const commit = await getGitCommit();
281
- const versionStr = commit !== "unknown" ? `v${_chunkAQ5PVHOCcjs.package_default.version} (${commit})` : `v${_chunkAQ5PVHOCcjs.package_default.version}`;
319
+ const versionStr = commit !== "unknown" ? `v${_chunkCSUGNNJYcjs.package_default.version} (${commit})` : `v${_chunkCSUGNNJYcjs.package_default.version}`;
282
320
  let updateAvailable = false;
283
321
  let latestVersion = null;
284
322
  try {
285
- const updateResult = await _chunkFMB3TSWPcjs.checkForUpdates.call(void 0, _chunkAQ5PVHOCcjs.package_default.version, { forceCheck: true });
323
+ const updateResult = await _chunkFMB3TSWPcjs.checkForUpdates.call(void 0, _chunkCSUGNNJYcjs.package_default.version, { forceCheck: true });
286
324
  if (!updateResult.error && !updateResult.isUpToDate && updateResult.latestVersion) {
287
325
  updateAvailable = true;
288
326
  latestVersion = updateResult.latestVersion;
@@ -304,7 +342,7 @@ async function promptLogin(config) {
304
342
  });
305
343
  }
306
344
  options.push({ label: "Exit", value: "exit" });
307
- const selected = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
345
+ const selected = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
308
346
  logo: logoWithVersion,
309
347
  skipAltScreen: true,
310
348
  title: updateAvailable ? _chalk2.default.yellow("New version available!") : _chalk2.default.white("Sign in to continue."),
@@ -322,10 +360,10 @@ async function promptLogin(config) {
322
360
  }
323
361
  }
324
362
  }
325
- const { login } = await Promise.resolve().then(() => _interopRequireWildcard(require("./login-GST7MWXJ.cjs")));
363
+ const { login } = await Promise.resolve().then(() => _interopRequireWildcard(require("./login-NABQYLYC.cjs")));
326
364
  await login({ config });
327
- const refreshed = await _chunkX5P6QQOBcjs.loadConfig.call(void 0, config.configPath);
328
- if (!_optionalChain([refreshed, 'access', _8 => _8.auth, 'optionalAccess', _9 => _9.token])) {
365
+ const refreshed = await _chunkCNQKIWIScjs.loadConfig.call(void 0, config.configPath);
366
+ if (!_optionalChain([refreshed, 'access', _16 => _16.auth, 'optionalAccess', _17 => _17.token])) {
329
367
  console.log(_chalk2.default.red("Login failed. Autohand requires authentication to run."));
330
368
  process.exit(1);
331
369
  }
@@ -1,6 +1,6 @@
1
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(); } }
2
2
 
3
- var _chunkKASXKDF2cjs = require('./chunk-KASXKDF2.cjs');
3
+ var _chunk3JURXAL6cjs = require('./chunk-3JURXAL6.cjs');
4
4
 
5
5
  // src/permissions/localProjectPermissions.ts
6
6
  var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
@@ -21,7 +21,7 @@ function normalizePermissionSettings(settings) {
21
21
  };
22
22
  }
23
23
  function getLocalSettingsPath(workspaceRoot) {
24
- return _path2.default.join(workspaceRoot, _chunkKASXKDF2cjs.PROJECT_DIR_NAME, LOCAL_SETTINGS_FILE);
24
+ return _path2.default.join(workspaceRoot, _chunk3JURXAL6cjs.PROJECT_DIR_NAME, LOCAL_SETTINGS_FILE);
25
25
  }
26
26
  async function loadLocalProjectSettings(workspaceRoot) {
27
27
  const settingsPath = getLocalSettingsPath(workspaceRoot);
@@ -0,0 +1,30 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/sync/runtimeSyncService.ts
2
+ var globalSyncService = null;
3
+ var pendingBackgroundSync = false;
4
+ function setSyncService(service) {
5
+ globalSyncService = service;
6
+ }
7
+ function getSyncService() {
8
+ return globalSyncService;
9
+ }
10
+ function scheduleBackgroundSync() {
11
+ const syncService = globalSyncService;
12
+ if (!_optionalChain([syncService, 'optionalAccess', _ => _.isRunning]) || pendingBackgroundSync) return;
13
+ pendingBackgroundSync = true;
14
+ setTimeout(() => {
15
+ pendingBackgroundSync = false;
16
+ void syncService.sync().catch(() => {
17
+ });
18
+ }, 0);
19
+ }
20
+
21
+
22
+
23
+
24
+
25
+ exports.setSyncService = setSyncService; exports.getSyncService = getSyncService; exports.scheduleBackgroundSync = scheduleBackgroundSync;
26
+ /**
27
+ * @license
28
+ * Copyright 2025 Autohand AI LLC
29
+ * SPDX-License-Identifier: Apache-2.0
30
+ */
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-LEZEWKPA.js";
3
+ } from "./chunk-SJQU2ZFR.js";
4
4
 
5
5
  // src/commands/model.ts
6
6
  async function model(ctx) {
@@ -1,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
3
+ var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
4
4
 
5
5
  // src/commands/help.ts
6
6
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
7
7
  var _terminallink = require('terminal-link'); var _terminallink2 = _interopRequireDefault(_terminallink);
8
8
  async function help() {
9
- const { SLASH_COMMANDS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./slashCommands-BG2RGGZ6.cjs")));
9
+ const { SLASH_COMMANDS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./slashCommands-XASURUTV.cjs")));
10
10
  console.log(_chalk2.default.cyan(`
11
- ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.help.title")}
11
+ ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.help.title")}
12
12
  `));
13
13
  const commands = SLASH_COMMANDS.filter((cmd) => cmd.implemented && cmd.command !== "/?").sort((a, b) => a.command.localeCompare(b.command));
14
14
  const maxLen = Math.max(...commands.map((c) => c.command.length)) + 2;
@@ -16,15 +16,15 @@ async function help() {
16
16
  console.log(` ${_chalk2.default.yellow(command.padEnd(maxLen))} ${_chalk2.default.gray(description)}`);
17
17
  }
18
18
  console.log(_chalk2.default.cyan(`
19
- ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.help.tips.title")}
19
+ ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.help.tips.title")}
20
20
  `));
21
- console.log(_chalk2.default.gray(` \u2022 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.help.tips.mention")}`));
22
- console.log(_chalk2.default.gray(` \u2022 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.help.tips.arrows")}`));
23
- console.log(_chalk2.default.gray(` \u2022 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.help.tips.tab")}`));
24
- console.log(_chalk2.default.gray(` \u2022 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.help.tips.escape")}
21
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.help.tips.mention")}`));
22
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.help.tips.arrows")}`));
23
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.help.tips.tab")}`));
24
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.help.tips.escape")}
25
25
  `));
26
26
  const docLink = _terminallink2.default.call(void 0, "docs.autohand.ai", "https://docs.autohand.ai");
27
- console.log(_chalk2.default.gray(` ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.help.docsLink", { link: docLink })}
27
+ console.log(_chalk2.default.gray(` ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.help.docsLink", { link: docLink })}
28
28
  `));
29
29
  return null;
30
30
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
3
+ var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
4
4
 
5
5
  // src/commands/undo.ts
6
6
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -29,13 +29,13 @@ async function undo(ctx) {
29
29
  console.log(_chalk2.default.green(" Removed untracked files"));
30
30
  }
31
31
  } else {
32
- console.log(_chalk2.default.gray(" " + _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.undo.noChanges")));
32
+ console.log(_chalk2.default.gray(" " + _chunkRJCZLFHEcjs.t.call(void 0, "commands.undo.noChanges")));
33
33
  }
34
34
  try {
35
35
  await ctx.undoFileMutation();
36
- console.log(_chalk2.default.green(" " + _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.undo.success", { file: "last mutation" })));
36
+ console.log(_chalk2.default.green(" " + _chunkRJCZLFHEcjs.t.call(void 0, "commands.undo.success", { file: "last mutation" })));
37
37
  } catch (e) {
38
- console.log(_chalk2.default.gray(" " + _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.undo.noChanges")));
38
+ console.log(_chalk2.default.gray(" " + _chunkRJCZLFHEcjs.t.call(void 0, "commands.undo.noChanges")));
39
39
  }
40
40
  ctx.removeLastTurn();
41
41
  console.log(_chalk2.default.green(" Removed last conversation turn"));
@@ -1,31 +1,31 @@
1
1
  import {
2
2
  LearnAdvisor
3
- } from "./chunk-H426KOGY.js";
3
+ } from "./chunk-GSZWATME.js";
4
4
  import {
5
5
  ProjectAnalyzer
6
- } from "./chunk-WNJXIACY.js";
6
+ } from "./chunk-FSJ2MNOC.js";
7
+ import {
8
+ GitHubRegistryFetcher
9
+ } from "./chunk-YVQI26H4.js";
7
10
  import {
8
11
  computeProjectHash,
9
12
  fetchRegistryWithFallback,
10
13
  injectGeneratedMetadata
11
- } from "./chunk-P4FUTSVK.js";
14
+ } from "./chunk-HTPY5ESD.js";
12
15
  import {
13
16
  CommunitySkillsCache
14
- } from "./chunk-KMP6Y3LJ.js";
15
- import {
16
- GitHubRegistryFetcher
17
- } from "./chunk-YVQI26H4.js";
17
+ } from "./chunk-S2L3Y677.js";
18
18
  import {
19
19
  showConfirm,
20
20
  showModal
21
- } from "./chunk-NZ3ZWLUW.js";
21
+ } from "./chunk-LOSXLH7P.js";
22
22
  import {
23
23
  AUTOHAND_PATHS,
24
24
  PROJECT_DIR_NAME
25
- } from "./chunk-SHRLFX6F.js";
25
+ } from "./chunk-PG2JIU5M.js";
26
26
  import {
27
27
  t
28
- } from "./chunk-LEZEWKPA.js";
28
+ } from "./chunk-SJQU2ZFR.js";
29
29
 
30
30
  // src/commands/learn.ts
31
31
  import path from "path";
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
3
+ var _chunkDMM2BKSVcjs = require('./chunk-DMM2BKSV.cjs');
4
4
 
5
5
 
6
- var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
6
+ var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
7
7
 
8
8
  // src/commands/ide.ts
9
9
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -398,24 +398,24 @@ function groupByIDE(detected) {
398
398
  }
399
399
  async function ide(ctx) {
400
400
  console.log(_chalk2.default.bold.cyan(`
401
- ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.title")}`));
402
- console.log(_chalk2.default.gray(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.connectDescription")));
401
+ ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.title")}`));
402
+ console.log(_chalk2.default.gray(_chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.connectDescription")));
403
403
  console.log();
404
404
  const detected = await detectRunningIDEs(ctx.workspaceRoot);
405
405
  const { matching, nonMatching } = groupByIDE(detected);
406
406
  if (detected.length === 0) {
407
- console.log(_chalk2.default.yellow(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.noIdesDetected")));
407
+ console.log(_chalk2.default.yellow(_chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.noIdesDetected")));
408
408
  console.log();
409
409
  printExtensionSuggestions(detected);
410
410
  return null;
411
411
  }
412
412
  if (matching.length === 0) {
413
- console.log(_chalk2.default.yellow(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.noMatchingIdes")));
413
+ console.log(_chalk2.default.yellow(_chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.noMatchingIdes")));
414
414
  console.log();
415
415
  if (nonMatching.size > 0) {
416
416
  console.log(
417
417
  _chalk2.default.gray(
418
- _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.otherNotMatching", { count: String(nonMatching.size) })
418
+ _chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.otherNotMatching", { count: String(nonMatching.size) })
419
419
  )
420
420
  );
421
421
  console.log();
@@ -426,19 +426,19 @@ ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.title")}`));
426
426
  }
427
427
  console.log(
428
428
  _chalk2.default.green(
429
- _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.foundMatching", { count: String(matching.length) })
429
+ _chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.foundMatching", { count: String(matching.length) })
430
430
  )
431
431
  );
432
432
  console.log();
433
433
  const options = matching.map((ide2) => ({
434
- label: `${ide2.displayName}: ${_nullishCoalesce(ide2.workspacePath, () => ( _chunkSY2P3Z5Wcjs.t.call(void 0, "common.unknown")))}`,
434
+ label: `${ide2.displayName}: ${_nullishCoalesce(ide2.workspacePath, () => ( _chunkRJCZLFHEcjs.t.call(void 0, "common.unknown")))}`,
435
435
  value: ide2.kind
436
436
  }));
437
437
  await _optionalChain([ctx, 'access', _4 => _4.onBeforeModal, 'optionalCall', _5 => _5()]);
438
438
  let result;
439
439
  try {
440
- result = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
441
- title: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.selectPrompt"),
440
+ result = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
441
+ title: _chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.selectPrompt"),
442
442
  options
443
443
  });
444
444
  } finally {
@@ -446,7 +446,7 @@ ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.title")}`));
446
446
  }
447
447
  if (!result) {
448
448
  console.log(_chalk2.default.gray(`
449
- ${_chunkSY2P3Z5Wcjs.t.call(void 0, "common.cancelled")}`));
449
+ ${_chunkRJCZLFHEcjs.t.call(void 0, "common.cancelled")}`));
450
450
  return null;
451
451
  }
452
452
  const selected = matching.find((d) => d.kind === result.value);
@@ -454,7 +454,7 @@ ${_chunkSY2P3Z5Wcjs.t.call(void 0, "common.cancelled")}`));
454
454
  console.log(
455
455
  _chalk2.default.green(
456
456
  `
457
- \u2713 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.connected", { ide: selected.displayName })}`
457
+ \u2713 ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.connected", { ide: selected.displayName })}`
458
458
  )
459
459
  );
460
460
  }
@@ -462,7 +462,7 @@ ${_chunkSY2P3Z5Wcjs.t.call(void 0, "common.cancelled")}`));
462
462
  console.log();
463
463
  console.log(
464
464
  _chalk2.default.gray(
465
- _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.otherNotMatching", { count: String(nonMatching.size) })
465
+ _chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.otherNotMatching", { count: String(nonMatching.size) })
466
466
  )
467
467
  );
468
468
  console.log();
@@ -473,7 +473,7 @@ ${_chunkSY2P3Z5Wcjs.t.call(void 0, "common.cancelled")}`));
473
473
  }
474
474
  function printNonMatchingIDEs(ides) {
475
475
  for (const ide2 of ides) {
476
- const wsPath = _nullishCoalesce(ide2.workspacePath, () => ( _chunkSY2P3Z5Wcjs.t.call(void 0, "common.unknown")));
476
+ const wsPath = _nullishCoalesce(ide2.workspacePath, () => ( _chunkRJCZLFHEcjs.t.call(void 0, "common.unknown")));
477
477
  console.log(_chalk2.default.gray(` \u2022 ${ide2.displayName}: ${wsPath}`));
478
478
  }
479
479
  console.log();
@@ -481,7 +481,7 @@ function printNonMatchingIDEs(ides) {
481
481
  function printExtensionSuggestions(detected) {
482
482
  const suggestions = getExtensionSuggestions(detected);
483
483
  if (suggestions.length === 0) return;
484
- console.log(_chalk2.default.dim(`\u{1F4A1} ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.extensionHint")}`));
484
+ console.log(_chalk2.default.dim(`\u{1F4A1} ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.extensionHint")}`));
485
485
  for (const suggestion of suggestions) {
486
486
  const link = _terminallink2.default.call(void 0, suggestion.url, suggestion.url);
487
487
  console.log(_chalk2.default.dim(` \u2022 ${suggestion.displayName}: ${link}`));
@@ -490,7 +490,7 @@ function printExtensionSuggestions(detected) {
490
490
  }
491
491
  var metadata = {
492
492
  command: "/ide",
493
- description: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.ide.description"),
493
+ description: _chunkRJCZLFHEcjs.t.call(void 0, "commands.ide.description"),
494
494
  implemented: true
495
495
  };
496
496
 
@@ -1,9 +1,13 @@
1
1
  import {
2
2
  loadLocalProjectSettings
3
- } from "./chunk-5A7ZL64N.js";
3
+ } from "./chunk-JSU46T6K.js";
4
+ import {
5
+ getCustomProviderConfig,
6
+ isCustomProviderName
7
+ } from "./chunk-JJGDOBFL.js";
4
8
  import {
5
9
  isAwsBedrockProviderEnabled
6
- } from "./chunk-LANGD5CO.js";
10
+ } from "./chunk-H7HXRRHK.js";
7
11
  import {
8
12
  autoInitTheme,
9
13
  configureThemeSources,
@@ -11,7 +15,7 @@ import {
11
15
  } from "./chunk-NBGOIFKP.js";
12
16
  import {
13
17
  AUTOHAND_FILES
14
- } from "./chunk-SHRLFX6F.js";
18
+ } from "./chunk-PG2JIU5M.js";
15
19
 
16
20
  // src/config.ts
17
21
  import fs from "fs-extra";
@@ -28,6 +32,7 @@ var DEFAULT_OPENAI_URL = "https://api.openai.com/v1";
28
32
  var DEFAULT_MLX_URL = "http://localhost:8080";
29
33
  var DEFAULT_LLMGATEWAY_URL = "https://api.llmgateway.io/v1";
30
34
  var DEFAULT_ZAI_URL = "https://api.z.ai/api/paas/v4";
35
+ var DEFAULT_SAKANA_URL = "https://api.sakana.ai/v1";
31
36
  var DEFAULT_DEEPSEEK_URL = "https://api.deepseek.com";
32
37
  var DEFAULT_BEDROCK_REGION = "us-east-1";
33
38
  function normalizeProviderName(provider) {
@@ -37,6 +42,9 @@ function normalizeProviderName(provider) {
37
42
  if (provider === "vertex") {
38
43
  return "vertexai";
39
44
  }
45
+ if (isCustomProviderName(provider)) {
46
+ return provider;
47
+ }
40
48
  const validProviders = [
41
49
  "openrouter",
42
50
  "ollama",
@@ -46,6 +54,7 @@ function normalizeProviderName(provider) {
46
54
  "llmgateway",
47
55
  "azure",
48
56
  "zai",
57
+ "sakana",
49
58
  "vertexai",
50
59
  "xai",
51
60
  "cerebras",
@@ -363,7 +372,18 @@ function mergeWorkspaceSettings(globalConfig, workspaceSettings) {
363
372
  }
364
373
  if (workspaceSettings.model !== void 0) {
365
374
  const provider = workspaceSettings.provider || merged.provider;
366
- if (provider && merged[provider]) {
375
+ if (provider && isCustomProviderName(provider)) {
376
+ const customProvider = getCustomProviderConfig(merged, provider);
377
+ if (customProvider) {
378
+ merged.customProviders = {
379
+ ...merged.customProviders,
380
+ [customProvider.id]: {
381
+ ...customProvider,
382
+ model: workspaceSettings.model
383
+ }
384
+ };
385
+ }
386
+ } else if (provider && merged[provider]) {
367
387
  merged[provider].model = workspaceSettings.model;
368
388
  }
369
389
  }
@@ -477,7 +497,7 @@ function normalizeConfig(config) {
477
497
  return config;
478
498
  }
479
499
  function isModernConfig(config) {
480
- return typeof config.openrouter === "object" || typeof config.ollama === "object" || typeof config.llamacpp === "object" || typeof config.openai === "object" || typeof config.mlx === "object" || typeof config.azure === "object" || typeof config.zai === "object" || typeof config.vertexai === "object" || typeof config.xai === "object" || typeof config.cerebras === "object" || typeof config.nvidia === "object" || typeof config.deepseek === "object" || typeof config.bedrock === "object";
500
+ return typeof config.openrouter === "object" || typeof config.ollama === "object" || typeof config.llamacpp === "object" || typeof config.openai === "object" || typeof config.mlx === "object" || typeof config.azure === "object" || typeof config.zai === "object" || typeof config.sakana === "object" || typeof config.vertexai === "object" || typeof config.xai === "object" || typeof config.cerebras === "object" || typeof config.nvidia === "object" || typeof config.deepseek === "object" || typeof config.bedrock === "object" || typeof config.customProviders === "object";
481
501
  }
482
502
  function isLegacyConfig(config) {
483
503
  return typeof config.api_key === "string";
@@ -517,6 +537,9 @@ function validateConfig(config, configPath) {
517
537
  throw new Error(`ui.activityVerbsEnabled must be boolean in ${configPath}`);
518
538
  }
519
539
  }
540
+ if (config.auth?.apiKeyHelper !== void 0 && typeof config.auth.apiKeyHelper !== "string") {
541
+ throw new Error(`auth.apiKeyHelper must be a string in ${configPath}`);
542
+ }
520
543
  if (config.agent) {
521
544
  if (config.agent.toolSelectionCache !== void 0 && typeof config.agent.toolSelectionCache !== "boolean") {
522
545
  throw new Error(`agent.toolSelectionCache must be boolean in ${configPath}`);
@@ -575,6 +598,37 @@ function validateConfig(config, configPath) {
575
598
  }
576
599
  }
577
600
  }
601
+ if (config.customProviders !== void 0) {
602
+ if (!isPlainObject(config.customProviders)) {
603
+ throw new Error(`customProviders must be an object in ${configPath}`);
604
+ }
605
+ for (const [key, provider] of Object.entries(config.customProviders)) {
606
+ if (!isPlainObject(provider)) {
607
+ throw new Error(`customProviders.${key} must be an object in ${configPath}`);
608
+ }
609
+ if (provider.id !== key) {
610
+ throw new Error(`customProviders.${key}.id must match its config key in ${configPath}`);
611
+ }
612
+ if (typeof provider.displayName !== "string" || provider.displayName.trim() === "") {
613
+ throw new Error(`customProviders.${key}.displayName must be a non-empty string in ${configPath}`);
614
+ }
615
+ if (provider.apiFormat !== "openai-compatible") {
616
+ throw new Error(`customProviders.${key}.apiFormat must be "openai-compatible" in ${configPath}`);
617
+ }
618
+ if (typeof provider.baseUrl !== "string" || provider.baseUrl.trim() === "") {
619
+ throw new Error(`customProviders.${key}.baseUrl must be a non-empty string in ${configPath}`);
620
+ }
621
+ if (typeof provider.model !== "string" || provider.model.trim() === "") {
622
+ throw new Error(`customProviders.${key}.model must be a non-empty string in ${configPath}`);
623
+ }
624
+ if (provider.apiKeyRequired !== void 0 && typeof provider.apiKeyRequired !== "boolean") {
625
+ throw new Error(`customProviders.${key}.apiKeyRequired must be boolean in ${configPath}`);
626
+ }
627
+ if (provider.contextWindow !== void 0 && (typeof provider.contextWindow !== "number" || provider.contextWindow <= 0)) {
628
+ throw new Error(`customProviders.${key}.contextWindow must be a positive number in ${configPath}`);
629
+ }
630
+ }
631
+ }
578
632
  }
579
633
  function resolveWorkspaceRoot(config, requestedPath) {
580
634
  const candidate = requestedPath ?? process.cwd() ?? config.workspace?.defaultRoot;
@@ -582,9 +636,30 @@ function resolveWorkspaceRoot(config, requestedPath) {
582
636
  }
583
637
  function getProviderConfig(config, provider) {
584
638
  const chosen = provider ?? config.provider ?? "openrouter";
639
+ if (isCustomProviderName(chosen)) {
640
+ const entry2 = getCustomProviderConfig(config, chosen);
641
+ if (!entry2 || entry2.apiFormat !== "openai-compatible") {
642
+ return null;
643
+ }
644
+ const model = entry2.model?.trim();
645
+ const baseUrl = entry2.baseUrl?.trim();
646
+ const requiresApiKey = entry2.apiKeyRequired !== false;
647
+ if (!model || !baseUrl) {
648
+ return null;
649
+ }
650
+ if (requiresApiKey && (!entry2.apiKey || entry2.apiKey === "replace-me")) {
651
+ return null;
652
+ }
653
+ return {
654
+ ...entry2,
655
+ model,
656
+ baseUrl
657
+ };
658
+ }
585
659
  if (chosen === "bedrock" && !isAwsBedrockProviderEnabled(config)) {
586
660
  return null;
587
661
  }
662
+ const builtInProvider = chosen;
588
663
  const configByProvider = {
589
664
  openrouter: config.openrouter,
590
665
  ollama: config.ollama,
@@ -594,6 +669,7 @@ function getProviderConfig(config, provider) {
594
669
  llmgateway: config.llmgateway,
595
670
  azure: config.azure,
596
671
  zai: config.zai,
672
+ sakana: config.sakana,
597
673
  vertexai: config.vertexai,
598
674
  xai: config.xai,
599
675
  cerebras: config.cerebras,
@@ -601,7 +677,7 @@ function getProviderConfig(config, provider) {
601
677
  deepseek: config.deepseek,
602
678
  bedrock: config.bedrock
603
679
  };
604
- const entry = configByProvider[chosen];
680
+ const entry = configByProvider[builtInProvider];
605
681
  if (!entry) {
606
682
  return null;
607
683
  }
@@ -619,24 +695,24 @@ function getProviderConfig(config, provider) {
619
695
  return null;
620
696
  }
621
697
  }
622
- } else if (chosen === "openrouter" || chosen === "llmgateway" || chosen === "zai" || chosen === "nvidia" || chosen === "deepseek") {
698
+ } else if (builtInProvider === "openrouter" || builtInProvider === "llmgateway" || builtInProvider === "zai" || builtInProvider === "sakana" || builtInProvider === "nvidia" || builtInProvider === "deepseek") {
623
699
  const { apiKey, model } = entry;
624
700
  if (!apiKey || apiKey === "replace-me" || !model) {
625
701
  return null;
626
702
  }
627
- } else if (chosen === "vertexai") {
703
+ } else if (builtInProvider === "vertexai") {
628
704
  const { authToken, projectId, model } = entry;
629
705
  if (!authToken || !projectId || !model) {
630
706
  return null;
631
707
  }
632
- } else if (chosen === "bedrock") {
708
+ } else if (builtInProvider === "bedrock") {
633
709
  return normalizeBedrockProviderConfig(entry);
634
710
  } else {
635
- if (chosen === "llamacpp") {
711
+ if (builtInProvider === "llamacpp") {
636
712
  return {
637
713
  ...entry,
638
714
  model: entry.model ?? "local",
639
- baseUrl: entry.baseUrl ?? defaultBaseUrlFor(chosen, entry.port)
715
+ baseUrl: entry.baseUrl ?? defaultBaseUrlFor(builtInProvider, entry.port)
640
716
  };
641
717
  }
642
718
  if (!entry.model) {
@@ -645,13 +721,14 @@ function getProviderConfig(config, provider) {
645
721
  }
646
722
  return {
647
723
  ...entry,
648
- baseUrl: entry.baseUrl ?? defaultBaseUrlFor(chosen, entry.port)
724
+ baseUrl: entry.baseUrl ?? defaultBaseUrlFor(builtInProvider, entry.port)
649
725
  };
650
726
  }
651
727
  function defaultBaseUrlFor(provider, port) {
652
728
  if (provider === "openrouter") return DEFAULT_BASE_URL;
653
729
  if (provider === "llmgateway") return DEFAULT_LLMGATEWAY_URL;
654
730
  if (provider === "zai") return DEFAULT_ZAI_URL;
731
+ if (provider === "sakana") return DEFAULT_SAKANA_URL;
655
732
  if (provider === "deepseek") return DEFAULT_DEEPSEEK_URL;
656
733
  const p = port ? port.toString() : void 0;
657
734
  switch (provider) {