autohand-cli 0.7.14 → 0.8.0

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 (394) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/AgentRegistry-7LDL5HJH.js +10 -0
  3. package/dist/AgentRegistry-NQCLWABO.cjs +10 -0
  4. package/dist/{AutomodeManager-NGRAO2MH.js → AutomodeManager-MWLKGPZK.js} +2 -0
  5. package/dist/{AutomodeManager-ZKQMBM4T.cjs → AutomodeManager-NYIZNODK.cjs} +3 -1
  6. package/dist/CommunitySkillsCache-6QPRMTJO.js +8 -0
  7. package/dist/CommunitySkillsCache-GTQMOCCO.cjs +8 -0
  8. package/dist/{GitHubRegistryFetcher-US2JJID4.js → GitHubRegistryFetcher-6JQ5JEDZ.js} +1 -0
  9. package/dist/{GitHubRegistryFetcher-K744NNAJ.cjs → GitHubRegistryFetcher-S7QFUEKV.cjs} +1 -0
  10. package/dist/HookManager-Q2KYMCP4.cjs +7 -0
  11. package/dist/HookManager-TTP4Y6DC.js +7 -0
  12. package/dist/ImportWizard-IWVPRKFF.cjs +466 -0
  13. package/dist/ImportWizard-KASGQPUY.js +466 -0
  14. package/dist/McpClientManager-7RM6YT35.js +8 -0
  15. package/dist/McpClientManager-RKD7C6OY.cjs +8 -0
  16. package/dist/MemoryManager-GUNLRP5S.js +8 -0
  17. package/dist/MemoryManager-TNSGKDKX.cjs +8 -0
  18. package/dist/PermissionManager-2GO5PQ6M.cjs +11 -0
  19. package/dist/{PermissionManager-U5OMGR3L.js → PermissionManager-K7UWSNB6.js} +4 -3
  20. package/dist/ProjectProfiler-UMJJSOCE.js +194 -0
  21. package/dist/ProjectProfiler-ZDWR2ODG.cjs +194 -0
  22. package/dist/ProviderFactory-EFFQBRQ6.cjs +9 -0
  23. package/dist/ProviderFactory-S3LWTQQC.js +9 -0
  24. package/dist/SessionManager-FEUAU3ZJ.cjs +10 -0
  25. package/dist/SessionManager-IKWAK2PI.js +10 -0
  26. package/dist/SkillsRegistry-GDEGFP6O.cjs +9 -0
  27. package/dist/SkillsRegistry-SI5RUHQ4.js +9 -0
  28. package/dist/SubAgent-I75HELJG.js +11 -0
  29. package/dist/SubAgent-K3QP6WHC.cjs +11 -0
  30. package/dist/{SyncApiClient-AYXYSOJM.js → SyncApiClient-LVIO4C2S.js} +1 -0
  31. package/dist/{SyncApiClient-ID3KXEMA.cjs → SyncApiClient-ZNYMT36M.cjs} +1 -0
  32. package/dist/about-B2AGTV6N.js +12 -0
  33. package/dist/about-V2HWEZZO.cjs +12 -0
  34. package/dist/actionExecutor-6XCVL2SJ.js +19 -0
  35. package/dist/actionExecutor-YRUJNB5G.cjs +19 -0
  36. package/dist/add-dir-7FBQ5IFV.js +10 -0
  37. package/dist/add-dir-ALBSYRV3.cjs +10 -0
  38. package/dist/agents/builtin/code-cleaner.md +14 -0
  39. package/dist/agents/builtin/docs-writer.md +14 -0
  40. package/dist/agents/builtin/researcher.md +14 -0
  41. package/dist/agents/builtin/reviewer.md +15 -0
  42. package/dist/agents/builtin/tester.md +15 -0
  43. package/dist/agents/builtin/todo-resolver.md +15 -0
  44. package/dist/agents-FCGEWTA3.cjs +12 -0
  45. package/dist/agents-FENGUSJD.js +12 -0
  46. package/dist/agents-new-FU3O55CO.js +14 -0
  47. package/dist/agents-new-SAFTJ7TK.cjs +14 -0
  48. package/dist/assets/icon.png +0 -0
  49. package/dist/automode-CYLGXQ4A.cjs +10 -0
  50. package/dist/automode-O7G3DUYN.js +10 -0
  51. package/dist/{cc-UTTLESTY.js → cc-7LEIJ3KF.js} +1 -0
  52. package/dist/{cc-2W6M7J45.cjs → cc-Q5MM4AWC.cjs} +1 -0
  53. package/dist/{chunk-N4ZSG6JJ.cjs → chunk-22D2CNTP.cjs} +2 -2
  54. package/dist/chunk-24QIWILL.js +51 -0
  55. package/dist/{chunk-MYNHJHDZ.js → chunk-2AA5MFES.js} +1 -1
  56. package/dist/{chunk-KWRUQRXR.js → chunk-2ELK5DMH.js} +44 -10
  57. package/dist/chunk-2JYIR3EC.cjs +1176 -0
  58. package/dist/{chunk-CRQKDBLD.js → chunk-2RIAPTET.js} +90 -66
  59. package/dist/{chunk-TSY7JHIV.cjs → chunk-33A755XB.cjs} +2 -2
  60. package/dist/chunk-3OEDGIFW.js +42 -0
  61. package/dist/{chunk-P5VDZ6PV.js → chunk-3PDTTAKJ.js} +1 -1
  62. package/dist/{chunk-ULMPJUJW.cjs → chunk-3WCOFXQS.cjs} +23 -23
  63. package/dist/{chunk-PDKNHU5G.cjs → chunk-4HKTYHNL.cjs} +22 -16
  64. package/dist/{chunk-Z4J4W6YQ.cjs → chunk-4JNNTOGF.cjs} +2 -48
  65. package/dist/chunk-55B6SBHK.js +260 -0
  66. package/dist/chunk-5DDDUUBM.cjs +29 -0
  67. package/dist/{chunk-TQB222ZB.js → chunk-5EIEWVYX.js} +2 -2
  68. package/dist/{chunk-SMHY3Q7B.cjs → chunk-5GGX6WNY.cjs} +54 -22
  69. package/dist/{chunk-3S4DEIJP.cjs → chunk-5IXII4HX.cjs} +2 -2
  70. package/dist/{chunk-3KBBARKO.js → chunk-5OBNULPU.js} +85 -28
  71. package/dist/{chunk-VVBBEYTH.cjs → chunk-5YJG6H6P.cjs} +10 -10
  72. package/dist/{chunk-PKOAXQKW.cjs → chunk-63WXWFDI.cjs} +11 -11
  73. package/dist/{chunk-DSKVMFRM.cjs → chunk-643VRA5S.cjs} +12 -4
  74. package/dist/{chunk-L5ZFPWHY.js → chunk-6OYHF6MF.js} +12 -4
  75. package/dist/chunk-7GDVDSNI.js +1176 -0
  76. package/dist/chunk-7QEE6SW6.cjs +260 -0
  77. package/dist/chunk-7UOUW76C.js +603 -0
  78. package/dist/{chunk-SZP4ULM5.cjs → chunk-AFN7LH5N.cjs} +17 -17
  79. package/dist/chunk-AHD5JJ6F.cjs +78 -0
  80. package/dist/{chunk-WLTVF77A.js → chunk-ALYU6VTM.js} +1 -1
  81. package/dist/{chunk-BRXIEKJ3.cjs → chunk-AMT2UZBI.cjs} +5 -5
  82. package/dist/{chunk-SFNT5DYE.cjs → chunk-BT35E7NE.cjs} +4 -4
  83. package/dist/{chunk-NUHYCFHW.cjs → chunk-BVKXEQVG.cjs} +54 -65
  84. package/dist/chunk-CDMGQR4L.cjs +4470 -0
  85. package/dist/chunk-CNBKZEX5.cjs +109 -0
  86. package/dist/{chunk-GD4AFYJ3.js → chunk-CVVEYUFR.js} +1 -1
  87. package/dist/chunk-CWALFEGU.js +58 -0
  88. package/dist/{chunk-MTALRU7R.cjs → chunk-D3YCFT5O.cjs} +3 -3
  89. package/dist/{chunk-CH4SPVFD.cjs → chunk-D6VG7B5X.cjs} +9 -3
  90. package/dist/{chunk-TOTDRAWG.js → chunk-DH7DKCUL.js} +1 -1
  91. package/dist/{chunk-RFNCTE4V.cjs → chunk-DLG43ZJ7.cjs} +2 -2
  92. package/dist/chunk-DN573ME7.cjs +1675 -0
  93. package/dist/{chunk-63BXZQZW.js → chunk-E23CMMNJ.js} +20 -4
  94. package/dist/{chunk-4HA7IHLJ.cjs → chunk-EEGK5DYE.cjs} +32 -16
  95. package/dist/{chunk-DTFR3WD6.js → chunk-EF4LKUQY.js} +1 -1
  96. package/dist/{chunk-PWLLLJHU.js → chunk-EGFT4PGW.js} +3 -1
  97. package/dist/{chunk-S47TCZDL.js → chunk-EIU7K7CM.js} +7 -7
  98. package/dist/{chunk-BISFR6ZL.js → chunk-EPNYD4NV.js} +1 -1
  99. package/dist/chunk-EZMINVLU.js +123 -0
  100. package/dist/{chunk-LYMTYC67.js → chunk-F23EVNJU.js} +2 -2
  101. package/dist/chunk-FHK7UDOJ.cjs +42 -0
  102. package/dist/chunk-FMB3TSWP.cjs +218 -0
  103. package/dist/{chunk-XBUMKEFN.cjs → chunk-FPAE6ORV.cjs} +91 -34
  104. package/dist/{chunk-DEAEO7RI.js → chunk-FYZ67R4R.js} +1 -1
  105. package/dist/{chunk-6SHHB2VD.js → chunk-G7SZIOHF.js} +2 -2
  106. package/dist/{chunk-FB6JWNJS.js → chunk-GBHDROGL.js} +54 -65
  107. package/dist/chunk-GCHELXLO.js +131 -0
  108. package/dist/{chunk-XPOHYKR3.js → chunk-GHSBZ3YB.js} +2 -2
  109. package/dist/chunk-GLBAF54O.js +218 -0
  110. package/dist/chunk-GO3N7LRW.cjs +131 -0
  111. package/dist/{chunk-Y2ZSH3YF.cjs → chunk-H6ZGZEBG.cjs} +57 -23
  112. package/dist/{chunk-DSCQPWUB.cjs → chunk-HA7OAVOB.cjs} +15 -15
  113. package/dist/{chunk-NMWEDN4Z.js → chunk-HFMLWH7B.js} +108 -0
  114. package/dist/{chunk-D2XFTCRP.js → chunk-HQ7YZKXE.js} +1 -1
  115. package/dist/{chunk-L42HTMMR.cjs → chunk-HTLINWX6.cjs} +2 -2
  116. package/dist/chunk-IETRBBMP.cjs +603 -0
  117. package/dist/chunk-IQ5RXU6O.js +1675 -0
  118. package/dist/{chunk-GVZPIQWB.js → chunk-ITB3FS72.js} +11 -5
  119. package/dist/{chunk-B6EBHCK2.cjs → chunk-IUMJYXBX.cjs} +6 -6
  120. package/dist/{chunk-ZBIBLOZL.js → chunk-IVM5F2AE.js} +500 -317
  121. package/dist/{chunk-GRSVQ5YZ.js → chunk-IWVQ2EW3.js} +44 -12
  122. package/dist/chunk-JJWCQLOU.cjs +59 -0
  123. package/dist/{chunk-KXAAEROY.js → chunk-JMFDD7IZ.js} +2 -2
  124. package/dist/chunk-JSBRDJBE.js +30 -0
  125. package/dist/chunk-LJFUXC56.cjs +123 -0
  126. package/dist/chunk-LL3PQ2U6.js +4470 -0
  127. package/dist/chunk-LQ4LQQG6.cjs +27 -0
  128. package/dist/chunk-LQGVEP3E.js +109 -0
  129. package/dist/{chunk-425MT6Y5.cjs → chunk-LVE6Z5SL.cjs} +9 -9
  130. package/dist/{chunk-XL77XYI2.cjs → chunk-LXDOQTXQ.cjs} +4 -4
  131. package/dist/{chunk-BG4OQUKP.js → chunk-MBBY4ZIK.js} +1 -1
  132. package/dist/{chunk-ZXIQCYYV.cjs → chunk-MGMXR67S.cjs} +9 -9
  133. package/dist/{chunk-FHUNAB2K.cjs → chunk-MHLE6AVN.cjs} +33 -6
  134. package/dist/chunk-MHSDHPC4.cjs +58 -0
  135. package/dist/chunk-MUBW5UDH.cjs +55 -0
  136. package/dist/{chunk-MNSTWHK3.cjs → chunk-MVWOQBCC.cjs} +11 -11
  137. package/dist/chunk-N254NRHT.cjs +30 -0
  138. package/dist/{chunk-SRLY7K6J.js → chunk-OBLIITWJ.js} +2 -2
  139. package/dist/{chunk-SIGWDEPS.cjs → chunk-OI7OIGNB.cjs} +10 -10
  140. package/dist/{chunk-V7YTCNMN.cjs → chunk-OPR34VHL.cjs} +5 -5
  141. package/dist/chunk-OUHQZFN4.js +78 -0
  142. package/dist/{chunk-HMRDNRTH.js → chunk-PEC45WYS.js} +2 -2
  143. package/dist/{chunk-OSUWEUZE.js → chunk-PUOE5BCN.js} +1 -1
  144. package/dist/chunk-Q2VYSHWU.js +59 -0
  145. package/dist/chunk-Q3MJ6CYS.cjs +193 -0
  146. package/dist/{chunk-QRGPAUST.js → chunk-Q5RN7RXC.js} +2 -2
  147. package/dist/{chunk-43XS26AQ.cjs → chunk-Q5RX3XGB.cjs} +4 -4
  148. package/dist/chunk-QCLYBIMM.cjs +51 -0
  149. package/dist/chunk-QMAKTSZB.cjs +48 -0
  150. package/dist/chunk-QT2VZNFA.js +29 -0
  151. package/dist/{chunk-3XJD56Z4.js → chunk-QUFAULH7.js} +9 -3
  152. package/dist/{chunk-RJP3SZ7Q.cjs → chunk-RD5XAJR2.cjs} +492 -309
  153. package/dist/chunk-RGR6ME5J.cjs +844 -0
  154. package/dist/{chunk-EOGKE5GD.cjs → chunk-RKJTGGMU.cjs} +221 -126
  155. package/dist/{chunk-NMGF2KUN.js → chunk-RO46YAPI.js} +1 -1
  156. package/dist/{chunk-2U5HFVRO.cjs → chunk-RVUQKMXX.cjs} +108 -0
  157. package/dist/chunk-S52YW5ZQ.js +844 -0
  158. package/dist/{chunk-ZLOTP56B.cjs → chunk-S6BDWWUG.cjs} +5 -5
  159. package/dist/{chunk-6DWXHBAY.js → chunk-SAHBLB3E.js} +222 -127
  160. package/dist/chunk-SALLHB2I.js +27 -0
  161. package/dist/{chunk-GIZL57FE.cjs → chunk-SEKD5FH3.cjs} +3 -1
  162. package/dist/{chunk-DZHR34H6.cjs → chunk-SHFA46CS.cjs} +8 -8
  163. package/dist/{chunk-MILZEEUV.js → chunk-SIHRD34Z.js} +2 -2
  164. package/dist/{chunk-BPTBKO7D.js → chunk-SO3QQJAZ.js} +216 -36
  165. package/dist/{chunk-HSPWX4Z2.cjs → chunk-SRQW3B6J.cjs} +223 -43
  166. package/dist/{chunk-MY3TZER2.js → chunk-T63AMO6H.js} +1 -1
  167. package/dist/{chunk-X765A7J5.js → chunk-TERCG25S.js} +1 -1
  168. package/dist/{chunk-WOGJXDBU.cjs → chunk-TFSRRZWP.cjs} +3 -3
  169. package/dist/{chunk-RRZS5A53.js → chunk-TQHOVHRS.js} +1 -1
  170. package/dist/{chunk-JHOQABEF.js → chunk-TWEKBHUO.js} +5 -5
  171. package/dist/chunk-U3WDY42C.cjs +42 -0
  172. package/dist/{chunk-CKN2BLHK.cjs → chunk-UBS46QL3.cjs} +2 -2
  173. package/dist/{chunk-H3GBSPK5.js → chunk-UGTFKUW4.js} +14 -6
  174. package/dist/chunk-UJTCTTUF.cjs +271 -0
  175. package/dist/{chunk-RUZB43HU.cjs → chunk-UTI6ZQEY.cjs} +22 -14
  176. package/dist/{chunk-OLG7LZBD.js → chunk-VG34MG2U.js} +1 -1
  177. package/dist/{chunk-ZKZRFH37.cjs → chunk-VJYPP6PP.cjs} +6 -6
  178. package/dist/{chunk-YHGTBPEC.js → chunk-VNQ5GL34.js} +1 -1
  179. package/dist/{chunk-XDVG3NM4.js → chunk-W3X6PAC7.js} +2 -48
  180. package/dist/{chunk-FK2DVRPJ.js → chunk-WFUUXADU.js} +2 -2
  181. package/dist/{chunk-R5OO7MEB.cjs → chunk-WGTJOIB7.cjs} +22 -22
  182. package/dist/{chunk-VHBUKGRG.js → chunk-WJDPVW7T.js} +4 -4
  183. package/dist/chunk-WNUVPKBW.js +42 -0
  184. package/dist/{chunk-EV53SLSB.cjs → chunk-WPVWQSL7.cjs} +4 -4
  185. package/dist/chunk-WQ3VJXZB.js +118 -0
  186. package/dist/chunk-WTNBX2JO.js +271 -0
  187. package/dist/chunk-XAV24VYN.js +48 -0
  188. package/dist/chunk-XDLH4EDL.cjs +118 -0
  189. package/dist/{chunk-U7CZFKPL.cjs → chunk-XMNHZRUB.cjs} +2 -2
  190. package/dist/chunk-XUDSXGGV.cjs +1822 -0
  191. package/dist/{chunk-WQUQ5JMM.js → chunk-XWASJ2QL.js} +4 -4
  192. package/dist/chunk-Y2SXUCNJ.js +55 -0
  193. package/dist/{chunk-AIH6GUGB.cjs → chunk-YDCDGTK6.cjs} +5 -5
  194. package/dist/chunk-YFXTE422.cjs +92 -0
  195. package/dist/chunk-YKS55CMT.js +1822 -0
  196. package/dist/{chunk-KC5FPUOF.cjs → chunk-YRLYSQEQ.cjs} +2 -2
  197. package/dist/{chunk-JWPI6O5Z.js → chunk-YS34SVY5.js} +31 -4
  198. package/dist/{chunk-FEVHH525.cjs → chunk-YYB42DCU.cjs} +4 -4
  199. package/dist/chunk-ZK6HOR62.js +92 -0
  200. package/dist/{chunk-BHV7CBNT.js → chunk-ZSE42BRE.js} +1 -1
  201. package/dist/clear-ES5WCZRF.cjs +12 -0
  202. package/dist/clear-J7XS6T5W.js +12 -0
  203. package/dist/completion-XQTDTJLK.cjs +14 -0
  204. package/dist/completion-XR6ZONJQ.js +14 -0
  205. package/dist/config-2TB3A55J.js +18 -0
  206. package/dist/config-RDMVIV26.cjs +18 -0
  207. package/dist/constants-6CPCJ3DY.cjs +21 -0
  208. package/dist/{constants-V6J54N3X.js → constants-UFM5B232.js} +2 -1
  209. package/dist/{defaultHooks-WLMRQUXG.cjs → defaultHooks-RCXPHF4M.cjs} +3 -1
  210. package/dist/{defaultHooks-R56VYG7I.js → defaultHooks-RDRMER3Z.js} +2 -0
  211. package/dist/export-EWAYH353.cjs +12 -0
  212. package/dist/export-ZWA6XGVS.js +12 -0
  213. package/dist/extractSessionMemories-SDW2MVBQ.cjs +7 -0
  214. package/dist/extractSessionMemories-V7K42ZHW.js +7 -0
  215. package/dist/feedback-5RV6ODW4.js +15 -0
  216. package/dist/feedback-ZPITHFJR.cjs +15 -0
  217. package/dist/filesystem-3SGCW2BF.js +10 -0
  218. package/dist/filesystem-MCFXJQ6R.cjs +10 -0
  219. package/dist/formatters-6K7QVWQL.cjs +10 -0
  220. package/dist/formatters-DQHO5I36.js +10 -0
  221. package/dist/{help-LKKQU2TN.js → help-I5GRCA3S.js} +3 -2
  222. package/dist/help-X52PZM24.cjs +12 -0
  223. package/dist/history-4WIOZ4TW.cjs +14 -0
  224. package/dist/{history-AV4XBFRK.js → history-OCHJBJW7.js} +3 -2
  225. package/dist/hooks-IAVTXUAI.cjs +13 -0
  226. package/dist/hooks-YF6HL23E.js +13 -0
  227. package/dist/{i18n-BSAPXM56.js → i18n-KHBXUALK.js} +2 -1
  228. package/dist/i18n-MVQIAZWS.cjs +33 -0
  229. package/dist/ide-4R3BEBIS.js +12 -0
  230. package/dist/ide-C7WSPQTR.cjs +12 -0
  231. package/dist/import-2ICSKDL7.cjs +10 -0
  232. package/dist/import-EAAX5HJR.js +170 -0
  233. package/dist/import-KRVVYJCZ.js +10 -0
  234. package/dist/import-PQJPNXA4.cjs +170 -0
  235. package/dist/index.cjs +7503 -11251
  236. package/dist/index.js +8735 -12483
  237. package/dist/init-6K3NRDOM.js +10 -0
  238. package/dist/init-AOUGGITS.cjs +10 -0
  239. package/dist/language-Q7YFDVSR.cjs +18 -0
  240. package/dist/language-Y6ZC7LET.js +18 -0
  241. package/dist/{lint-44UQJ673.cjs → lint-D5UOJWIK.cjs} +1 -0
  242. package/dist/{lint-TA2ZHVLM.js → lint-NJPZWVN2.js} +1 -0
  243. package/dist/{localProjectPermissions-WQYMGI42.js → localProjectPermissions-N77HA3XK.js} +3 -2
  244. package/dist/localProjectPermissions-UFSMNTBJ.cjs +18 -0
  245. package/dist/login-6OAH2NEH.cjs +20 -0
  246. package/dist/login-DL3377MD.js +20 -0
  247. package/dist/logout-ELQBUMTU.cjs +18 -0
  248. package/dist/logout-TLYA5W45.js +18 -0
  249. package/dist/mcp-BHOIBYUB.js +18 -0
  250. package/dist/mcp-TNUEXR5T.cjs +18 -0
  251. package/dist/{mcp-install-2KVKRAMQ.cjs → mcp-install-GROTZHAW.cjs} +26 -14
  252. package/dist/{mcp-install-77UXRN6R.js → mcp-install-KSADVDBE.js} +21 -9
  253. package/dist/memory-6DRFA43C.js +10 -0
  254. package/dist/memory-IORZE6WF.cjs +10 -0
  255. package/dist/message-JUBOK2VU.js +9 -0
  256. package/dist/message-ZJ5AYAMT.cjs +9 -0
  257. package/dist/model-CJPSPGIC.cjs +10 -0
  258. package/dist/model-MQXC56ES.js +10 -0
  259. package/dist/new-7D2B7IWM.cjs +12 -0
  260. package/dist/new-7VYM36RC.js +12 -0
  261. package/dist/{patch-BAAQIYSW.js → patch-5F6VBIT3.js} +2 -0
  262. package/dist/{patch-J32X2QQP.cjs → patch-MOD7QC3D.cjs} +3 -1
  263. package/dist/permissions-MM77OSFO.js +13 -0
  264. package/dist/permissions-W2F62DJ6.cjs +13 -0
  265. package/dist/{plan-JFGNRL2S.js → plan-G5CEKJI4.js} +1 -0
  266. package/dist/{plan-B3CW5DXJ.cjs → plan-QKOHE3LH.cjs} +1 -0
  267. package/dist/quit-7D2RDGTD.cjs +10 -0
  268. package/dist/quit-PKBSEJOL.js +10 -0
  269. package/dist/registry-A5XLMQVC.cjs +1828 -0
  270. package/dist/registry-WQLWHOLY.js +1828 -0
  271. package/dist/resume-FBKXSDOA.js +13 -0
  272. package/dist/resume-KLPDYPWQ.cjs +13 -0
  273. package/dist/search-7RNYTCNO.js +17 -0
  274. package/dist/search-UESMQZC3.cjs +17 -0
  275. package/dist/{session-T3TAZ5ZU.cjs → session-BSU2L5UI.cjs} +1 -0
  276. package/dist/{session-H5QWKE5E.js → session-SZMRN5KG.js} +1 -0
  277. package/dist/sessions-TSSUFWIJ.cjs +10 -0
  278. package/dist/sessions-WAXBUQTU.js +10 -0
  279. package/dist/settings-D6JXX5RG.js +30 -0
  280. package/dist/settings-RKYGXKDG.cjs +30 -0
  281. package/dist/share-GLX4YHS4.cjs +14 -0
  282. package/dist/share-U2M2KBFJ.js +14 -0
  283. package/dist/skills-63QLZMUO.cjs +14 -0
  284. package/dist/{skills-LJZA6PVJ.js → skills-BAMMXP3Q.js} +3 -2
  285. package/dist/{skills-install-MQINL3EC.js → skills-install-QNQWC2MV.js} +99 -28
  286. package/dist/{skills-install-IKJZN4G2.cjs → skills-install-UMK5H3SO.cjs} +107 -36
  287. package/dist/skills-new-NYKNHJHV.cjs +15 -0
  288. package/dist/skills-new-NZFGFKML.js +15 -0
  289. package/dist/slashCommands-EJ23C3Z4.cjs +69 -0
  290. package/dist/slashCommands-JQIL4EWX.js +69 -0
  291. package/dist/status-BKC7GBNQ.js +11 -0
  292. package/dist/status-FU3CPJWQ.cjs +11 -0
  293. package/dist/sync-3IEIHXIP.cjs +18 -0
  294. package/dist/sync-7JMZVEQD.cjs +40 -0
  295. package/dist/{sync-EXYX7HXW.js → sync-KWX67OUN.js} +3 -2
  296. package/dist/sync-YVPFT7SL.js +18 -0
  297. package/dist/tasks-5FPBIFLC.js +9 -0
  298. package/dist/tasks-TXGKGNH6.cjs +9 -0
  299. package/dist/team-GVK5L73L.cjs +9 -0
  300. package/dist/team-RWIKCLTG.js +9 -0
  301. package/dist/teammate-3C4MLRGH.js +139 -0
  302. package/dist/teammate-7C3UDQSH.cjs +139 -0
  303. package/dist/theme-A2CEHI7W.js +18 -0
  304. package/dist/theme-LNOQOVR4.cjs +18 -0
  305. package/dist/ui/questionModal.cjs +7 -25
  306. package/dist/ui/questionModal.js +6 -24
  307. package/dist/undo-F2IZJQUV.js +10 -0
  308. package/dist/undo-QEV42XLU.cjs +10 -0
  309. package/dist/update-TVAJMMBC.js +82 -0
  310. package/dist/update-Z6BIIQDC.cjs +82 -0
  311. package/package.json +9 -3
  312. package/dist/CommunitySkillsCache-ILWHWE5P.js +0 -7
  313. package/dist/CommunitySkillsCache-KHC6RUJW.cjs +0 -7
  314. package/dist/HookManager-X47HCM5G.cjs +0 -6
  315. package/dist/HookManager-ZXKHCD7U.js +0 -6
  316. package/dist/MemoryManager-6ZT7IDO5.cjs +0 -7
  317. package/dist/MemoryManager-AJGS5AKB.js +0 -7
  318. package/dist/PermissionManager-HG6W2DGU.cjs +0 -10
  319. package/dist/SessionManager-BJ2G6VV4.cjs +0 -9
  320. package/dist/SessionManager-ENPGYK5J.js +0 -9
  321. package/dist/SkillsRegistry-6ZFOCT25.cjs +0 -8
  322. package/dist/SkillsRegistry-C2SHOZ5D.js +0 -8
  323. package/dist/about-3BJTNSLK.js +0 -11
  324. package/dist/about-EABQNJGV.cjs +0 -11
  325. package/dist/add-dir-7FD4DMDA.cjs +0 -9
  326. package/dist/add-dir-LOYJ4YB5.js +0 -9
  327. package/dist/agents-2Y6ASV7C.js +0 -10
  328. package/dist/agents-UOSPKLQL.cjs +0 -10
  329. package/dist/agents-new-23NSGAM5.js +0 -13
  330. package/dist/agents-new-WI2EL7IJ.cjs +0 -13
  331. package/dist/automode-LGWTY3UX.js +0 -9
  332. package/dist/automode-WLBQ7MN7.cjs +0 -9
  333. package/dist/chunk-5UBW2BGC.js +0 -33
  334. package/dist/chunk-I6DBWNLN.cjs +0 -169
  335. package/dist/chunk-IZBCMJHJ.cjs +0 -33
  336. package/dist/completion-7WGMHKOR.cjs +0 -13
  337. package/dist/completion-KH33NSGP.js +0 -13
  338. package/dist/constants-RBQTR32A.cjs +0 -20
  339. package/dist/export-3QN3IH7A.js +0 -11
  340. package/dist/export-BI54X3MP.cjs +0 -11
  341. package/dist/feedback-CI4OIPOS.cjs +0 -14
  342. package/dist/feedback-GFPL5STE.js +0 -14
  343. package/dist/formatters-N5IJKYZY.cjs +0 -8
  344. package/dist/formatters-UG6VZJJ5.js +0 -8
  345. package/dist/help-CWMUGD3V.cjs +0 -11
  346. package/dist/history-73VBEMSI.cjs +0 -13
  347. package/dist/hooks-62UDQBGH.cjs +0 -12
  348. package/dist/hooks-XORDJD5X.js +0 -12
  349. package/dist/i18n-X2IU2EZD.cjs +0 -32
  350. package/dist/ide-RPKZALQV.js +0 -11
  351. package/dist/ide-YMNXJB6A.cjs +0 -11
  352. package/dist/init-J5HR4R7U.js +0 -9
  353. package/dist/init-JCC7RVMC.cjs +0 -9
  354. package/dist/language-AZISJCEZ.js +0 -16
  355. package/dist/language-F65RA6FZ.cjs +0 -16
  356. package/dist/localProjectPermissions-2EATUDZM.cjs +0 -17
  357. package/dist/login-5HLPMECE.js +0 -18
  358. package/dist/login-ISWYYBXP.cjs +0 -18
  359. package/dist/logout-3EKZM5J3.cjs +0 -16
  360. package/dist/logout-GE7TSZ24.js +0 -16
  361. package/dist/mcp-EW64QRFA.cjs +0 -15
  362. package/dist/mcp-VHS7AMF2.js +0 -15
  363. package/dist/memory-2I473RU3.js +0 -9
  364. package/dist/memory-JZ6NPSP3.cjs +0 -9
  365. package/dist/model-GXZLARPT.js +0 -9
  366. package/dist/model-Y274DBDO.cjs +0 -9
  367. package/dist/new-BG5VIGZ7.cjs +0 -9
  368. package/dist/new-YXFDQOA7.js +0 -9
  369. package/dist/permissions-QILEAGBP.cjs +0 -12
  370. package/dist/permissions-WVEOVMWO.js +0 -12
  371. package/dist/quit-NC32OEJG.cjs +0 -9
  372. package/dist/quit-WRRIGU33.js +0 -9
  373. package/dist/resume-GJIKIDPR.cjs +0 -12
  374. package/dist/resume-RMJNCAOK.js +0 -12
  375. package/dist/search-UIWIXB73.js +0 -14
  376. package/dist/search-WQNXDA2E.cjs +0 -14
  377. package/dist/sessions-HPFX2GDD.js +0 -9
  378. package/dist/sessions-SAQU6MFA.cjs +0 -9
  379. package/dist/share-2WH5ZVOO.cjs +0 -13
  380. package/dist/share-PSSWWVV5.js +0 -13
  381. package/dist/skills-YTYGART7.cjs +0 -13
  382. package/dist/skills-new-3WCU3CWB.js +0 -14
  383. package/dist/skills-new-O5LFVFZU.cjs +0 -14
  384. package/dist/slashCommands-7IRDOXOQ.cjs +0 -55
  385. package/dist/slashCommands-C6CAQA25.js +0 -55
  386. package/dist/status-4EDV2LSY.cjs +0 -10
  387. package/dist/status-NU7TJDCE.js +0 -10
  388. package/dist/sync-3GFSEIAZ.js +0 -16
  389. package/dist/sync-6M3WRKMH.cjs +0 -39
  390. package/dist/sync-CQNQDNTJ.cjs +0 -16
  391. package/dist/theme-EMJGULMI.cjs +0 -16
  392. package/dist/theme-FGDSXNU3.js +0 -16
  393. package/dist/undo-CTXQYE7C.cjs +0 -9
  394. package/dist/undo-HX2ZMECP.js +0 -9
