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
@@ -2,7 +2,7 @@ import {
2
2
  I18nProvider,
3
3
  inkRenderOptions,
4
4
  useTranslation
5
- } from "./chunk-HZWU6IO3.js";
5
+ } from "./chunk-6W3SZCSP.js";
6
6
  import {
7
7
  disableBracketedPaste,
8
8
  enableBracketedPaste
@@ -28,6 +28,49 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
28
28
  var OTHER_VALUE = "__other__";
29
29
  var ENTER_ALTERNATE_SCREEN = "\x1B[?1049h\x1B[2J\x1B[H";
30
30
  var EXIT_ALTERNATE_SCREEN = "\x1B[?1049l";
31
+ function resumeModalInput(input = process.stdin) {
32
+ if (input.isTTY && typeof input.resume === "function") {
33
+ input.resume();
34
+ }
35
+ if (input.isTTY && typeof input.setRawMode === "function") {
36
+ input.setRawMode(true);
37
+ }
38
+ }
39
+ function createSkipAltScreenSelectFallback(options) {
40
+ if (options.choices.length === 0) {
41
+ return null;
42
+ }
43
+ let cursor = resolveInitialCursor("select", options.choices.length, options.initialIndex);
44
+ const selectAt = (index) => {
45
+ const choice = options.choices[index];
46
+ if (choice && !choice.disabled) {
47
+ options.onSelect(choice);
48
+ }
49
+ };
50
+ return (data) => {
51
+ const input = data.toString();
52
+ if (input === "\r" || input === "\n" || input === "\r\n") {
53
+ selectAt(cursor);
54
+ return;
55
+ }
56
+ if (input === "\x1B" || input === "\x1B" || input === "") {
57
+ options.onCancel();
58
+ return;
59
+ }
60
+ if (input === "\x1B[A") {
61
+ cursor = (cursor - 1 + options.choices.length) % options.choices.length;
62
+ return;
63
+ }
64
+ if (input === "\x1B[B") {
65
+ cursor = (cursor + 1) % options.choices.length;
66
+ return;
67
+ }
68
+ if (/^[1-9]$/.test(input)) {
69
+ const index = Number(input) - 1;
70
+ selectAt(index);
71
+ }
72
+ };
73
+ }
31
74
  function resolveInitialCursor(mode, optionsLength, initialIndex, defaultValue) {
32
75
  if (mode === "confirm") {
33
76
  return defaultValue === false ? 1 : 0;
@@ -49,24 +92,28 @@ function isModalCancelInput(char, key) {
49
92
  }
50
93
  return /^\x1b\[27(?:;\d+)?[u~]$/.test(char);
51
94
  }
52
- function unmountAndResolve(instance, value, resolve) {
95
+ function unmountAndResolve(instance, value, resolve, renderOptions = {}) {
53
96
  void (async () => {
54
97
  instance.unmount();
55
98
  try {
56
99
  await instance.waitUntilExit();
57
100
  } finally {
58
- cleanupModalRender(process.stdout);
101
+ cleanupModalRender(process.stdout, renderOptions);
59
102
  resolve(value);
60
103
  }
61
104
  })();
62
105
  }
63
- function prepareModalRender(output = process.stdout) {
106
+ function prepareModalRender(output = process.stdout, options = {}) {
64
107
  disableBracketedPaste(output);
65
108
  resetScrollRegion();
66
- output.write(ENTER_ALTERNATE_SCREEN);
109
+ if (!options.skipAltScreen) {
110
+ output.write(ENTER_ALTERNATE_SCREEN);
111
+ }
67
112
  }
68
- function cleanupModalRender(output = process.stdout) {
69
- output.write(EXIT_ALTERNATE_SCREEN);
113
+ function cleanupModalRender(output = process.stdout, options = {}) {
114
+ if (!options.skipAltScreen) {
115
+ output.write(EXIT_ALTERNATE_SCREEN);
116
+ }
70
117
  enableBracketedPaste(output);
71
118
  }
72
119
  function Modal(props) {
@@ -392,15 +439,58 @@ function Modal(props) {
392
439
  ] });
393
440
  }
394
441
  async function showModal(options) {
395
- const { title, logo, options: modalOptions, allowCustomInput, multiSelect, maxVisible, onToggle } = options;
442
+ const { title, logo, options: modalOptions, allowCustomInput, multiSelect, maxVisible, onToggle, skipAltScreen, initialIndex } = options;
396
443
  if (!process.stdout.isTTY) {
397
444
  return null;
398
445
  }
399
- prepareModalRender(process.stdout);
446
+ prepareModalRender(process.stdout, { skipAltScreen });
447
+ resumeModalInput(process.stdin);
400
448
  await new Promise((resolve) => setImmediate(resolve));
401
449
  return new Promise((resolve) => {
402
450
  let completed = false;
403
- const instance = render(
451
+ let fallbackInput = null;
452
+ let fallbackReadable = null;
453
+ let instance = null;
454
+ let hasPendingCompletion = false;
455
+ let pendingCompletion = null;
456
+ const resolveWithInstance = (currentInstance, value) => {
457
+ unmountAndResolve(currentInstance, value, resolve, { skipAltScreen });
458
+ };
459
+ const complete = (value) => {
460
+ if (completed) return;
461
+ completed = true;
462
+ if (fallbackInput) {
463
+ process.stdin.removeListener("data", fallbackInput);
464
+ }
465
+ if (fallbackReadable) {
466
+ process.stdin.removeListener("readable", fallbackReadable);
467
+ }
468
+ if (!instance) {
469
+ hasPendingCompletion = true;
470
+ pendingCompletion = value;
471
+ return;
472
+ }
473
+ resolveWithInstance(instance, value);
474
+ };
475
+ if (skipAltScreen && !allowCustomInput && !multiSelect) {
476
+ fallbackInput = createSkipAltScreenSelectFallback({
477
+ choices: modalOptions,
478
+ initialIndex,
479
+ onSelect: complete,
480
+ onCancel: () => complete(null)
481
+ });
482
+ if (fallbackInput) {
483
+ fallbackReadable = () => {
484
+ let chunk;
485
+ while ((chunk = process.stdin.read()) !== null) {
486
+ fallbackInput?.(chunk);
487
+ }
488
+ };
489
+ process.stdin.on("data", fallbackInput);
490
+ process.stdin.on("readable", fallbackReadable);
491
+ }
492
+ }
493
+ instance = render(
404
494
  /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
405
495
  Modal,
406
496
  {
@@ -408,18 +498,15 @@ async function showModal(options) {
408
498
  logo,
409
499
  options: modalOptions,
410
500
  allowCustomInput,
501
+ initialIndex,
411
502
  multiSelect,
412
503
  maxVisible,
413
504
  onToggle,
414
505
  onSelect: (option) => {
415
- if (completed) return;
416
- completed = true;
417
- unmountAndResolve(instance, option, resolve);
506
+ complete(option);
418
507
  },
419
508
  onCancel: () => {
420
- if (completed) return;
421
- completed = true;
422
- unmountAndResolve(instance, null, resolve);
509
+ complete(null);
423
510
  }
424
511
  }
425
512
  ) }) }),
@@ -430,6 +517,9 @@ async function showModal(options) {
430
517
  exitOnCtrlC: false
431
518
  })
432
519
  );
520
+ if (hasPendingCompletion) {
521
+ resolveWithInstance(instance, pendingCompletion);
522
+ }
433
523
  });
434
524
  }
