autohand-cli 0.8.0 → 0.8.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 (271) hide show
  1. package/README.md +97 -2
  2. package/dist/{ImportWizard-IWVPRKFF.cjs → ImportWizard-35YBJ4AM.cjs} +8 -8
  3. package/dist/{ImportWizard-KASGQPUY.js → ImportWizard-XH7CINCH.js} +3 -3
  4. package/dist/LearnAdvisor-A4Q5PPBI.js +9 -0
  5. package/dist/LearnAdvisor-GASQD7HT.cjs +9 -0
  6. package/dist/{PermissionManager-K7UWSNB6.js → PermissionManager-ATUV34LQ.js} +1 -1
  7. package/dist/{PermissionManager-2GO5PQ6M.cjs → PermissionManager-KMN53FJP.cjs} +2 -2
  8. package/dist/{ProviderFactory-S3LWTQQC.js → ProviderFactory-MR5B23QJ.js} +1 -1
  9. package/dist/ProviderFactory-VFGCJJX6.cjs +9 -0
  10. package/dist/{SkillsRegistry-GDEGFP6O.cjs → SkillsRegistry-KPQFTRIT.cjs} +2 -2
  11. package/dist/{SkillsRegistry-SI5RUHQ4.js → SkillsRegistry-XJSKPDF2.js} +1 -1
  12. package/dist/{SubAgent-I75HELJG.js → SubAgent-NYH6GWQ3.js} +1 -1
  13. package/dist/{SubAgent-K3QP6WHC.cjs → SubAgent-PZKBDUBA.cjs} +2 -2
  14. package/dist/{about-B2AGTV6N.js → about-HHTF2YFL.js} +3 -3
  15. package/dist/about-JGRVNNQC.cjs +12 -0
  16. package/dist/{actionExecutor-YRUJNB5G.cjs → actionExecutor-U6IBN2TU.cjs} +7 -7
  17. package/dist/{actionExecutor-6XCVL2SJ.js → actionExecutor-XT5FW3W6.js} +6 -6
  18. package/dist/{add-dir-7FBQ5IFV.js → add-dir-247K3XRY.js} +2 -2
  19. package/dist/add-dir-GS4DXKKH.cjs +10 -0
  20. package/dist/agents-R6ZEFTVR.cjs +12 -0
  21. package/dist/{agents-FENGUSJD.js → agents-WJPQWQF2.js} +2 -2
  22. package/dist/agents-new-HKVEIBDJ.js +14 -0
  23. package/dist/agents-new-X6GTHIO6.cjs +14 -0
  24. package/dist/autoSkill-6TGBTEQD.js +20 -0
  25. package/dist/autoSkill-H4T6VVDA.cjs +20 -0
  26. package/dist/{automode-O7G3DUYN.js → automode-BC6NVECO.js} +2 -2
  27. package/dist/automode-WN2RSOGW.cjs +10 -0
  28. package/dist/{chunk-MUBW5UDH.cjs → chunk-245KJE5Y.cjs} +4 -4
  29. package/dist/{chunk-GCHELXLO.js → chunk-33RSHBDH.js} +2 -2
  30. package/dist/{chunk-Q5RN7RXC.js → chunk-34M3HWLR.js} +2 -2
  31. package/dist/{chunk-XMNHZRUB.cjs → chunk-3K2ESU53.cjs} +2 -2
  32. package/dist/{chunk-OI7OIGNB.cjs → chunk-3L53OA4E.cjs} +10 -10
  33. package/dist/{chunk-2JYIR3EC.cjs → chunk-3OTU3RS3.cjs} +435 -4
  34. package/dist/{chunk-MVWOQBCC.cjs → chunk-3PCTTUNW.cjs} +11 -11
  35. package/dist/{chunk-JJWCQLOU.cjs → chunk-47CKWKEX.cjs} +2 -2
  36. package/dist/{chunk-ITB3FS72.js → chunk-4PKF7WPD.js} +3 -3
  37. package/dist/{chunk-2RIAPTET.js → chunk-5P2NXKP3.js} +64 -54
  38. package/dist/{chunk-5YJG6H6P.cjs → chunk-6HYLHBQG.cjs} +8 -8
  39. package/dist/{chunk-SO3QQJAZ.js → chunk-6RF7UKUS.js} +11 -4
  40. package/dist/{chunk-VNQ5GL34.js → chunk-6ZCULLCA.js} +1 -1
  41. package/dist/{chunk-WJDPVW7T.js → chunk-72FKPBT5.js} +3 -3
  42. package/dist/{chunk-RVUQKMXX.cjs → chunk-7BTSG4ME.cjs} +5067 -2204
  43. package/dist/{chunk-YYB42DCU.cjs → chunk-A4IJHHV7.cjs} +10 -4
  44. package/dist/{chunk-IUMJYXBX.cjs → chunk-AEJH23FO.cjs} +6 -6
  45. package/dist/{chunk-HFMLWH7B.js → chunk-APIXPPMT.js} +5067 -2204
  46. package/dist/chunk-AS6RTLN7.cjs +203 -0
  47. package/dist/{chunk-ZSE42BRE.js → chunk-AYS2ASM7.js} +1 -1
  48. package/dist/{chunk-IWVQ2EW3.js → chunk-AYSFIUFW.js} +3 -3
  49. package/dist/{chunk-UJTCTTUF.cjs → chunk-BWN2CLLM.cjs} +30 -3
  50. package/dist/{chunk-EEGK5DYE.cjs → chunk-C5IJIM2V.cjs} +20 -14
  51. package/dist/{chunk-OBLIITWJ.js → chunk-CAMZTXV6.js} +2 -2
  52. package/dist/{chunk-5DDDUUBM.cjs → chunk-CDBPBM2K.cjs} +3 -3
  53. package/dist/{chunk-XWASJ2QL.js → chunk-CWMZKFTT.js} +3 -3
  54. package/dist/{chunk-UBS46QL3.cjs → chunk-CZXGCVTR.cjs} +2 -2
  55. package/dist/{chunk-AFN7LH5N.cjs → chunk-DJDE4DTT.cjs} +17 -17
  56. package/dist/{chunk-LL3PQ2U6.js → chunk-DRE2RXBZ.js} +33 -5
  57. package/dist/{chunk-QT2VZNFA.js → chunk-DSPQEHDT.js} +2 -2
  58. package/dist/{chunk-BT35E7NE.cjs → chunk-DVUHHH3B.cjs} +4 -4
  59. package/dist/{chunk-MHSDHPC4.cjs → chunk-DVZOENQ7.cjs} +2 -2
  60. package/dist/{chunk-Y2SXUCNJ.js → chunk-EGMZDTSL.js} +1 -1
  61. package/dist/{chunk-2ELK5DMH.js → chunk-FKSDEWDH.js} +3 -3
  62. package/dist/{chunk-YKS55CMT.js → chunk-FW774QXH.js} +19 -3
  63. package/dist/{chunk-T63AMO6H.js → chunk-G27PQQFD.js} +1 -1
  64. package/dist/{chunk-H6ZGZEBG.cjs → chunk-G3V4SFET.cjs} +9 -9
  65. package/dist/{chunk-CWALFEGU.js → chunk-G4CAKI3V.js} +1 -1
  66. package/dist/{chunk-FYZ67R4R.js → chunk-GJH7XMSK.js} +14 -0
  67. package/dist/{chunk-EIU7K7CM.js → chunk-H5SWOLG6.js} +3 -3
  68. package/dist/{chunk-OUHQZFN4.js → chunk-HBXAA3XB.js} +6 -1
  69. package/dist/{chunk-E23CMMNJ.js → chunk-HIVRCQS2.js} +8 -2
  70. package/dist/{chunk-TFSRRZWP.cjs → chunk-HLHTG5ZU.cjs} +15 -1
  71. package/dist/{chunk-WFUUXADU.js → chunk-HLQV64Y5.js} +170 -4
  72. package/dist/{chunk-7QEE6SW6.cjs → chunk-HOAHWIQ5.cjs} +26 -26
  73. package/dist/{chunk-63WXWFDI.cjs → chunk-HVKOZ2VP.cjs} +11 -11
  74. package/dist/{chunk-LQ4LQQG6.cjs → chunk-HXGBSJL5.cjs} +2 -2
  75. package/dist/chunk-I5IW3T2Y.js +310 -0
  76. package/dist/{chunk-D3YCFT5O.cjs → chunk-IFFXSTOM.cjs} +3 -3
  77. package/dist/{chunk-OPR34VHL.cjs → chunk-IKGWDOGU.cjs} +174 -8
  78. package/dist/{chunk-55B6SBHK.js → chunk-J4Q7XR3G.js} +3 -3
  79. package/dist/{chunk-LXDOQTXQ.cjs → chunk-J6QET7EF.cjs} +24 -4
  80. package/dist/{chunk-5EIEWVYX.js → chunk-JCLYQ2JC.js} +2 -2
  81. package/dist/{chunk-GHSBZ3YB.js → chunk-JX3DFKBI.js} +2 -2
  82. package/dist/{chunk-SALLHB2I.js → chunk-JYTDYJVW.js} +1 -1
  83. package/dist/{chunk-G7SZIOHF.js → chunk-KPELYZ6L.js} +2 -2
  84. package/dist/{chunk-S6BDWWUG.cjs → chunk-KWXVKLQ5.cjs} +5 -5
  85. package/dist/{chunk-GO3N7LRW.cjs → chunk-L3WAH3EM.cjs} +6 -6
  86. package/dist/{chunk-MGMXR67S.cjs → chunk-LA7H35XM.cjs} +9 -9
  87. package/dist/{chunk-XUDSXGGV.cjs → chunk-LENHP55G.cjs} +19 -3
  88. package/dist/{chunk-WGTJOIB7.cjs → chunk-LNMYK2F5.cjs} +10 -10
  89. package/dist/{chunk-JMFDD7IZ.js → chunk-LWUJFGOZ.js} +2 -2
  90. package/dist/chunk-MAKMSQMQ.cjs +504 -0
  91. package/dist/chunk-MSED7RH2.cjs +267 -0
  92. package/dist/{chunk-RO46YAPI.js → chunk-MYISNQH4.js} +1 -1
  93. package/dist/{chunk-Q2VYSHWU.js → chunk-N23UAW4I.js} +1 -1
  94. package/dist/{chunk-DH7DKCUL.js → chunk-NDMIPTV4.js} +1 -1
  95. package/dist/{chunk-YDCDGTK6.cjs → chunk-NNPAM4HC.cjs} +5 -5
  96. package/dist/{chunk-SRQW3B6J.cjs → chunk-O4IF4NJT.cjs} +24 -17
  97. package/dist/{chunk-SHFA46CS.cjs → chunk-OGV4WJ5L.cjs} +8 -8
  98. package/dist/chunk-OHUZKDGX.js +348 -0
  99. package/dist/{chunk-AMT2UZBI.cjs → chunk-OLSBBZW6.cjs} +5 -5
  100. package/dist/{chunk-SIHRD34Z.js → chunk-OOKY3HPZ.js} +8 -2
  101. package/dist/{chunk-WTNBX2JO.js → chunk-P47WPOXN.js} +30 -3
  102. package/dist/{chunk-3WCOFXQS.cjs → chunk-PRRCJFU3.cjs} +23 -23
  103. package/dist/{chunk-5GGX6WNY.cjs → chunk-Q7XSCYND.cjs} +11 -11
  104. package/dist/{chunk-EF4LKUQY.js → chunk-QNGEW5TC.js} +1 -1
  105. package/dist/chunk-QOXPOR5D.js +267 -0
  106. package/dist/chunk-R33VKSH5.cjs +348 -0
  107. package/dist/{chunk-CVVEYUFR.js → chunk-RO6WYEWH.js} +23 -3
  108. package/dist/{chunk-TWEKBHUO.js → chunk-SCXX4LW5.js} +3 -3
  109. package/dist/{chunk-YS34SVY5.js → chunk-SKV2F3NM.js} +1 -1
  110. package/dist/{chunk-MHLE6AVN.cjs → chunk-SKYG33B2.cjs} +3 -3
  111. package/dist/{chunk-EPNYD4NV.js → chunk-SLQAYV3W.js} +1 -1
  112. package/dist/{chunk-DLG43ZJ7.cjs → chunk-SYVYLZZF.cjs} +2 -2
  113. package/dist/{chunk-QUFAULH7.js → chunk-T73IDKDF.js} +2 -1
  114. package/dist/chunk-TBEGGJNC.cjs +310 -0
  115. package/dist/{chunk-TQHOVHRS.js → chunk-TNZRZQ7Q.js} +1 -1
  116. package/dist/{chunk-D6VG7B5X.cjs → chunk-TXSDBGKX.cjs} +2 -1
  117. package/dist/{chunk-LVE6Z5SL.cjs → chunk-U46VYPLR.cjs} +7 -7
  118. package/dist/{chunk-F23EVNJU.js → chunk-WHE2SWHU.js} +1 -1
  119. package/dist/{chunk-CDMGQR4L.cjs → chunk-WM5PAOTQ.cjs} +38 -10
  120. package/dist/{chunk-PEC45WYS.js → chunk-X2MSVKDV.js} +1 -1
  121. package/dist/chunk-X3WS5LDG.js +504 -0
  122. package/dist/{chunk-Q5RX3XGB.cjs → chunk-X5VSP65C.cjs} +2 -2
  123. package/dist/{chunk-HA7OAVOB.cjs → chunk-X5YJ34FZ.cjs} +12 -12
  124. package/dist/{chunk-TERCG25S.js → chunk-XRZEUWKF.js} +1 -1
  125. package/dist/{chunk-VJYPP6PP.cjs → chunk-XTB6VJVQ.cjs} +6 -6
  126. package/dist/{chunk-UGTFKUW4.js → chunk-XX2ZO7DS.js} +2 -2
  127. package/dist/{chunk-UTI6ZQEY.cjs → chunk-Y72HH2TF.cjs} +9 -9
  128. package/dist/{chunk-PUOE5BCN.js → chunk-YGN4CQIP.js} +1 -1
  129. package/dist/{chunk-5OBNULPU.js → chunk-YZXUDM5X.js} +1 -1
  130. package/dist/{chunk-AHD5JJ6F.cjs → chunk-Z36XBUMX.cjs} +6 -1
  131. package/dist/{chunk-4HKTYHNL.cjs → chunk-ZQE72E6W.cjs} +14 -14
  132. package/dist/{chunk-7GDVDSNI.js → chunk-ZVY2XD6T.js} +435 -4
  133. package/dist/{chunk-FPAE6ORV.cjs → chunk-ZYQMLKOK.cjs} +6 -6
  134. package/dist/clear-UO4MNWZW.cjs +12 -0
  135. package/dist/{clear-J7XS6T5W.js → clear-ZJ5NYP6E.js} +2 -2
  136. package/dist/communityInstaller-6KCFN7YZ.js +19 -0
  137. package/dist/communityInstaller-PVSOFDZD.cjs +19 -0
  138. package/dist/{completion-XR6ZONJQ.js → completion-MMF2PN2H.js} +4 -4
  139. package/dist/completion-UI5WKHXI.cjs +14 -0
  140. package/dist/config-E7RINK4R.cjs +18 -0
  141. package/dist/{config-2TB3A55J.js → config-ZN66VXPS.js} +1 -1
  142. package/dist/export-N4XIVDSL.cjs +12 -0
  143. package/dist/export-W22L4D5C.js +12 -0
  144. package/dist/feedback-DR6ADSNE.cjs +15 -0
  145. package/dist/feedback-FEEAP4QW.js +15 -0
  146. package/dist/{help-I5GRCA3S.js → help-2BLR7L43.js} +2 -2
  147. package/dist/help-AQHGTS7P.cjs +12 -0
  148. package/dist/{history-OCHJBJW7.js → history-5FZ3M2AK.js} +2 -2
  149. package/dist/history-NIUDRMKA.cjs +14 -0
  150. package/dist/hooks-2EY4IPKV.js +13 -0
  151. package/dist/hooks-LJVORRIG.cjs +13 -0
  152. package/dist/i18n-ARDG2SMC.cjs +33 -0
  153. package/dist/{i18n-KHBXUALK.js → i18n-K7QOWIBH.js} +1 -1
  154. package/dist/ide-GFW6IJHD.js +12 -0
  155. package/dist/ide-N2ZNSSB3.cjs +12 -0
  156. package/dist/{import-KRVVYJCZ.js → import-DFVN3KNZ.js} +2 -2
  157. package/dist/{import-PQJPNXA4.cjs → import-QEME3E4T.cjs} +3 -3
  158. package/dist/{import-EAAX5HJR.js → import-UXM3VK7B.js} +3 -3
  159. package/dist/import-ZS6DPGU5.cjs +10 -0
  160. package/dist/index.cjs +5451 -2274
  161. package/dist/index.js +5345 -2168
  162. package/dist/init-PY75HA3S.cjs +10 -0
  163. package/dist/{init-6K3NRDOM.js → init-QNMWLAVY.js} +2 -2
  164. package/dist/language-5UE4G2BT.cjs +18 -0
  165. package/dist/{language-Y6ZC7LET.js → language-UXMHEZUJ.js} +5 -5
  166. package/dist/learn-HJ3FLNZC.cjs +20 -0
  167. package/dist/learn-MVYS3RU5.js +20 -0
  168. package/dist/{login-DL3377MD.js → login-DSE7H63A.js} +6 -6
  169. package/dist/{login-6OAH2NEH.cjs → login-V3MEWPKN.cjs} +7 -7
  170. package/dist/{logout-TLYA5W45.js → logout-BMVCLKKW.js} +6 -6
  171. package/dist/logout-XEG7FHOZ.cjs +18 -0
  172. package/dist/{mcp-BHOIBYUB.js → mcp-PYUR4PHO.js} +4 -4
  173. package/dist/mcp-SG6JFLGC.cjs +18 -0
  174. package/dist/{mcp-install-GROTZHAW.cjs → mcp-install-G27HSS3Z.cjs} +9 -9
  175. package/dist/{mcp-install-KSADVDBE.js → mcp-install-VESN42PI.js} +5 -5
  176. package/dist/{memory-6DRFA43C.js → memory-4ZMMEZ2Z.js} +2 -2
  177. package/dist/memory-QSGMVVGH.cjs +10 -0
  178. package/dist/model-NANLBZ4Z.cjs +10 -0
  179. package/dist/{model-MQXC56ES.js → model-ZXNV4AF7.js} +2 -2
  180. package/dist/{new-7VYM36RC.js → new-5QJY5JP2.js} +2 -2
  181. package/dist/new-PMMG55UX.cjs +12 -0
  182. package/dist/permissions-LECTCJ4H.cjs +13 -0
  183. package/dist/permissions-VP5VGIBL.js +13 -0
  184. package/dist/quit-BKOOPHU5.cjs +10 -0
  185. package/dist/{quit-PKBSEJOL.js → quit-FVFNYACP.js} +2 -2
  186. package/dist/{registry-WQLWHOLY.js → registry-KWZGYJC2.js} +289 -9
  187. package/dist/{registry-A5XLMQVC.cjs → registry-YN4FQPOO.cjs} +298 -18
  188. package/dist/{resume-FBKXSDOA.js → resume-EXFQSQPH.js} +4 -4
  189. package/dist/resume-PP2IQM5S.cjs +13 -0
  190. package/dist/search-C56FBN67.cjs +17 -0
  191. package/dist/{search-7RNYTCNO.js → search-XGZDYBF4.js} +5 -5
  192. package/dist/{sessions-WAXBUQTU.js → sessions-54KI3F2Q.js} +2 -2
  193. package/dist/sessions-DDTSPNVW.cjs +10 -0
  194. package/dist/settings-BDO37TTO.cjs +30 -0
  195. package/dist/{settings-D6JXX5RG.js → settings-FHRDFPLK.js} +5 -5
  196. package/dist/share-IERCTBGN.cjs +14 -0
  197. package/dist/share-TGROUE6R.js +14 -0
  198. package/dist/skills-6OL4OSGA.js +76 -0
  199. package/dist/skills-FYY6F2WV.cjs +76 -0
  200. package/dist/skills-OM4IGBAA.cjs +26 -0
  201. package/dist/skills-S3GRN323.js +26 -0
  202. package/dist/{skills-install-QNQWC2MV.js → skills-install-6CSWC24P.js} +7 -7
  203. package/dist/{skills-install-UMK5H3SO.cjs → skills-install-O3LZ2ETC.cjs} +11 -11
  204. package/dist/{skills-new-NZFGFKML.js → skills-new-ALD2PTHN.js} +5 -5
  205. package/dist/skills-new-PWLKK7GW.cjs +15 -0
  206. package/dist/slashCommands-L4ZD33LJ.js +75 -0
  207. package/dist/slashCommands-YY2VUUDF.cjs +75 -0
  208. package/dist/status-3PC5XWSS.cjs +11 -0
  209. package/dist/{status-BKC7GBNQ.js → status-KCLVOYPD.js} +3 -3
  210. package/dist/{sync-YVPFT7SL.js → sync-6SDWG5RK.js} +3 -3
  211. package/dist/sync-WHURZL3U.cjs +18 -0
  212. package/dist/{team-RWIKCLTG.js → team-5YXP3JGR.js} +1 -1
  213. package/dist/team-IIWEZKNR.cjs +9 -0
  214. package/dist/{teammate-7C3UDQSH.cjs → teammate-2KMKJXAM.cjs} +4 -4
  215. package/dist/{teammate-3C4MLRGH.js → teammate-L6EZQ3I2.js} +4 -4
  216. package/dist/theme-BE5A4FPN.cjs +18 -0
  217. package/dist/{theme-A2CEHI7W.js → theme-YMFCQP7J.js} +5 -5
  218. package/dist/ui/questionModal.cjs +5 -5
  219. package/dist/ui/questionModal.js +4 -4
  220. package/dist/undo-KZHUUZTD.cjs +10 -0
  221. package/dist/{undo-F2IZJQUV.js → undo-NEIEHQVX.js} +2 -2
  222. package/package.json +2 -1
  223. package/dist/ProviderFactory-EFFQBRQ6.cjs +0 -9
  224. package/dist/about-V2HWEZZO.cjs +0 -12
  225. package/dist/add-dir-ALBSYRV3.cjs +0 -10
  226. package/dist/agents-FCGEWTA3.cjs +0 -12
  227. package/dist/agents-new-FU3O55CO.js +0 -14
  228. package/dist/agents-new-SAFTJ7TK.cjs +0 -14
  229. package/dist/automode-CYLGXQ4A.cjs +0 -10
  230. package/dist/chunk-Q3MJ6CYS.cjs +0 -193
  231. package/dist/clear-ES5WCZRF.cjs +0 -12
  232. package/dist/completion-XQTDTJLK.cjs +0 -14
  233. package/dist/config-RDMVIV26.cjs +0 -18
  234. package/dist/export-EWAYH353.cjs +0 -12
  235. package/dist/export-ZWA6XGVS.js +0 -12
  236. package/dist/feedback-5RV6ODW4.js +0 -15
  237. package/dist/feedback-ZPITHFJR.cjs +0 -15
  238. package/dist/help-X52PZM24.cjs +0 -12
  239. package/dist/history-4WIOZ4TW.cjs +0 -14
  240. package/dist/hooks-IAVTXUAI.cjs +0 -13
  241. package/dist/hooks-YF6HL23E.js +0 -13
  242. package/dist/i18n-MVQIAZWS.cjs +0 -33
  243. package/dist/ide-4R3BEBIS.js +0 -12
  244. package/dist/ide-C7WSPQTR.cjs +0 -12
  245. package/dist/import-2ICSKDL7.cjs +0 -10
  246. package/dist/init-AOUGGITS.cjs +0 -10
  247. package/dist/language-Q7YFDVSR.cjs +0 -18
  248. package/dist/logout-ELQBUMTU.cjs +0 -18
  249. package/dist/mcp-TNUEXR5T.cjs +0 -18
  250. package/dist/memory-IORZE6WF.cjs +0 -10
  251. package/dist/model-CJPSPGIC.cjs +0 -10
  252. package/dist/new-7D2B7IWM.cjs +0 -12
  253. package/dist/permissions-MM77OSFO.js +0 -13
  254. package/dist/permissions-W2F62DJ6.cjs +0 -13
  255. package/dist/quit-7D2RDGTD.cjs +0 -10
  256. package/dist/resume-KLPDYPWQ.cjs +0 -13
  257. package/dist/search-UESMQZC3.cjs +0 -17
  258. package/dist/sessions-TSSUFWIJ.cjs +0 -10
  259. package/dist/settings-RKYGXKDG.cjs +0 -30
  260. package/dist/share-GLX4YHS4.cjs +0 -14
  261. package/dist/share-U2M2KBFJ.js +0 -14
  262. package/dist/skills-63QLZMUO.cjs +0 -14
  263. package/dist/skills-BAMMXP3Q.js +0 -14
  264. package/dist/skills-new-NYKNHJHV.cjs +0 -15
  265. package/dist/slashCommands-EJ23C3Z4.cjs +0 -69
  266. package/dist/slashCommands-JQIL4EWX.js +0 -69
  267. package/dist/status-FU3CPJWQ.cjs +0 -11
  268. package/dist/sync-3IEIHXIP.cjs +0 -18
  269. package/dist/team-GVK5L73L.cjs +0 -9
  270. package/dist/theme-LNOQOVR4.cjs +0 -18
  271. package/dist/undo-QEV42XLU.cjs +0 -10
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkFPAE6ORVcjs = require('./chunk-FPAE6ORV.cjs');
5
+ var _chunkZYQMLKOKcjs = require('./chunk-ZYQMLKOK.cjs');
6
6
 