@@ -0,0 +1,218 @@
1
+ // src/utils/versionCheck.ts
2
+ import fs from "fs-extra";
3
+ import path from "path";
4
+ import os from "os";
5
+ var GITHUB_REPO = "autohandai/code-cli";
6
+ var GITHUB_API_LATEST_URL = `https://api.github.com/repos/${GITHUB_REPO}/releases/latest`;
7
+ var GITHUB_API_RELEASES_URL = `https://api.github.com/repos/${GITHUB_REPO}/releases?per_page=100`;
8
+ var CACHE_DIR = path.join(os.homedir(), ".autohand");
9
+ var DEFAULT_CHECK_INTERVAL_HOURS = 24;
10
+ var REQUEST_TIMEOUT_MS = 3e3;
11
+ function detectChannel(version) {
12
+ return version.includes("-alpha.") ? "alpha" : "stable";
13
+ }
14
+ function getCacheFile(channel) {
15
+ return path.join(CACHE_DIR, `version-check-${channel}.json`);
16
+ }
17
+ function compareVersions(a, b) {
18
+ const cleanA = a.replace(/^v/, "");
19
+ const cleanB = b.replace(/^v/, "");
20
+ const [versionA, preA] = cleanA.split("-");
21
+ const [versionB, preB] = cleanB.split("-");
22
+ const partsA = versionA.split(".").map(Number);
23
+ const partsB = versionB.split(".").map(Number);
24
+ for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
25
+ const numA = partsA[i] || 0;
26
+ const numB = partsB[i] || 0;
27
+ if (numA < numB) return -1;
28
+ if (numA > numB) return 1;
29
+ }
30
+ if (!preA && preB) return 1;
31
+ if (preA && !preB) return -1;
32
+ if (preA && preB) {
33
+ return preA.localeCompare(preB);
34
+ }
35
+ return 0;
36
+ }
37
+ function parseReleaseTimestamp(release) {
38
+ const rawTimestamp = release.published_at ?? release.created_at ?? null;
39
+ if (!rawTimestamp) {
40
+ return null;
41
+ }
42
+ const parsed = Date.parse(rawTimestamp);
43
+ return Number.isNaN(parsed) ? null : parsed;
44
+ }
45
+ function selectLatestPrereleaseRelease(releases) {
46
+ const prereleases = releases.filter((release) => release.prerelease && release.tag_name);
47
+ if (prereleases.length === 0) {
48
+ return null;
49
+ }
50
+ let selected = prereleases[0];
51
+ let selectedTimestamp = parseReleaseTimestamp(selected);
52
+ for (const release of prereleases.slice(1)) {
53
+ const timestamp = parseReleaseTimestamp(release);
54
+ if (timestamp === null) {
55
+ continue;
56
+ }
57
+ if (selectedTimestamp === null || timestamp > selectedTimestamp) {
58
+ selected = release;
59
+ selectedTimestamp = timestamp;
60
+ }
61
+ }
62
+ return selected;
63
+ }
64
+ function evaluateUpdateStatus(currentVersion, latestVersion, channel) {
65
+ if (channel === "alpha") {
66
+ const isUpToDate = currentVersion === latestVersion;
67
+ return { isUpToDate, updateAvailable: !isUpToDate };
68
+ }
69
+ const comparison = compareVersions(currentVersion, latestVersion);
70
+ return {
71
+ isUpToDate: comparison >= 0,
72
+ updateAvailable: comparison < 0
73
+ };
74
+ }
75
+ async function readCache(channel) {
76
+ try {
77
+ const cacheFile = getCacheFile(channel);
78
+ if (await fs.pathExists(cacheFile)) {
79
+ const data = await fs.readJson(cacheFile);
80
+ return data;
81
+ }
82
+ } catch {
83
+ }
84
+ return null;
85
+ }
86
+ async function writeCache(channel, cache) {
87
+ try {
88
+ const cacheFile = getCacheFile(channel);
89
+ await fs.ensureDir(path.dirname(cacheFile));
90
+ await fs.writeJson(cacheFile, cache, { spaces: 2 });
91
+ } catch {
92
+ }
93
+ }
94
+ function isCacheValid(cache, intervalHours) {
95
+ try {
96
+ const lastCheck = new Date(cache.lastCheck);
97
+ const now = /* @__PURE__ */ new Date();
98
+ const hoursSinceCheck = (now.getTime() - lastCheck.getTime()) / (1e3 * 60 * 60);
99
+ return hoursSinceCheck < intervalHours;
100
+ } catch {
101
+ return false;
102
+ }
103
+ }
104
+ async function fetchLatestStableRelease() {
105
+ try {
106
+ const controller = new AbortController();
107
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
108
+ const response = await fetch(GITHUB_API_LATEST_URL, {
109
+ headers: {
110
+ "Accept": "application/vnd.github.v3+json",
111
+ "User-Agent": "autohand-cli"
112
+ },
113
+ signal: controller.signal
114
+ });
115
+ clearTimeout(timeout);
116
+ if (!response.ok) {
117
+ return null;
118
+ }
119
+ const data = await response.json();
120
+ if (data.tag_name) {
121
+ return {
122
+ version: data.tag_name.replace(/^v/, ""),
123
+ url: data.html_url || `https://github.com/${GITHUB_REPO}/releases/tag/${data.tag_name}`
124
+ };
125
+ }
126
+ } catch {
127
+ }
128
+ return null;
129
+ }
130
+ async function fetchLatestAlphaRelease() {
131
+ try {
132
+ const controller = new AbortController();
133
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
134
+ const response = await fetch(GITHUB_API_RELEASES_URL, {
135
+ headers: {
136
+ "Accept": "application/vnd.github.v3+json",
137
+ "User-Agent": "autohand-cli"
138
+ },
139
+ signal: controller.signal
140
+ });
141
+ clearTimeout(timeout);
142
+ if (!response.ok) {
143
+ return null;
144
+ }
145
+ const releases = await response.json();
146
+ const latestPrerelease = selectLatestPrereleaseRelease(releases);
147
+ if (latestPrerelease?.tag_name) {
148
+ return {
149
+ version: latestPrerelease.tag_name.replace(/^v/, ""),
150
+ url: latestPrerelease.html_url || `https://github.com/${GITHUB_REPO}/releases/tag/${latestPrerelease.tag_name}`
151
+ };
152
+ }
153
+ } catch {
154
+ }
155
+ return null;
156
+ }
157
+ function getInstallHint(channel) {
158
+ if (channel === "alpha") {
159
+ return "curl -fsSL https://autohand.ai/install.sh | sh -s -- --alpha";
160
+ }
161
+ return "curl -fsSL https://autohand.ai/install.sh | sh";
162
+ }
163
+ async function checkForUpdates(currentVersion, options = {}) {
164
+ const {
165
+ checkIntervalHours = DEFAULT_CHECK_INTERVAL_HOURS,
166
+ forceCheck = false
167
+ } = options;
168
+ const channel = detectChannel(currentVersion);
169
+ const result = {
170
+ currentVersion,
171
+ latestVersion: null,
172
+ isUpToDate: true,
173
+ updateAvailable: false,
174
+ channel
175
+ };
176
+ if (process.env.AUTOHAND_SKIP_UPDATE_CHECK === "1") {
177
+ return result;
178
+ }
179
+ try {
180
+ if (!forceCheck) {
181
+ const cache = await readCache(channel);
182
+ if (cache && isCacheValid(cache, checkIntervalHours)) {
183
+ result.latestVersion = cache.latestVersion;
184
+ result.releaseUrl = cache.releaseUrl;
185
+ const status = evaluateUpdateStatus(currentVersion, cache.latestVersion, channel);
186
+ result.isUpToDate = status.isUpToDate;
187
+ result.updateAvailable = status.updateAvailable;
188
+ return result;
189
+ }
190
+ }
191
+ const latest = channel === "alpha" ? await fetchLatestAlphaRelease() : await fetchLatestStableRelease();
192
+ if (latest) {
193
+ result.latestVersion = latest.version;
194
+ result.releaseUrl = latest.url;
195
+ const status = evaluateUpdateStatus(currentVersion, latest.version, channel);
196
+ result.isUpToDate = status.isUpToDate;
197
+ result.updateAvailable = status.updateAvailable;
198
+ await writeCache(channel, {
199
+ lastCheck: (/* @__PURE__ */ new Date()).toISOString(),
200
+ latestVersion: latest.version,
201
+ releaseUrl: latest.url
202
+ });
203
+ }
204
+ } catch (error) {
205
+ result.error = error instanceof Error ? error.message : "Unknown error";
206
+ }
207
+ return result;
208
+ }
209
+
210
+ export {
211
+ getInstallHint,
212
+ checkForUpdates
213
+ };
214
+ /**
215
+ * @license
216
+ * Copyright 2025 Autohand AI LLC
217
+ * SPDX-License-Identifier: Apache-2.0
218
+ */
@@ -0,0 +1,131 @@
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
+
3
+
4
+ var _chunkRKJTGGMUcjs = require('./chunk-RKJTGGMU.cjs');
5
+
6
+
7
+
8
+ var _chunkFPAE6ORVcjs = require('./chunk-FPAE6ORV.cjs');
9
+
10
+
11
+ var _chunkUJTCTTUFcjs = require('./chunk-UJTCTTUF.cjs');
12
+
13
+ // src/commands/search.ts
14
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
15
+ async function search(ctx) {
16
+ const currentConfig = _chunkRKJTGGMUcjs.getSearchConfig.call(void 0, );
17
+ const config = ctx.config;
18
+ console.log(_chalk2.default.bold("\nWeb Search Configuration\n"));
19
+ console.log(_chalk2.default.gray(`Current provider: ${_chalk2.default.cyan(currentConfig.provider)}`));
20
+ const braveKeySet = !!(currentConfig.braveApiKey || process.env.BRAVE_SEARCH_API_KEY);
21
+ const parallelKeySet = !!(currentConfig.parallelApiKey || process.env.PARALLEL_API_KEY);
22
+ console.log(_chalk2.default.gray(`Brave API key: ${braveKeySet ? _chalk2.default.green("configured") : _chalk2.default.yellow("not set")}`));
23
+ console.log(_chalk2.default.gray(`Parallel API key: ${parallelKeySet ? _chalk2.default.green("configured") : _chalk2.default.yellow("not set")}`));
24
+ console.log();
25
+ const providerOptions = [
26
+ {
27
+ label: `Google ${_chalk2.default.gray("(no API key required, recommended default)")}`,
28
+ value: "google"
29
+ },
30
+ {
31
+ label: `DuckDuckGo ${_chalk2.default.gray("(no API key required, may be blocked by CAPTCHA)")}`,
32
+ value: "duckduckgo"
33
+ },
34
+ {
35
+ label: `Brave Search ${_chalk2.default.gray("(requires API key)")} ${braveKeySet ? _chalk2.default.green("\u2713") : ""}`,
36
+ value: "brave"
37
+ },
38
+ {
39
+ label: `Parallel.ai ${_chalk2.default.gray("(requires API key)")} ${parallelKeySet ? _chalk2.default.green("\u2713") : ""}`,
40
+ value: "parallel"
41
+ }
42
+ ];
43
+ try {
44
+ const result = await _chunkFPAE6ORVcjs.showModal.call(void 0, {
45
+ title: "Select search provider:",
46
+ options: providerOptions,
47
+ initialIndex: providerOptions.findIndex((c) => c.value === currentConfig.provider)
48
+ });
49
+ if (!result) {
50
+ console.log(_chalk2.default.gray("Search configuration cancelled."));
51
+ return null;
52
+ }
53
+ const provider = result.value;
54
+ let braveApiKey = currentConfig.braveApiKey;
55
+ let parallelApiKey = currentConfig.parallelApiKey;
56
+ if (provider === "brave" && !braveKeySet) {
57
+ console.log(_chalk2.default.gray("\nGet your free Brave Search API key at: https://brave.com/search/api/\n"));
58
+ const apiKey = await _chunkFPAE6ORVcjs.showPassword.call(void 0, {
59
+ title: "Enter Brave Search API key:"
60
+ });
61
+ if (_optionalChain([apiKey, 'optionalAccess', _ => _.trim, 'call', _2 => _2()])) {
62
+ braveApiKey = apiKey.trim();
63
+ } else {
64
+ console.log(_chalk2.default.yellow("No API key entered. Brave Search will not work without an API key."));
65
+ return null;
66
+ }
67
+ }
68
+ if (provider === "parallel" && !parallelKeySet) {
69
+ console.log(_chalk2.default.gray("\nGet your Parallel.ai API key at: https://platform.parallel.ai\n"));
70
+ const apiKey = await _chunkFPAE6ORVcjs.showPassword.call(void 0, {
71
+ title: "Enter Parallel.ai API key:"
72
+ });
73
+ if (_optionalChain([apiKey, 'optionalAccess', _3 => _3.trim, 'call', _4 => _4()])) {
74
+ parallelApiKey = apiKey.trim();
75
+ } else {
76
+ console.log(_chalk2.default.yellow("No API key entered. Parallel.ai Search will not work without an API key."));
77
+ return null;
78
+ }
79
+ }
80
+ _chunkRKJTGGMUcjs.configureSearch.call(void 0, {
81
+ provider,
82
+ braveApiKey,
83
+ parallelApiKey
84
+ });
85
+ if (config) {
86
+ config.search = {
87
+ provider,
88
+ braveApiKey,
89
+ parallelApiKey
90
+ };
91
+ await _chunkUJTCTTUFcjs.saveConfig.call(void 0, config);
92
+ console.log(_chalk2.default.green(`
93
+ \u2713 Search provider set to ${provider} and saved to config`));
94
+ } else {
95
+ console.log(_chalk2.default.green(`
96
+ \u2713 Search provider set to ${provider} (session only)`));
97
+ }
98
+ switch (provider) {
99
+ case "google":
100
+ console.log(_chalk2.default.gray("Google Search is now active. No API key required."));
101
+ break;
102
+ case "duckduckgo":
103
+ console.log(_chalk2.default.gray("Note: DuckDuckGo may block automated requests with a CAPTCHA."));
104
+ break;
105
+ case "brave":
106
+ console.log(_chalk2.default.gray("Brave Search is now active. Free tier allows 2,000 queries/month."));
107
+ break;
108
+ case "parallel":
109
+ console.log(_chalk2.default.gray("Parallel.ai Search is now active with deep research capabilities."));
110
+ break;
111
+ }
112
+ return null;
113
+ } catch (error) {
114
+ throw error;
115
+ }
116
+ }
117
+ var metadata = {
118
+ command: "/search",
119
+ description: "configure web search provider (google, brave, duckduckgo, parallel)",
120
+ implemented: true
121
+ };
122
+
123
+
124
+
125
+
126
+ exports.search = search; exports.metadata = metadata;
127
+ /**
128
+ * @license
129
+ * Copyright 2025 Autohand AI LLC
130
+ * SPDX-License-Identifier: Apache-2.0
131
+ */
@@ -1,16 +1,16 @@
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 _chunkCH4SPVFDcjs = require('./chunk-CH4SPVFD.cjs');
3
+ var _chunkD6VG7B5Xcjs = require('./chunk-D6VG7B5X.cjs');
4
4
 