435
525
  async function showConfirm(options) {
@@ -437,6 +527,7 @@ async function showConfirm(options) {
437
527
  return false;
438
528
  }
439
529
  prepareModalRender(process.stdout);
530
+ resumeModalInput(process.stdin);
440
531
  await new Promise((resolve) => setImmediate(resolve));
441
532
  return new Promise((resolve) => {
442
533
  let completed = false;
@@ -475,6 +566,7 @@ async function showInput(options) {
475
566
  return null;
476
567
  }
477
568
  prepareModalRender(process.stdout);
569
+ resumeModalInput(process.stdin);
478
570
  await new Promise((resolve) => setImmediate(resolve));
479
571
  return new Promise((resolve) => {
480
572
  let completed = false;
@@ -513,6 +605,7 @@ async function showPassword(options) {
513
605
  return null;
514
606
  }
515
607
  prepareModalRender(process.stdout);
608
+ resumeModalInput(process.stdin);
516
609
  await new Promise((resolve) => setImmediate(resolve));
517
610
  return new Promise((resolve) => {
518
611
  let completed = false;
@@ -1,38 +1,38 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
6
+ var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
12
 
13
- var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
13
+ var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
14
14
 
15
15
  // src/commands/language.ts
16
16
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
17
17
  async function language(ctx) {
18
- const currentLocale = _chunkSY2P3Z5Wcjs.getCurrentLocale.call(void 0, );
19
- const currentDisplayName = _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
18
+ const currentLocale = _chunkRJCZLFHEcjs.getCurrentLocale.call(void 0, );
19
+ const currentDisplayName = _chunkRJCZLFHEcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
20
20
  console.log(_chalk2.default.cyan(`
21
- \u{1F310} ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.title")}
21
+ \u{1F310} ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.language.title")}
22
22
  `));
23
- console.log(_chalk2.default.gray(`${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
23
+ console.log(_chalk2.default.gray(`${_chunkRJCZLFHEcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
24
24
  console.log();
25
- const options = _chunkSY2P3Z5Wcjs.SUPPORTED_LOCALES.map((locale) => ({
26
- label: locale === currentLocale ? `${_chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[locale]} (${_chunkSY2P3Z5Wcjs.t.call(void 0, "common.current")})` : _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[locale],
25
+ const options = _chunkRJCZLFHEcjs.SUPPORTED_LOCALES.map((locale) => ({
26
+ label: locale === currentLocale ? `${_chunkRJCZLFHEcjs.LANGUAGE_DISPLAY_NAMES[locale]} (${_chunkRJCZLFHEcjs.t.call(void 0, "common.current")})` : _chunkRJCZLFHEcjs.LANGUAGE_DISPLAY_NAMES[locale],
27
27
  value: locale
28
28
  }));
29
29
  await _optionalChain([ctx, 'access', _ => _.onBeforeModal, 'optionalCall', _2 => _2()]);
30
30
  const result = await (async () => {
31
31
  try {
32
- return await _chunkCK4HAHVYcjs.showModal.call(void 0, {
33
- title: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.selectPrompt"),
32
+ return await _chunkDMM2BKSVcjs.showModal.call(void 0, {
33
+ title: _chunkRJCZLFHEcjs.t.call(void 0, "commands.language.selectPrompt"),
34
34
  options,
35
- initialIndex: _chunkSY2P3Z5Wcjs.SUPPORTED_LOCALES.indexOf(currentLocale)
35
+ initialIndex: _chunkRJCZLFHEcjs.SUPPORTED_LOCALES.indexOf(currentLocale)
36
36
  });
37
37
  } finally {
38
38
  await _optionalChain([ctx, 'access', _3 => _3.onAfterModal, 'optionalCall', _4 => _4()]);
@@ -45,31 +45,31 @@ async function language(ctx) {
45
45
  const selected = result.value;
46
46
  if (selected === currentLocale) {
47
47
  console.log(_chalk2.default.gray(`
48
- ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.noChange")}`));
48
+ ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.language.noChange")}`));
49
49
  return null;
50
50
  }
51
- await _chunkSY2P3Z5Wcjs.changeLanguage.call(void 0, selected);
51
+ await _chunkRJCZLFHEcjs.changeLanguage.call(void 0, selected);
52
52
  ctx.config.ui = { ...ctx.config.ui, locale: selected };
53
- await _chunkX5P6QQOBcjs.saveConfig.call(void 0, ctx.config);
54
- const newDisplayName = _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[selected];
53
+ await _chunkCNQKIWIScjs.saveConfig.call(void 0, ctx.config);
54
+ const newDisplayName = _chunkRJCZLFHEcjs.LANGUAGE_DISPLAY_NAMES[selected];
55
55
  console.log(_chalk2.default.green(`
56
- \u2713 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.changed", { language: newDisplayName })}`));
56
+ \u2713 ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.language.changed", { language: newDisplayName })}`));
57
57
  console.log();
58
58
  return null;
59
59
  }
60
60
  async function languageInfo() {
61
- const currentLocale = _chunkSY2P3Z5Wcjs.getCurrentLocale.call(void 0, );
62
- const currentDisplayName = _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
61
+ const currentLocale = _chunkRJCZLFHEcjs.getCurrentLocale.call(void 0, );
62
+ const currentDisplayName = _chunkRJCZLFHEcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
63
63
  console.log(_chalk2.default.cyan(`
64
- \u{1F310} ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.title")}
64
+ \u{1F310} ${_chunkRJCZLFHEcjs.t.call(void 0, "commands.language.title")}
65
65
  `));
66
- console.log(_chalk2.default.gray(`${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
66
+ console.log(_chalk2.default.gray(`${_chunkRJCZLFHEcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
67
67
  console.log(_chalk2.default.gray(`Locale code: ${_chalk2.default.white(currentLocale)}`));
68
68
  console.log();
69
69
  console.log(_chalk2.default.gray("Supported languages:"));
70
- for (const locale of _chunkSY2P3Z5Wcjs.SUPPORTED_LOCALES) {
70
+ for (const locale of _chunkRJCZLFHEcjs.SUPPORTED_LOCALES) {
71
71
  const marker = locale === currentLocale ? _chalk2.default.green("\u25CF") : _chalk2.default.gray("\u25CB");
72
- console.log(` ${marker} ${_chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[locale]}`);
72
+ console.log(` ${marker} ${_chunkRJCZLFHEcjs.LANGUAGE_DISPLAY_NAMES[locale]}`);
73
73
  }
74
74
  console.log();
75
75
  return null;
@@ -7,16 +7,16 @@ import {
7
7
  } from "./chunk-7DJJGKM6.js";
8
8
  import {
9
9
  package_default
10
- } from "./chunk-JB3JCYBJ.js";
10
+ } from "./chunk-NOWCRKP2.js";
11
11
  import {
12
12
  showModal
13
- } from "./chunk-NZ3ZWLUW.js";
13
+ } from "./chunk-LOSXLH7P.js";
14
14
  import {
15
15
  loadConfig
16
- } from "./chunk-IEPLQ47J.js";
16
+ } from "./chunk-CM24K6ZT.js";
17
17
  import {
18
18
  AUTH_CONFIG
19
- } from "./chunk-SHRLFX6F.js";
19
+ } from "./chunk-PG2JIU5M.js";
20
20
 
21
21
  // src/auth/AuthClient.ts
22
22
  var DEFAULT_TIMEOUT = 1e4;
@@ -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) {
@@ -175,11 +178,11 @@ function getAuthClient(config) {
175
178
 
176
179
  // src/auth/ensureAuth.ts
177
180
  import chalk from "chalk";
178
- import { spawn } from "child_process";
181
+ import { spawn, spawnSync } from "child_process";
179
182
  import { platform } from "os";
180
183
  async function getGitCommit() {
181
184
  if (true) {
182
- return "da69f79";
185
+ return "1d7b7b1";
183
186
  }
184
187
  const match = package_default.version.match(/-alpha\.([0-9a-f]{7,40})$/i);
185
188
  if (match?.[1]) {
@@ -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(chalk.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 (config.auth?.token) {
249
266
  if (isTokenExpiredLocally(config)) {
250
267
  return await promptLogin(config);
@@ -253,6 +270,27 @@ async function ensureAuthenticated(config) {
253
270
  }
254
271
  return await promptLogin(config);
255
272
  }
273
+ function resolveBareModeApiKey(config) {
274
+ const envToken = process.env.AUTOHAND_API_KEY?.trim();
275
+ if (envToken) {
276
+ return envToken;
277
+ }
278
+ const helper = config.auth?.apiKeyHelper?.trim();
279
+ if (!helper) {
280
+ return null;
281
+ }
282
+ const result = spawnSync(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
295
  if (!config.auth?.token) {
258
296
  return false;
@@ -322,7 +360,7 @@ async function promptLogin(config) {
322
360
  }
323
361
  }
324
362
  }
325
- const { login } = await import("./login-Q7DZKAX4.js");
363
+ const { login } = await import("./login-XPOVFSWN.js");
326
364
  await login({ config });
327
365
  const refreshed = await loadConfig(config.configPath);
328
366
  if (!refreshed.auth?.token) {
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  AgentRegistry
3
- } from "./chunk-575PXZX7.js";
3
+ } from "./chunk-TJFKA6A7.js";
4
4
  import {
5
5
  loadConfig
6
- } from "./chunk-IEPLQ47J.js";
6
+ } from "./chunk-CM24K6ZT.js";
7
7
  import {
8
8
  t
9
- } from "./chunk-LEZEWKPA.js";
9
+ } from "./chunk-SJQU2ZFR.js";
10
10
 
11
11
  // src/commands/agents.ts
12
12
  import chalk from "chalk";
@@ -4,21 +4,21 @@ import {
4
4
  import {
5
5
  I18nProvider,
6
6
  inkRenderOptions
7
- } from "./chunk-HZWU6IO3.js";
7
+ } from "./chunk-6W3SZCSP.js";
8
8
  import {
9
9
  loadConfig,
10
10
  saveConfig
11
- } from "./chunk-IEPLQ47J.js";
11
+ } from "./chunk-CM24K6ZT.js";
12
12
  import {
13
13
  ThemeProvider,
14
14
  useTheme
15
15
  } from "./chunk-NBGOIFKP.js";
16
16
  import {
17
17
  PROJECT_DIR_NAME
18
- } from "./chunk-SHRLFX6F.js";
18
+ } from "./chunk-PG2JIU5M.js";
19
19
  import {
20
20
  t
21
- } from "./chunk-LEZEWKPA.js";
21
+ } from "./chunk-SJQU2ZFR.js";
22
22
 
23
23
  // src/commands/mcp.ts
24
24
  import chalk from "chalk";
@@ -6,13 +6,13 @@
6
6
 
7
7
 
8
8
 
9
- var _chunkOV3T5MUHcjs = require('./chunk-OV3T5MUH.cjs');
9
+ var _chunkUKBFNBDOcjs = require('./chunk-UKBFNBDO.cjs');
10
10
 
11
11
 
12
- var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
12
+ var _chunkDMM2BKSVcjs = require('./chunk-DMM2BKSV.cjs');
13
13
 
14
14
 
15
- var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
15
+ var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
16
16
 
17
17
  // src/commands/chrome.ts
18
18
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -37,7 +37,7 @@ async function chrome(ctx, args = []) {
37
37
  const chromeConfig = _nullishCoalesce(ctx.config.chrome, () => ( {}));
38
38
  chromeConfig.enabledByDefault = false;
39
39
  ctx.config.chrome = chromeConfig;
40
- await _chunkX5P6QQOBcjs.saveConfig.call(void 0, ctx.config);
40
+ await _chunkCNQKIWIScjs.saveConfig.call(void 0, ctx.config);
41
41
  return `${_chalk2.default.green("\u2713")} Browser bridge disconnected and disabled.`;
42
42
  }
43
43
  const currentSession = ctx.sessionManager.getCurrentSession();
@@ -46,14 +46,14 @@ async function chrome(ctx, args = []) {
46
46
  return "No active session. Start a task first, then run /chrome.";
47
47
  }
48
48
  const extensionId = _optionalChain([ctx, 'access', _10 => _10.config, 'optionalAccess', _11 => _11.chrome, 'optionalAccess', _12 => _12.extensionId]);
49
- const nativeHostInstalled = await _fsextra2.default.pathExists(_chunkOV3T5MUHcjs.getManifestTarget.call(void 0, "chrome").manifestPath);
49
+ const nativeHostInstalled = await _fsextra2.default.pathExists(_chunkUKBFNBDOcjs.getManifestTarget.call(void 0, "chrome").manifestPath);
50
50
  let extensionDetected = false;
51
51
  if (extensionId) {
52
- extensionDetected = await _chunkOV3T5MUHcjs.detectExtensionProfile.call(void 0, extensionId) !== null;
52
+ extensionDetected = await _chunkUKBFNBDOcjs.detectExtensionProfile.call(void 0, extensionId) !== null;
53
53
  }
54
- const nativeHostReady = _chunkOV3T5MUHcjs.ensureNativeHostInstalled.call(void 0, { extensionId }).catch(() => {
54
+ const nativeHostReady = _chunkUKBFNBDOcjs.ensureNativeHostInstalled.call(void 0, { extensionId }).catch(() => {
55
55
  });
56
- const activeHandoff = await _chunkOV3T5MUHcjs.hasActiveHandoff.call(void 0, );
56
+ const activeHandoff = await _chunkUKBFNBDOcjs.hasActiveHandoff.call(void 0, );
57
57
  let connectionLabel;
58
58
  if (activeHandoff) {
59
59
  connectionLabel = _chalk2.default.green("Handoff pending");
@@ -100,14 +100,14 @@ async function chrome(ctx, args = []) {
100
100
  }
101
101
  selected = await withModalPause(
102
102
  ctx,
103
- () => _chunkCK4HAHVYcjs.showModal.call(void 0, { title, options, initialIndex: isReshow ? 3 : void 0 })
103
+ () => _chunkDMM2BKSVcjs.showModal.call(void 0, { title, options, initialIndex: isReshow ? 3 : void 0 })
104
104
  );
105
105
  if (!selected) return null;
106
106
  if (selected.value === "toggle" && ctx.config) {
107
107
  const chromeConfig = _nullishCoalesce(ctx.config.chrome, () => ( {}));
108
108
  chromeConfig.enabledByDefault = !chromeConfig.enabledByDefault;
109
109
  ctx.config.chrome = chromeConfig;
110
- await _chunkX5P6QQOBcjs.saveConfig.call(void 0, ctx.config);
110
+ await _chunkCNQKIWIScjs.saveConfig.call(void 0, ctx.config);
111
111
  isReshow = true;
112
112
  continue;
113
113
  }
@@ -116,14 +116,14 @@ async function chrome(ctx, args = []) {
116
116
  switch (selected.value) {
117
117
  case "open": {
118
118
  await nativeHostReady;
119
- await _chunkOV3T5MUHcjs.createBrowserHandoff.call(void 0, {
119
+ await _chunkUKBFNBDOcjs.createBrowserHandoff.call(void 0, {
120
120
  sessionId,
121
121
  workspaceRoot: ctx.workspaceRoot,
122
122
  extensionId,
123
123
  installUrl: _optionalChain([ctx, 'access', _16 => _16.config, 'optionalAccess', _17 => _17.chrome, 'optionalAccess', _18 => _18.installUrl])
124
124
  });
125
- await _chunkOV3T5MUHcjs.openChromeContinuation.call(void 0,
126
- _chunkOV3T5MUHcjs.buildChromeOpenUrl.call(void 0, { installUrl: _optionalChain([ctx, 'access', _19 => _19.config, 'optionalAccess', _20 => _20.chrome, 'optionalAccess', _21 => _21.installUrl]) }),
125
+ await _chunkUKBFNBDOcjs.openChromeContinuation.call(void 0,
126
+ _chunkUKBFNBDOcjs.buildChromeOpenUrl.call(void 0, { installUrl: _optionalChain([ctx, 'access', _19 => _19.config, 'optionalAccess', _20 => _20.chrome, 'optionalAccess', _21 => _21.installUrl]) }),
127
127
  _nullishCoalesce(_optionalChain([ctx, 'access', _22 => _22.config, 'optionalAccess', _23 => _23.chrome, 'optionalAccess', _24 => _24.browser]), () => ( "auto")),
128
128
  { userDataDir: _optionalChain([ctx, 'access', _25 => _25.config, 'optionalAccess', _26 => _26.chrome, 'optionalAccess', _27 => _27.userDataDir]), profileDirectory: _optionalChain([ctx, 'access', _28 => _28.config, 'optionalAccess', _29 => _29.chrome, 'optionalAccess', _30 => _30.profileDirectory]) }
129
129
  );
@@ -3,13 +3,13 @@ import {
3
3
  showInput,
4
4
  showModal,
5
5
  showPassword
6
- } from "./chunk-NZ3ZWLUW.js";
6
+ } from "./chunk-LOSXLH7P.js";
7
7
  import {
8
8
  saveConfig
9
- } from "./chunk-IEPLQ47J.js";
9
+ } from "./chunk-CM24K6ZT.js";
10
10
  import {
11
11
  t
12
- } from "./chunk-LEZEWKPA.js";
12
+ } from "./chunk-SJQU2ZFR.js";
13
13
 
14
14
  // src/commands/settings.ts
15
15
  import chalk from "chalk";
@@ -33,6 +33,30 @@ var SETTING_KEY_ALIASES = {
33
33
  ui_activity_verbs: "ui.activityVerbsEnabled",
34
34
  ui_verbs_activity: "ui.activityVerbsEnabled"
35
35
  };
36
+ var CONFIG_PROVIDER_NAMES = [
37
+ "openrouter",
38
+ "ollama",
39
+ "llamacpp",
40
+ "openai",
41
+ "mlx",
42
+ "llmgateway",
43
+ "azure",
44
+ "zai",
45
+ "vertexai",
46
+ "xai",
47
+ "cerebras",
48
+ "nvidia",
49
+ "deepseek",
50
+ "bedrock"
51
+ ];
52
+ var PROVIDER_CONFIG_FIELD_ALIASES = {
53
+ apiKey: "apiKey",
54
+ api_key: "apiKey",
55
+ apikey: "apiKey",
56
+ baseUrl: "baseUrl",
57
+ base_url: "baseUrl",
58
+ model: "model"
59
+ };
36
60
  var SETTING_CATEGORIES = [
37
61
  { id: "ui", labelKey: "commands.settings.categories.ui" },
38
62
  { id: "agent", labelKey: "commands.settings.categories.agent" },
@@ -57,10 +81,12 @@ var SETTINGS_REGISTRY = [
57
81
  { key: "ui.promptSuggestions", labelKey: "commands.settings.ui.promptSuggestions", descriptionKey: "commands.settings.ui.promptSuggestionsDesc", category: "ui", type: "boolean", defaultValue: true },
58
82
  { key: "ui.activityVerbsEnabled", labelKey: "commands.settings.ui.activityVerbsEnabled", descriptionKey: "commands.settings.ui.activityVerbsEnabledDesc", category: "ui", type: "boolean", defaultValue: true },
59
83
  { key: "ui.activitySymbol", labelKey: "commands.settings.ui.activitySymbol", descriptionKey: "commands.settings.ui.activitySymbolDesc", category: "ui", type: "string", defaultValue: "\u2733" },
84
+ { key: "ui.statusLine", labelKey: "commands.settings.ui.statusLine", descriptionKey: "commands.settings.ui.statusLineDesc", category: "ui", type: "string", redirect: "/statusline" },
60
85
  { key: "ui.updateCheckInterval", labelKey: "commands.settings.ui.updateCheckInterval", descriptionKey: "commands.settings.ui.updateCheckIntervalDesc", category: "ui", type: "number", defaultValue: 24 },
61
86
  // Agent Behavior
62
87
  { key: "agent.maxIterations", labelKey: "commands.settings.agent.maxIterations", descriptionKey: "commands.settings.agent.maxIterationsDesc", category: "agent", type: "number", defaultValue: 100 },
63
88
  { key: "agent.enableRequestQueue", labelKey: "commands.settings.agent.enableRequestQueue", descriptionKey: "commands.settings.agent.enableRequestQueueDesc", category: "agent", type: "boolean", defaultValue: true },
89
+ { key: "agent.idleLogoutEnabled", labelKey: "commands.settings.agent.idleLogoutEnabled", descriptionKey: "commands.settings.agent.idleLogoutEnabledDesc", category: "agent", type: "boolean", defaultValue: true },
64
90
  { key: "agent.sessionRetryLimit", labelKey: "commands.settings.agent.sessionRetryLimit", descriptionKey: "commands.settings.agent.sessionRetryLimitDesc", category: "agent", type: "number", defaultValue: 3 },
65
91
  { key: "agent.sessionRetryDelay", labelKey: "commands.settings.agent.sessionRetryDelay", descriptionKey: "commands.settings.agent.sessionRetryDelayDesc", category: "agent", type: "number", defaultValue: 1e3 },
66
92
  { key: "agent.debug", labelKey: "commands.settings.agent.debug", descriptionKey: "commands.settings.agent.debugDesc", category: "agent", type: "boolean", defaultValue: false },
@@ -119,6 +145,38 @@ function normalizeSettingKey(input) {
119
145
  }
120
146
  return trimmed;
121
147
  }
148
+ function normalizeProviderName(input) {
149
+ const normalized = input.trim().toLowerCase();
150
+ if (normalized === "vertex") {
151
+ return "vertexai";
152
+ }
153
+ if (CONFIG_PROVIDER_NAMES.includes(normalized)) {
154
+ return normalized;
155
+ }
156
+ return null;
157
+ }
158
+ function normalizeProviderConfigKey(input) {
159
+ const [providerInput, fieldInput, ...extra] = input.trim().replace(/\s+/g, ".").split(".");
160
+ if (providerInput && fieldInput && extra.length === 0) {
161
+ const provider = normalizeProviderName(providerInput);
162
+ const field = PROVIDER_CONFIG_FIELD_ALIASES[fieldInput];
163
+ if (provider && field) {
164
+ return { provider, field };
165
+ }
166
+ }
167
+ const underscoreInput = input.trim();
168
+ for (const providerName of CONFIG_PROVIDER_NAMES) {
169
+ const prefix = `${providerName}_`;
170
+ if (!underscoreInput.startsWith(prefix)) {
171
+ continue;
172
+ }
173
+ const field = PROVIDER_CONFIG_FIELD_ALIASES[underscoreInput.slice(prefix.length)];
174
+ if (field) {
175
+ return { provider: providerName, field };
176
+ }
177
+ }
178
+ return null;
179
+ }
122
180
  function parseBooleanSetting(value) {
123
181
  const normalized = value.trim().toLowerCase();
124
182
  if (["true", "1", "yes", "y", "on"].includes(normalized)) {
@@ -154,6 +212,25 @@ function parseSettingValue(setting, rawValue) {
154
212
  }
155
213
  function setConfigSetting(config, keyInput, rawValue) {
156
214
  const key = normalizeSettingKey(keyInput);
215
+ if (key === "provider") {
216
+ const provider = normalizeProviderName(rawValue);
217
+ if (!provider) {
218
+ throw new Error(`Unknown provider "${rawValue}". Use /settings to browse provider setup.`);
219
+ }
220
+ config.provider = provider;
221
+ return { key: "provider", value: provider };
222
+ }
223
+ const providerConfigKey = normalizeProviderConfigKey(key);
224
+ if (providerConfigKey) {
225
+ const current = config[providerConfigKey.provider];
226
+ const providerConfig = current && typeof current === "object" ? current : {};
227
+ setNestedValue(providerConfig, providerConfigKey.field, rawValue);
228
+ setNestedValue(config, providerConfigKey.provider, providerConfig);
229
+ return {
230
+ key: `${providerConfigKey.provider}.${providerConfigKey.field}`,
231
+ value: rawValue
232
+ };
233
+ }
157
234
  const setting = SETTINGS_REGISTRY.find((s) => s.key === key);
158
235
  if (!setting) {
159
236
  throw new Error(`Unknown setting "${keyInput}". Use /settings to browse configurable settings.`);
@@ -173,6 +250,10 @@ function parseConfigSetArgs(parts) {
173
250
  const key = parts.slice(0, -1).join(" ");
174
251
  return { key, value };
175
252
  }
253
+ function formatConfigSetResult(result) {
254
+ const displayValue = result.key.toLowerCase().endsWith("apikey") ? "****" : String(result.value);
255
+ return `Set ${result.key} = ${displayValue}`;
256
+ }
176
257
  function getSettingsForCategory(category) {
177
258
  return SETTINGS_REGISTRY.filter((s) => s.category === category);
178
259
  }
@@ -338,6 +419,7 @@ export {
338
419
  parseSettingValue,
339
420
  setConfigSetting,
340
421
  parseConfigSetArgs,
422
+ formatConfigSetResult,
341
423
  getSettingsForCategory,
342
424
  formatSettingValue,
343
425
  editSetting,