7
7
 
8
- var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
8
+ var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
9
9
 
10
10
  // src/commands/export.ts
11
11
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -245,7 +245,7 @@ function getSuggestedFilename(metadata2, format) {
245
245
  // src/commands/export.ts
246
246
  var metadata = {
247
247
  command: "/export",
248
- description: _chunkRVUQKMXXcjs.t.call(void 0, "commands.export.description"),
248
+ description: _chunk7BTSG4MEcjs.t.call(void 0, "commands.export.description"),
249
249
  implemented: true
250
250
  };
251
251
  async function execute(args, context) {
@@ -265,7 +265,7 @@ async function execute(args, context) {
265
265
  label: `${s.projectName} - ${new Date(s.createdAt).toLocaleString()} (${s.messageCount} messages)`,
266
266
  value: s.sessionId
267
267
  }));
268
- const sessionResult = await _chunkFPAE6ORVcjs.showModal.call(void 0, {
268
+ const sessionResult = await _chunkZYQMLKOKcjs.showModal.call(void 0, {
269
269
  title: "Select a session to export:",
270
270
  options: sessionOptions
271
271
  });
@@ -286,7 +286,7 @@ async function execute(args, context) {
286
286
  { label: "JSON (.json)", value: "json" },
287
287
  { label: "HTML (.html)", value: "html" }
288
288
  ];
289
- const formatResult = await _chunkFPAE6ORVcjs.showModal.call(void 0, {
289
+ const formatResult = await _chunkZYQMLKOKcjs.showModal.call(void 0, {
290
290
  title: "Export format:",
291
291
  options: formatOptions
292
292
  });
@@ -297,17 +297,17 @@ async function execute(args, context) {
297
297
  const format = formatResult.value;
298
298
  const options = {};
299
299
  if (format === "md" || format === "html") {
300
- options.includeToolOutputs = await _chunkFPAE6ORVcjs.showConfirm.call(void 0, {
300
+ options.includeToolOutputs = await _chunkZYQMLKOKcjs.showConfirm.call(void 0, {
301
301
  title: "Include tool outputs?",
302
302
  defaultValue: true
303
303
  });
304
- options.includeToc = await _chunkFPAE6ORVcjs.showConfirm.call(void 0, {
304
+ options.includeToc = await _chunkZYQMLKOKcjs.showConfirm.call(void 0, {
305
305
  title: "Include table of contents?",
306
306
  defaultValue: false
307
307
  });
308
308
  }
309
309
  const suggestedFilename = getSuggestedFilename(metadata2, format);
310
- const filename = await _chunkFPAE6ORVcjs.showInput.call(void 0, {
310
+ const filename = await _chunkZYQMLKOKcjs.showInput.call(void 0, {
311
311
  title: "Save as:",
312
312
  defaultValue: suggestedFilename
313
313
  });
@@ -331,11 +331,11 @@ async function execute(args, context) {
331
331
  try {
332
332
  await saveExport(content, filePath);
333
333
  console.log();
334
- console.log(_chalk2.default.green(_chunkRVUQKMXXcjs.t.call(void 0, "commands.export.success", { path: filePath })));
334
+ console.log(_chalk2.default.green(_chunk7BTSG4MEcjs.t.call(void 0, "commands.export.success", { path: filePath })));
335
335
  console.log(_chalk2.default.gray(` ${messages.length} messages, ${(Buffer.byteLength(content, "utf8") / 1024).toFixed(1)} KB`));
336
336
  console.log();
337
337
  } catch (error) {
338
- console.log(_chalk2.default.red(_chunkRVUQKMXXcjs.t.call(void 0, "commands.export.failed", { error: error.message })));
338
+ console.log(_chalk2.default.red(_chunk7BTSG4MEcjs.t.call(void 0, "commands.export.failed", { error: error.message })));
339
339
  }
340
340
  }
341
341
 
@@ -472,8 +472,9 @@ var OpenRouterClient = class {
472
472
  }
473
473
  const headers = {
474
474
  "Content-Type": "application/json",
475
- "HTTP-Referer": "https://github.com/autohandai/code-cli",
476
- "X-Title": "autohand-code-cli"
475
+ "HTTP-Referer": "https://autohand.dev",
476
+ "X-OpenRouter-Title": "Autohand Code CLI",
477
+ "X-OpenRouter-Categories": "cli-agent"
477
478
  };
478
479
  if (this.apiKey) {
479
480
  headers.Authorization = `Bearer ${this.apiKey}`;
@@ -1074,6 +1075,431 @@ var LLMGatewayProvider = class {
1074
1075
  }
1075
1076
  };
1076
1077
 
1078
+ // src/providers/azure/tokenManager.ts
1079
+ var EXPIRY_BUFFER_MS = 5 * 60 * 1e3;
1080
+ var IMDS_ENDPOINT = "http://169.254.169.254/metadata/identity/oauth2/token";
1081
+ var COGNITIVE_SCOPE = "https://cognitiveservices.azure.com/.default";
1082
+ var AzureTokenManager = class {
1083
+ constructor() {
1084
+ this.cache = null;
1085
+ }
1086
+ async getToken(request) {
1087
+ if (request.authMethod === "api-key") {
1088
+ if (!request.apiKey) {
1089
+ throw new Error("API key is required for api-key authentication.");
1090
+ }
1091
+ return request.apiKey;
1092
+ }
1093
+ if (this.cache && !this.isTokenExpired()) {
1094
+ return this.cache.token;
1095
+ }
1096
+ if (request.authMethod === "entra-id") {
1097
+ return this.acquireEntraIdToken(request);
1098
+ }
1099
+ if (request.authMethod === "managed-identity") {
1100
+ return this.acquireManagedIdentityToken();
1101
+ }
1102
+ throw new Error(`Unsupported auth method: ${request.authMethod}`);
1103
+ }
1104
+ async getAuthHeaders(request) {
1105
+ if (request.authMethod === "api-key") {
1106
+ const key = await this.getToken(request);
1107
+ return { "api-key": key };
1108
+ }
1109
+ const token = await this.getToken(request);
1110
+ return { Authorization: `Bearer ${token}` };
1111
+ }
1112
+ async acquireEntraIdToken(request) {
1113
+ if (!request.tenantId) {
1114
+ throw new Error("tenantId is required for Entra ID authentication.");
1115
+ }
1116
+ if (!request.clientId) {
1117
+ throw new Error("clientId is required for Entra ID authentication.");
1118
+ }
1119
+ if (!request.clientSecret) {
1120
+ throw new Error("clientSecret is required for Entra ID authentication.");
1121
+ }
1122
+ const url = `https://login.microsoftonline.com/${request.tenantId}/oauth2/v2.0/token`;
1123
+ const body = new URLSearchParams({
1124
+ grant_type: "client_credentials",
1125
+ client_id: request.clientId,
1126
+ client_secret: request.clientSecret,
1127
+ scope: COGNITIVE_SCOPE
1128
+ });
1129
+ const response = await fetch(url, {
1130
+ method: "POST",
1131
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
1132
+ body: body.toString()
1133
+ });
1134
+ if (!response.ok) {
1135
+ const error = await response.json().catch(() => ({}));
1136
+ const description = error.error_description || error.error || `HTTP ${response.status}`;
1137
+ throw new Error(`Entra ID authentication failed: ${description}`);
1138
+ }
1139
+ const data = await response.json();
1140
+ this.cacheToken(data.access_token, data.expires_in);
1141
+ return data.access_token;
1142
+ }
1143
+ async acquireManagedIdentityToken() {
1144
+ const url = `${IMDS_ENDPOINT}?api-version=2018-02-01&resource=https://cognitiveservices.azure.com`;
1145
+ let response;
1146
+ try {
1147
+ response = await fetch(url, {
1148
+ headers: { Metadata: "true" }
1149
+ });
1150
+ } catch (e14) {
1151
+ throw new Error(
1152
+ "Managed Identity token acquisition failed. This auth method only works inside Azure VMs, App Service, or containers with managed identity enabled."
1153
+ );
1154
+ }
1155
+ if (!response.ok) {
1156
+ const error = await response.json().catch(() => ({}));
1157
+ throw new Error(
1158
+ `Managed Identity token error (${response.status}): ${error.error_description || error.error || "Unknown"}`
1159
+ );
1160
+ }
1161
+ const data = await response.json();
1162
+ this.cacheToken(data.access_token, data.expires_in);
1163
+ return data.access_token;
1164
+ }
1165
+ cacheToken(token, expiresInSeconds) {
1166
+ this.cache = {
1167
+ token,
1168
+ expiresAt: Date.now() + expiresInSeconds * 1e3
1169
+ };
1170
+ }
1171
+ isTokenExpired() {
1172
+ if (!this.cache) return true;
1173
+ return Date.now() >= this.cache.expiresAt - EXPIRY_BUFFER_MS;
1174
+ }
1175
+ };
1176
+
1177
+ // src/providers/AzureClient.ts
1178
+ function sanitizeMessages3(messages) {
1179
+ return messages.map((msg) => {
1180
+ const sanitized = {
1181
+ role: msg.role,
1182
+ content: msg.content
1183
+ };
1184
+ if (msg.role === "tool" && msg.tool_call_id) {
1185
+ sanitized.tool_call_id = msg.tool_call_id;
1186
+ }
1187
+ if (msg.role === "assistant" && _optionalChain([msg, 'access', _75 => _75.tool_calls, 'optionalAccess', _76 => _76.length])) {
1188
+ sanitized.tool_calls = msg.tool_calls;
1189
+ }
1190
+ if (msg.name) {
1191
+ sanitized.name = msg.name;
1192
+ }
1193
+ return sanitized;
1194
+ });
1195
+ }
1196
+ var DEFAULT_API_VERSION = "2024-10-21";
1197
+ var DEFAULT_MAX_RETRIES3 = 3;
1198
+ var MAX_ALLOWED_RETRIES3 = 5;
1199
+ var DEFAULT_RETRY_DELAY3 = 1e3;
1200
+ var DEFAULT_TIMEOUT3 = 3e4;
1201
+ var FRIENDLY_ERRORS3 = {
1202
+ 400: "The request was malformed. This often happens when the context is too long. Try /undo to remove recent turns or /new to start fresh.",
1203
+ 401: "Authentication failed. Please verify your Azure API key or credentials in ~/.autohand/config.json.",
1204
+ 402: "Payment required. Please check your Azure subscription and billing settings.",
1205
+ 403: "Access denied. Your credentials may not have permission for this Azure deployment.",
1206
+ 404: "The Azure deployment was not found. Verify your resourceName and deploymentName in ~/.autohand/config.json.",
1207
+ 429: "Rate limit exceeded. Please wait a moment and try again, or adjust your Azure deployment capacity.",
1208
+ 500: "Azure OpenAI encountered an internal error. Please try again later.",
1209
+ 502: "Azure OpenAI is temporarily unavailable. Please try again in a few moments.",
1210
+ 503: "Azure OpenAI is currently overloaded. Please try again later.",
1211
+ 504: "The request timed out. Azure OpenAI may be experiencing high load."
1212
+ };
1213
+ var AzureClient = class {
1214
+ constructor(options, networkSettings) {
1215
+ this.options = options;
1216
+ this.tokenManager = new AzureTokenManager();
1217
+ this.defaultModel = options.model;
1218
+ const configuredRetries = _nullishCoalesce(_optionalChain([networkSettings, 'optionalAccess', _77 => _77.maxRetries]), () => ( DEFAULT_MAX_RETRIES3));
1219
+ this.maxRetries = Math.min(
1220
+ Math.max(0, configuredRetries),
1221
+ MAX_ALLOWED_RETRIES3
1222
+ );
1223
+ this.retryDelay = _nullishCoalesce(_optionalChain([networkSettings, 'optionalAccess', _78 => _78.retryDelay]), () => ( DEFAULT_RETRY_DELAY3));
1224
+ this.timeout = _nullishCoalesce(_optionalChain([networkSettings, 'optionalAccess', _79 => _79.timeout]), () => ( DEFAULT_TIMEOUT3));
1225
+ }
1226
+ setDefaultModel(model) {
1227
+ this.defaultModel = model;
1228
+ }
1229
+ /**
1230
+ * Build the full Azure OpenAI endpoint URL.
1231
+ *
1232
+ * If baseUrl is provided:
1233
+ * {baseUrl}/chat/completions?api-version={apiVersion}
1234
+ *
1235
+ * If resourceName is a full URL (starts with https://):
1236
+ * {origin}/openai/deployments/{deploymentName}/chat/completions?api-version={apiVersion}
1237
+ * Supports all Azure endpoint domains:
1238
+ * - *.openai.azure.com (Azure OpenAI)
1239
+ * - *.services.ai.azure.com (Microsoft Foundry)
1240
+ * - *.cognitiveservices.azure.com (Azure AI Services)
1241
+ *
1242
+ * Otherwise, from resourceName + deploymentName:
1243
+ * https://{resourceName}.openai.azure.com/openai/deployments/{deploymentName}/chat/completions?api-version={apiVersion}
1244
+ */
1245
+ buildEndpointUrl() {
1246
+ const apiVersion = _nullishCoalesce(this.options.apiVersion, () => ( DEFAULT_API_VERSION));
1247
+ if (this.options.baseUrl) {
1248
+ return `${this.options.baseUrl}/chat/completions?api-version=${apiVersion}`;
1249
+ }
1250
+ const { resourceName, deploymentName } = this.options;
1251
+ if (!resourceName || !deploymentName) {
1252
+ throw new Error(
1253
+ "Azure OpenAI requires either baseUrl or both resourceName and deploymentName in ~/.autohand/config.json."
1254
+ );
1255
+ }
1256
+ if (resourceName.startsWith("http://") || resourceName.startsWith("https://")) {
1257
+ try {
1258
+ const parsed = new URL(resourceName);
1259
+ return `${parsed.origin}/openai/deployments/${deploymentName}/chat/completions?api-version=${apiVersion}`;
1260
+ } catch (e15) {
1261
+ }
1262
+ }
1263
+ return `https://${resourceName}.openai.azure.com/openai/deployments/${deploymentName}/chat/completions?api-version=${apiVersion}`;
1264
+ }
1265
+ async complete(request) {
1266
+ const payload = {
1267
+ messages: sanitizeMessages3(request.messages),
1268
+ temperature: _nullishCoalesce(request.temperature, () => ( 0.2)),
1269
+ max_tokens: _nullishCoalesce(request.maxTokens, () => ( 16e3)),
1270
+ stream: _nullishCoalesce(request.stream, () => ( false))
1271
+ };
1272
+ if (request.tools && request.tools.length > 0) {
1273
+ payload.tools = request.tools.map((tool) => ({
1274
+ type: "function",
1275
+ function: {
1276
+ name: tool.name,
1277
+ description: tool.description,
1278
+ parameters: _nullishCoalesce(tool.parameters, () => ( { type: "object", properties: {} }))
1279
+ }
1280
+ }));
1281
+ if (request.toolChoice) {
1282
+ payload.tool_choice = request.toolChoice;
1283
+ }
1284
+ }
1285
+ const authHeaders = await this.tokenManager.getAuthHeaders({
1286
+ authMethod: this.options.authMethod,
1287
+ apiKey: this.options.apiKey,
1288
+ tenantId: this.options.tenantId,
1289
+ clientId: this.options.clientId,
1290
+ clientSecret: this.options.clientSecret
1291
+ });
1292
+ const headers = {
1293
+ "Content-Type": "application/json",
1294
+ ...authHeaders
1295
+ };
1296
+ const payloadJson = JSON.stringify(payload);
1297
+ const payloadSizeBytes = payloadJson.length;
1298
+ const maxPayloadSize = 5 * 1024 * 1024;
1299
+ if (payloadSizeBytes > maxPayloadSize) {
1300
+ const sizeMB = (payloadSizeBytes / (1024 * 1024)).toFixed(2);
1301
+ throw new Error(
1302
+ `Request payload too large (${sizeMB}MB). This usually happens when the conversation history grows too long. Try using /undo to remove recent turns or /new to start fresh.`
1303
+ );
1304
+ }
1305
+ let lastError = null;
1306
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
1307
+ try {
1308
+ const response = await this.makeRequest(
1309
+ payload,
1310
+ headers,
1311
+ request.signal,
1312
+ payloadJson
1313
+ );
1314
+ return response;
1315
+ } catch (error) {
1316
+ lastError = error;
1317
+ if (this.isNonRetryableError(error)) {
1318
+ throw error;
1319
+ }
1320
+ if (attempt < this.maxRetries) {
1321
+ const delay = this.retryDelay * Math.pow(2, attempt);
1322
+ await this.sleep(delay);
1323
+ }
1324
+ }
1325
+ }
1326
+ throw _nullishCoalesce(lastError, () => ( new Error(
1327
+ "Failed to communicate with Azure OpenAI. Please try again."
1328
+ )));
1329
+ }
1330
+ async makeRequest(payload, headers, signal, preSerializedBody) {
1331
+ let response;
1332
+ const url = this.buildEndpointUrl();
1333
+ try {
1334
+ const timeoutController = new AbortController();
1335
+ const timeoutId = setTimeout(
1336
+ () => timeoutController.abort(),
1337
+ this.timeout
1338
+ );
1339
+ const combinedSignal = signal ? this.combineSignals(signal, timeoutController.signal) : timeoutController.signal;
1340
+ try {
1341
+ response = await fetch(url, {
1342
+ method: "POST",
1343
+ headers,
1344
+ body: _nullishCoalesce(preSerializedBody, () => ( JSON.stringify(payload))),
1345
+ signal: combinedSignal
1346
+ });
1347
+ } finally {
1348
+ clearTimeout(timeoutId);
1349
+ }
1350
+ } catch (error) {
1351
+ const err = error;
1352
+ if (err.name === "AbortError" && _optionalChain([signal, 'optionalAccess', _80 => _80.aborted])) {
1353
+ throw new Error("Request cancelled.");
1354
+ }
1355
+ if (err.name === "AbortError") {
1356
+ throw new Error(
1357
+ "Request timed out. Azure OpenAI may be experiencing high load."
1358
+ );
1359
+ }
1360
+ throw new Error(
1361
+ "Unable to connect to Azure OpenAI. Please check your internet connection and Azure configuration."
1362
+ );
1363
+ }
1364
+ if (!response.ok) {
1365
+ throw new Error(await this.buildFriendlyError(response));
1366
+ }
1367
+ const json = await response.json();
1368
+ const message = _optionalChain([json, 'optionalAccess', _81 => _81.choices, 'optionalAccess', _82 => _82[0], 'optionalAccess', _83 => _83.message]);
1369
+ const text = _nullishCoalesce(_optionalChain([message, 'optionalAccess', _84 => _84.content]), () => ( ""));
1370
+ const finishReason = _optionalChain([json, 'optionalAccess', _85 => _85.choices, 'optionalAccess', _86 => _86[0], 'optionalAccess', _87 => _87.finish_reason]);
1371
+ let toolCalls;
1372
+ if (_optionalChain([message, 'optionalAccess', _88 => _88.tool_calls]) && Array.isArray(message.tool_calls)) {
1373
+ toolCalls = message.tool_calls.map((tc) => {
1374
+ const rawArgs = _optionalChain([tc, 'access', _89 => _89.function, 'optionalAccess', _90 => _90.arguments]);
1375
+ return {
1376
+ id: tc.id,
1377
+ type: "function",
1378
+ function: {
1379
+ name: _nullishCoalesce(_optionalChain([tc, 'access', _91 => _91.function, 'optionalAccess', _92 => _92.name]), () => ( "")),
1380
+ arguments: _nullishCoalesce(rawArgs, () => ( "{}"))
1381
+ }
1382
+ };
1383
+ });
1384
+ }
1385
+ let usage;
1386
+ if (_optionalChain([json, 'optionalAccess', _93 => _93.usage])) {
1387
+ usage = {
1388
+ promptTokens: _nullishCoalesce(json.usage.prompt_tokens, () => ( 0)),
1389
+ completionTokens: _nullishCoalesce(json.usage.completion_tokens, () => ( 0)),
1390
+ totalTokens: _nullishCoalesce(json.usage.total_tokens, () => ( 0))
1391
+ };
1392
+ }
1393
+ return {
1394
+ id: _nullishCoalesce(json.id, () => ( "autohand-azure")),
1395
+ created: _nullishCoalesce(json.created, () => ( Date.now())),
1396
+ content: text,
1397
+ toolCalls,
1398
+ finishReason,
1399
+ usage,
1400
+ raw: json
1401
+ };
1402
+ }
1403
+ async buildFriendlyError(response) {
1404
+ const status = response.status;
1405
+ let errorDetail = "";
1406
+ try {
1407
+ const body = await response.json();
1408
+ errorDetail = _optionalChain([body, 'optionalAccess', _94 => _94.error, 'optionalAccess', _95 => _95.message]) || _optionalChain([body, 'optionalAccess', _96 => _96.error]) || _optionalChain([body, 'optionalAccess', _97 => _97.message]) || "";
1409
+ if (typeof errorDetail === "object") {
1410
+ errorDetail = JSON.stringify(errorDetail);
1411
+ }
1412
+ } catch (e16) {
1413
+ try {
1414
+ errorDetail = await response.text();
1415
+ } catch (e17) {
1416
+ }
1417
+ }
1418
+ const friendlyMessage = FRIENDLY_ERRORS3[status];
1419
+ if (friendlyMessage) {
1420
+ return errorDetail ? `${friendlyMessage}
1421
+ ${errorDetail}` : friendlyMessage;
1422
+ }
1423
+ if (status >= 500) {
1424
+ const base = "Azure OpenAI is temporarily unavailable. Please try again later.";
1425
+ return errorDetail ? `${base}
1426
+ (${status}: ${errorDetail})` : base;
1427
+ }
1428
+ if (status >= 400) {
1429
+ const base = "The request could not be processed by Azure OpenAI.";
1430
+ return errorDetail ? `${base} (${status}: ${errorDetail})` : `${base} (HTTP ${status}) Please try again or adjust your prompt.`;
1431
+ }
1432
+ return errorDetail ? `An unexpected Azure OpenAI error occurred: ${errorDetail}` : "An unexpected Azure OpenAI error occurred. Please try again.";
1433
+ }
1434
+ isNonRetryableError(error) {
1435
+ const message = error.message.toLowerCase();
1436
+ if (message.includes("cancelled") || message.includes("aborted")) {
1437
+ return true;
1438
+ }
1439
+ if (message.includes("authentication") || message.includes("api key")) {
1440
+ return true;
1441
+ }
1442
+ if (message.includes("payment") || message.includes("access denied")) {
1443
+ return true;
1444
+ }
1445
+ if (message.includes("not found")) {
1446
+ return true;
1447
+ }
1448
+ return false;
1449
+ }
1450
+ combineSignals(signal1, signal2) {
1451
+ const controller = new AbortController();
1452
+ const abort = () => controller.abort();
1453
+ signal1.addEventListener("abort", abort);
1454
+ signal2.addEventListener("abort", abort);
1455
+ if (signal1.aborted || signal2.aborted) {
1456
+ controller.abort();
1457
+ }
1458
+ return controller.signal;
1459
+ }
1460
+ sleep(ms) {
1461
+ return new Promise((resolve) => setTimeout(resolve, ms));
1462
+ }
1463
+ };
1464
+
1465
+ // src/providers/AzureProvider.ts
1466
+ var AzureProvider = class {
1467
+ constructor(config, networkSettings) {
1468
+ this.client = new AzureClient(
1469
+ {
1470
+ model: config.model,
1471
+ resourceName: config.resourceName,
1472
+ deploymentName: config.deploymentName,
1473
+ baseUrl: config.baseUrl,
1474
+ apiVersion: config.apiVersion,
1475
+ apiKey: config.apiKey,
1476
+ authMethod: _nullishCoalesce(config.authMethod, () => ( "api-key")),
1477
+ tenantId: config.tenantId,
1478
+ clientId: config.clientId,
1479
+ clientSecret: config.clientSecret
1480
+ },
1481
+ networkSettings
1482
+ );
1483
+ this.model = config.model;
1484
+ }
1485
+ getName() {
1486
+ return "azure";
1487
+ }
1488
+ setModel(model) {
1489
+ this.model = model;
1490
+ this.client.setDefaultModel(model);
1491
+ }
1492
+ async listModels() {
1493
+ return ["gpt-4o", "gpt-4o-mini", "gpt-4-turbo", "gpt-4", "gpt-3.5-turbo"];
1494
+ }
1495
+ async isAvailable() {
1496
+ return true;
1497
+ }
1498
+ async complete(request) {
1499
+ return this.client.complete(request);
1500
+ }
1501
+ };
1502
+
1077
1503
  // src/providers/ProviderFactory.ts
1078
1504
  var ProviderNotConfiguredError = class extends Error {
1079
1505
  constructor(providerName) {
@@ -1135,6 +1561,11 @@ var ProviderFactory = class {
1135
1561
  return new UnconfiguredProvider("llmgateway");
1136
1562
  }
1137
1563
  return new LLMGatewayProvider(config.llmgateway, config.network);
1564
+ case "azure":
1565
+ if (!config.azure) {
1566
+ return new UnconfiguredProvider("azure");
1567
+ }
1568
+ return new AzureProvider(config.azure, config.network);
1138
1569
  case "openrouter":
1139
1570
  default:
1140
1571
  if (!config.openrouter) {
@@ -1148,7 +1579,7 @@ var ProviderFactory = class {
1148
1579
  * MLX is only included on Apple Silicon (macOS + arm64).
1149
1580
  */
1150
1581
  static getProviderNames() {
1151
- const providers = ["openrouter", "ollama", "openai", "llamacpp", "llmgateway"];
1582
+ const providers = ["openrouter", "ollama", "openai", "llamacpp", "llmgateway", "azure"];
1152
1583
  if (isMLXSupported()) {
1153
1584
  providers.push("mlx");
1154
1585
  }
@@ -1160,7 +1591,7 @@ var ProviderFactory = class {
1160
1591
  * MLX is always a valid provider name, but may not be available on non-Apple Silicon systems.
1161
1592
  */
1162
1593
  static isValidProvider(name) {
1163
- const allProviders = ["openrouter", "ollama", "openai", "llamacpp", "mlx", "llmgateway"];
1594
+ const allProviders = ["openrouter", "ollama", "openai", "llamacpp", "mlx", "llmgateway", "azure"];
1164
1595
  return allProviders.includes(name);
1165
1596
  }
1166
1597
  };
@@ -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 _chunkD6VG7B5Xcjs = require('./chunk-D6VG7B5X.cjs');
3
+ var _chunkTXSDBGKXcjs = require('./chunk-TXSDBGKX.cjs');
4
4
 
5
5
 
6
- var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
6
+ var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
7
7
 
8
8
  // src/commands/status.ts
9
9
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -28,7 +28,7 @@ async function gatherStatusData(ctx) {
28
28
  apiConnected = false;
29
29
  }
30
30
  return {
31
- version: _chunkD6VG7B5Xcjs.package_default.version,
31
+ version: _chunkTXSDBGKXcjs.package_default.version,
32
32
  sessionId: _nullishCoalesce(_optionalChain([currentSession, 'optionalAccess', _ => _.metadata, 'access', _2 => _2.sessionId]), () => ( null)),
33
33
  cwd: ctx.workspaceRoot,
34
34
  provider: _nullishCoalesce(ctx.provider, () => ( "openrouter")),
@@ -158,21 +158,21 @@ function renderTabContent(tab, data) {
158
158
  }
159
159
  }
160
160
  function renderStatusTab(data) {
161
- console.log(_chalk2.default.bold(`${_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.version")}:`), data.version);
162
- console.log(_chalk2.default.bold(`${_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.sessionId")}:`), _nullishCoalesce(data.sessionId, () => ( _chalk2.default.gray("none"))));
163
- console.log(_chalk2.default.bold(`${_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.cwd")}:`), data.cwd);
164
- console.log(_chalk2.default.bold(`${_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.provider")}:`), data.provider);
165
- console.log(_chalk2.default.bold(`${_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.model")}:`), data.model);
161
+ console.log(_chalk2.default.bold(`${_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.version")}:`), data.version);
162
+ console.log(_chalk2.default.bold(`${_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.sessionId")}:`), _nullishCoalesce(data.sessionId, () => ( _chalk2.default.gray("none"))));
163
+ console.log(_chalk2.default.bold(`${_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.cwd")}:`), data.cwd);
164
+ console.log(_chalk2.default.bold(`${_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.provider")}:`), data.provider);
165
+ console.log(_chalk2.default.bold(`${_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.model")}:`), data.model);
166
166
  console.log(
167
167
  _chalk2.default.bold("Context Compaction:"),
168
168
  data.contextCompactionEnabled ? _chalk2.default.green("ON") : _chalk2.default.yellow("OFF")
169
169
  );
170
170
  console.log();
171
171
  console.log(
172
- _chalk2.default.bold(`${_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.apiStatus")}:`),
173
- data.apiConnected ? _chalk2.default.green(_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.connected")) : _chalk2.default.red(_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.disconnected"))
172
+ _chalk2.default.bold(`${_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.apiStatus")}:`),
173
+ data.apiConnected ? _chalk2.default.green(_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.connected")) : _chalk2.default.red(_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.disconnected"))
174
174
  );
175
- console.log(_chalk2.default.bold(`${_chunkRVUQKMXXcjs.t.call(void 0, "commands.status.sessions")}:`), _chunkRVUQKMXXcjs.t.call(void 0, "commands.status.total", { count: String(data.sessionsCount) }));
175
+ console.log(_chalk2.default.bold(`${_chunk7BTSG4MEcjs.t.call(void 0, "commands.status.sessions")}:`), _chunk7BTSG4MEcjs.t.call(void 0, "commands.status.total", { count: String(data.sessionsCount) }));
176
176
  console.log(_chalk2.default.bold("Memory:"), "user (~/.autohand/memory/), project (.autohand/memory/)");
177
177
  }
178
178
  function renderConfigTab(data) {
@@ -6,7 +6,7 @@ var _chunkCNBKZEX5cjs = require('./chunk-CNBKZEX5.cjs');
6
6
  var _chunkYFXTE422cjs = require('./chunk-YFXTE422.cjs');
7
7
 
8
8
 
9
- var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
9
+ var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
10
10
 
11
11
  // src/commands/new.ts
12
12
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -37,7 +37,7 @@ async function newConversation(ctx) {
37
37
  )
38
38
  );
39
39
  } else {
40
- console.log(_chalk2.default.cyan(_chunkRVUQKMXXcjs.t.call(void 0, "commands.new.cleared")));
40
+ console.log(_chalk2.default.cyan(_chunk7BTSG4MEcjs.t.call(void 0, "commands.new.cleared")));
41
41
  }
42
42
  console.log();
43
43
  return null;
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  package_default
3
- } from "./chunk-QUFAULH7.js";
3
+ } from "./chunk-T73IDKDF.js";
4
4
  import {
5
5
  getTheme,
6
6
  isThemeInitialized
7
7
  } from "./chunk-JS7IPR7P.js";
8
8
  import {
9
9
  t
10
- } from "./chunk-HFMLWH7B.js";
10
+ } from "./chunk-APIXPPMT.js";
11
11
 
12
12
  // src/commands/about.ts
13
13
  import { execSync } from "child_process";
@@ -19,7 +19,7 @@ function getCommitFromAlphaVersion(version) {
19
19
  }
20
20
  function getGitCommit() {
21
21
  if (true) {
22
- return "7408c76";
22
+ return "f12701b";
23
23
  }
24
24
  const alphaCommit = getCommitFromAlphaVersion(package_default.version);
25
25
  if (alphaCommit) {