5
5
 
6
- var _chunkBRXIEKJ3cjs = require('./chunk-BRXIEKJ3.cjs');
6
+ var _chunkAMT2UZBIcjs = require('./chunk-AMT2UZBI.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
10
+ var _chunkSEKD5FH3cjs = require('./chunk-SEKD5FH3.cjs');
11
11
 
12
12
 
13
- var _chunk2U5HFVROcjs = require('./chunk-2U5HFVRO.cjs');
13
+ var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
14
14
 
15
15
  // src/commands/feedback.ts
16
16
  var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
@@ -18,14 +18,14 @@ var _os = require('os'); var _os2 = _interopRequireDefault(_os);
18
18
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
19
19
  var metadata = {
20
20
  command: "/feedback",
21
- description: _chunk2U5HFVROcjs.t.call(void 0, "commands.feedback.description"),
21
+ description: _chunkRVUQKMXXcjs.t.call(void 0, "commands.feedback.description"),
22
22
  implemented: true
23
23
  };
24
- var API_BASE_URL = "https://api.autohand.ai";
24
+ var DEFAULT_API_BASE_URL = "https://api.autohand.ai";
25
25
  var API_TIMEOUT = 1e4;
26
26
  var COOLDOWN_MAX_SUBMISSIONS = 5;
27
27
  var COOLDOWN_WINDOW_MS = 60 * 60 * 1e3;
28
- var COOLDOWN_STATE_PATH = `${_chunkGIZL57FEcjs.AUTOHAND_PATHS.feedback}/cooldown.json`;
28
+ var COOLDOWN_STATE_PATH = `${_chunkSEKD5FH3cjs.AUTOHAND_PATHS.feedback}/cooldown.json`;
29
29
  async function checkCooldown() {
30
30
  try {
31
31
  if (!await _fsextra2.default.pathExists(COOLDOWN_STATE_PATH)) {
@@ -56,7 +56,7 @@ async function recordSubmission() {
56
56
  const windowStart = now - COOLDOWN_WINDOW_MS;
57
57
  state.submissions = state.submissions.filter((ts) => ts > windowStart);
58
58
  state.submissions.push(now);
59
- await _fsextra2.default.ensureDir(_chunkGIZL57FEcjs.AUTOHAND_PATHS.feedback);
59
+ await _fsextra2.default.ensureDir(_chunkSEKD5FH3cjs.AUTOHAND_PATHS.feedback);
60
60
  await _fsextra2.default.writeJson(COOLDOWN_STATE_PATH, state, { spaces: 2 });
61
61
  } catch (e2) {
62
62
  }
@@ -68,7 +68,7 @@ async function feedback(_ctx) {
68
68
  console.log(_chalk2.default.gray(`Please wait ${cooldown.waitMinutes} minute${cooldown.waitMinutes === 1 ? "" : "s"} before submitting again.`));
69
69
  return null;
70
70
  }
71
- const ratingAnswer = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, [
71
+ const ratingAnswer = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, [
72
72
  {
73
73
  type: "select",
74
74
  name: "rating",
@@ -87,7 +87,7 @@ async function feedback(_ctx) {
87
87
  console.log(_chalk2.default.gray("Feedback discarded."));
88
88
  return null;
89
89
  }
90
- const textAnswer = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, [
90
+ const textAnswer = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, [
91
91
  {
92
92
  type: "input",
93
93
  name: "feedback",
@@ -108,7 +108,7 @@ async function feedback(_ctx) {
108
108
  triggerType: "manual",
109
109
  timestamp: now,
110
110
  deviceId,
111
- cliVersion: _chunkCH4SPVFDcjs.package_default.version,
111
+ cliVersion: _chunkD6VG7B5Xcjs.package_default.version,
112
112
  platform: process.platform,
113
113
  osVersion: _os2.default.release(),
114
114
  nodeVersion: process.version,
@@ -123,17 +123,18 @@ async function feedback(_ctx) {
123
123
  runtimeError: runtimeError ? formatError(runtimeError) : null
124
124
  };
125
125
  try {
126
- const feedbackPath = _chunkGIZL57FEcjs.AUTOHAND_FILES.feedbackLog;
126
+ const feedbackPath = _chunkSEKD5FH3cjs.AUTOHAND_FILES.feedbackLog;
127
127
  await _fsextra2.default.ensureFile(feedbackPath);
128
128
  await _fsextra2.default.appendFile(feedbackPath, JSON.stringify(payload) + "\n", "utf8");
129
129
  } catch (e3) {
130
130
  }
131
131
  try {
132
- const response = await sendFeedbackToApi(payload);
132
+ const apiBaseUrl = getFeedbackApiBaseUrl(_ctx);
133
+ const response = await sendFeedbackToApi(payload, apiBaseUrl);
133
134
  if (response.success) {
134
- console.log(_chalk2.default.green(_chunk2U5HFVROcjs.t.call(void 0, "commands.feedback.success")));
135
+ console.log(_chalk2.default.green(_chunkRVUQKMXXcjs.t.call(void 0, "commands.feedback.success")));
135
136
  } else {
136
- if (_optionalChain([response, 'access', _6 => _6.error, 'optionalAccess', _7 => _7.includes, 'call', _8 => _8("Rate limit")])) {
137
+ if (/rate limit/i.test(_nullishCoalesce(response.error, () => ( "")))) {
137
138
  console.log(_chalk2.default.yellow("Feedback saved locally (rate limited, will retry later)."));
138
139
  } else {
139
140
  console.log(_chalk2.default.yellow(`Feedback saved locally. ${response.error ? `(${response.error})` : ""}`));
@@ -148,15 +149,15 @@ async function feedback(_ctx) {
148
149
  }
149
150
  return null;
150
151
  }
151
- async function sendFeedbackToApi(payload) {
152
+ async function sendFeedbackToApi(payload, apiBaseUrl) {
152
153
  const controller = new AbortController();
153
154
  const timeoutId = setTimeout(() => controller.abort(), API_TIMEOUT);
154
155
  try {
155
- const response = await fetch(`${API_BASE_URL}/v1/feedback`, {
156
+ const response = await fetch(`${apiBaseUrl}/v1/feedback`, {
156
157
  method: "POST",
157
158
  headers: {
158
159
  "Content-Type": "application/json",
159
- "X-CLI-Version": _chunkCH4SPVFDcjs.package_default.version,
160
+ "X-CLI-Version": _chunkD6VG7B5Xcjs.package_default.version,
160
161
  "X-Device-ID": payload.deviceId
161
162
  },
162
163
  body: JSON.stringify(payload),
@@ -165,7 +166,7 @@ async function sendFeedbackToApi(payload) {
165
166
  clearTimeout(timeoutId);
166
167
  if (!response.ok) {
167
168
  const errorText = await response.text().catch(() => "Unknown error");
168
- return { success: false, error: `API error: ${response.status} ${errorText}` };
169
+ return { success: false, error: formatFeedbackApiError(response.status, errorText) };
169
170
  }
170
171
  const data = await response.json();
171
172
  return data;
@@ -177,19 +178,52 @@ async function sendFeedbackToApi(payload) {
177
178
  return { success: false, error: error.message };
178
179
  }
179
180
  }
181
+ function getFeedbackApiBaseUrl(ctx) {
182
+ return _optionalChain([process, 'access', _6 => _6.env, 'access', _7 => _7.AUTOHAND_API_URL, 'optionalAccess', _8 => _8.trim, 'call', _9 => _9()]) || _optionalChain([ctx, 'access', _10 => _10.config, 'optionalAccess', _11 => _11.api, 'optionalAccess', _12 => _12.baseUrl, 'optionalAccess', _13 => _13.trim, 'call', _14 => _14()]) || DEFAULT_API_BASE_URL;
183
+ }
184
+ function formatFeedbackApiError(status, rawBody) {
185
+ const body = (_nullishCoalesce(rawBody, () => ( ""))).replace(/\s+/g, " ").trim();
186
+ if (!body) {
187
+ return `API error: ${status}`;
188
+ }
189
+ if (body.startsWith("{") || body.startsWith("[")) {
190
+ try {
191
+ const parsed = JSON.parse(body);
192
+ const candidate = typeof parsed.error === "string" ? parsed.error : typeof parsed.message === "string" ? parsed.message : typeof parsed.detail === "string" ? parsed.detail : "";
193
+ if (candidate) {
194
+ return `API error: ${status} ${truncateFeedbackError(candidate)}`;
195
+ }
196
+ } catch (e4) {
197
+ }
198
+ }
199
+ if (isLikelyHtmlChallenge(body)) {
200
+ return status === 403 ? "API error: 403 blocked by Cloudflare challenge" : `API error: ${status} blocked by upstream challenge page`;
201
+ }
202
+ return `API error: ${status} ${truncateFeedbackError(body)}`;
203
+ }
204
+ function isLikelyHtmlChallenge(body) {
205
+ const lower = body.toLowerCase();
206
+ return lower.includes("<!doctype html") || lower.includes("<html") || lower.includes("__cf_chl") || lower.includes("just a moment") || lower.includes("cloudflare");
207
+ }
208
+ function truncateFeedbackError(text, max = 220) {
209
+ if (text.length <= max) {
210
+ return text;
211
+ }
212
+ return `${text.slice(0, Math.max(0, max - 1))}\u2026`;
213
+ }
180
214
  async function getDeviceId() {
181
- const deviceIdPath = `${_chunkGIZL57FEcjs.AUTOHAND_PATHS.feedback}/.device-id`;
215
+ const deviceIdPath = `${_chunkSEKD5FH3cjs.AUTOHAND_PATHS.feedback}/.device-id`;
182
216
  try {
183
217
  if (await _fsextra2.default.pathExists(deviceIdPath)) {
184
218
  return (await _fsextra2.default.readFile(deviceIdPath, "utf8")).trim();
185
219
  }
186
- } catch (e4) {
220
+ } catch (e5) {
187
221
  }
188
222
  const deviceId = `anon_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
189
223
  try {
190
- await _fsextra2.default.ensureDir(_chunkGIZL57FEcjs.AUTOHAND_PATHS.feedback);
224
+ await _fsextra2.default.ensureDir(_chunkSEKD5FH3cjs.AUTOHAND_PATHS.feedback);
191
225
  await _fsextra2.default.writeFile(deviceIdPath, deviceId);
192
- } catch (e5) {
226
+ } catch (e6) {
193
227
  }
194
228
  return deviceId;
195
229
  }
@@ -1,16 +1,16 @@
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 _chunkCH4SPVFDcjs = require('./chunk-CH4SPVFD.cjs');
3
+ var _chunkD6VG7B5Xcjs = require('./chunk-D6VG7B5X.cjs');
4
4
 
5
5
 
6
6
 
7
- var _chunkXBUMKEFNcjs = require('./chunk-XBUMKEFN.cjs');
7
+ var _chunkFPAE6ORVcjs = require('./chunk-FPAE6ORV.cjs');
8
8
 
9
9
 
10
- var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
10
+ var _chunkSEKD5FH3cjs = require('./chunk-SEKD5FH3.cjs');
11
11
 
12
12
 
13
- var _chunk2U5HFVROcjs = require('./chunk-2U5HFVRO.cjs');
13
+ var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
14
14
 
15
15
  // src/commands/share.ts
16
16
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -179,7 +179,7 @@ function serializeSession(session, options) {
179
179
  const toolUsage = extractToolUsage(messages);
180
180
  const gitDiff = options.gitDiff ? parseGitDiff(options.gitDiff) : void 0;
181
181
  const client = {
182
- cliVersion: _chunkCH4SPVFDcjs.package_default.version,
182
+ cliVersion: _chunkD6VG7B5Xcjs.package_default.version,
183
183
  platform: process.platform,
184
184
  deviceId: options.deviceId
185
185
  };
@@ -215,15 +215,15 @@ var DEFAULT_CONFIG = {
215
215
  // 30s for large payloads
216
216
  maxRetries: 3,
217
217
  offlineQueue: true,
218
- cliVersion: _chunkCH4SPVFDcjs.package_default.version
218
+ cliVersion: _chunkD6VG7B5Xcjs.package_default.version
219
219
  };
220
220
  var ShareApiClient = class {
221
221
  constructor(configOverrides) {
222
222
  this.deviceId = null;
223
223
  this.config = { ...DEFAULT_CONFIG, ...configOverrides };
224
- const dataDir = _path2.default.join(_chunkGIZL57FEcjs.AUTOHAND_PATHS.config, "share");
224
+ const dataDir = _path2.default.join(_chunkSEKD5FH3cjs.AUTOHAND_PATHS.config, "share");
225
225
  this.queuePath = _path2.default.join(dataDir, "queue.json");
226
- this.deviceIdPath = _path2.default.join(_chunkGIZL57FEcjs.AUTOHAND_PATHS.feedback, ".device-id");
226
+ this.deviceIdPath = _path2.default.join(_chunkSEKD5FH3cjs.AUTOHAND_PATHS.feedback, ".device-id");
227
227
  }
228
228
  // ============ Device ID ============
229
229
  /**
@@ -454,7 +454,7 @@ function terminalLink(url, text) {
454
454
  }
455
455
  var metadata = {
456
456
  command: "/share",
457
- description: _chunk2U5HFVROcjs.t.call(void 0, "commands.share.description"),
457
+ description: _chunkRVUQKMXXcjs.t.call(void 0, "commands.share.description"),
458
458
  implemented: true
459
459
  };
460
460
  async function execute(_args, context) {
@@ -498,7 +498,7 @@ async function execute(_args, context) {
498
498
  { label: "Public - Anyone with the link can view", value: "public" },
499
499
  { label: "Private - Requires one-time passcode", value: "private" }
500
500
  ];
501
- const visibilityResult = await _chunkXBUMKEFNcjs.showModal.call(void 0, {
501
+ const visibilityResult = await _chunkFPAE6ORVcjs.showModal.call(void 0, {
502
502
  title: "Share visibility:",
503
503
  options: visibilityOptions
504
504
  });
@@ -507,7 +507,7 @@ async function execute(_args, context) {
507
507
  return;
508
508
  }
509
509
  const visibility = visibilityResult.value;
510
- const confirmed = await _chunkXBUMKEFNcjs.showConfirm.call(void 0, {
510
+ const confirmed = await _chunkFPAE6ORVcjs.showConfirm.call(void 0, {
511
511
  title: `Share this session as ${visibility}?`,
512
512
  defaultValue: true
513
513
  });
@@ -516,7 +516,7 @@ async function execute(_args, context) {
516
516
  return;
517
517
  }
518
518
  console.log();
519
- const spinner = _ora2.default.call(void 0, _chunk2U5HFVROcjs.t.call(void 0, "commands.share.generating")).start();
519
+ const spinner = _ora2.default.call(void 0, _chunkRVUQKMXXcjs.t.call(void 0, "commands.share.generating")).start();
520
520
  try {
521
521
  const payload = serializeSession(session, {
522
522
  model: context.model,
@@ -529,7 +529,7 @@ async function execute(_args, context) {
529
529
  spinner.stop();
530
530
  if (response.success && response.url) {
531
531
  console.log();
532
- console.log(_chalk2.default.green.bold(_chunk2U5HFVROcjs.t.call(void 0, "commands.share.success", { url: terminalLink(response.url) })));
532
+ console.log(_chalk2.default.green.bold(_chunkRVUQKMXXcjs.t.call(void 0, "commands.share.success", { url: terminalLink(response.url) })));
533
533
  if (visibility === "private" && response.passcode) {
534
534
  console.log();
535
535
  console.log(`${_chalk2.default.bold("Passcode:")} ${_chalk2.default.yellow.bold(response.passcode)}`);
@@ -543,14 +543,14 @@ async function execute(_args, context) {
543
543
  } else {
544
544
  console.log();
545
545
  console.log(
546
- _chalk2.default.red(_chunk2U5HFVROcjs.t.call(void 0, "commands.share.failed", { error: response.error || "Unknown error" }))
546
+ _chalk2.default.red(_chunkRVUQKMXXcjs.t.call(void 0, "commands.share.failed", { error: response.error || "Unknown error" }))
547
547
  );
548
548
  console.log();
549
549
  }
550
550
  } catch (error) {
551
551
  spinner.stop();
552
552
  console.log();
553
- console.log(_chalk2.default.red(_chunk2U5HFVROcjs.t.call(void 0, "commands.share.failed", { error: error.message })));
553
+ console.log(_chalk2.default.red(_chunkRVUQKMXXcjs.t.call(void 0, "commands.share.failed", { error: error.message })));
554
554
  console.log();
555
555
  }
556
556
  }