autohand-cli 0.7.13 → 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-2JMWWYMZ.js → chunk-2ELK5DMH.js} +44 -10
  57. package/dist/chunk-2JYIR3EC.cjs +1176 -0
  58. package/dist/{chunk-RRZFJIIB.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-ONAY5SD2.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-METF3I6W.cjs → chunk-D6VG7B5X.cjs} +10 -4
  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-7YX3OD4B.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-KW4SQWBU.cjs → chunk-H6ZGZEBG.cjs} +57 -23
  112. package/dist/{chunk-CTJILRNQ.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-B5HIJJ4B.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-XQLWN4Y3.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-R3H25HQZ.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-B2K7JZRW.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-3AWZFG5G.js → chunk-QUFAULH7.js} +10 -4
  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-YESQ7XR3.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-RU24K66K.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 +8671 -12373
  236. package/dist/index.js +8739 -12441
  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 +10 -4
  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-BIZH6I2U.cjs +0 -11
  324. package/dist/about-PPIVMAPA.js +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-AXP53LTU.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-TBF2CUJR.js +0 -14
  342. package/dist/feedback-XXHPSUUO.cjs +0 -14
  343. package/dist/formatters-N5IJKYZY.cjs +0 -8
  344. package/dist/formatters-UG6VZJJ5.js +0 -8
  345. package/dist/help-4VSLIMP4.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-IE6UTPKF.cjs +0 -13
  380. package/dist/share-NQXIMFSQ.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-3FFAL4SL.js +0 -55
  385. package/dist/slashCommands-JASFW3E4.cjs +0 -55
  386. package/dist/status-4NDGXPIM.js +0 -10
  387. package/dist/status-RHJIBHP2.cjs +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
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  safePrompt
3
- } from "./chunk-YHGTBPEC.js";
3
+ } from "./chunk-VNQ5GL34.js";
4
4
  import {
5
5
  t
6
- } from "./chunk-NMWEDN4Z.js";
6
+ } from "./chunk-HFMLWH7B.js";
7
7
 
8
8
  // src/commands/hooks.ts
9
9
  import chalk from "chalk";
10
10
  var HOOK_EVENTS = [
11
11
  "session-start",
12
12
  "session-end",
13
+ "pre-clear",
13
14
  "pre-prompt",
14
15
  "pre-tool",
15
16
  "post-tool",
@@ -27,11 +28,19 @@ var HOOK_EVENTS = [
27
28
  "automode:resume",
28
29
  "automode:cancel",
29
30
  "automode:complete",
30
- "automode:error"
31
+ "automode:error",
32
+ // Team events
33
+ "team-created",
34
+ "teammate-spawned",
35
+ "teammate-idle",
36
+ "task-assigned",
37
+ "task-completed",
38
+ "team-shutdown"
31
39
  ];
32
40
  var EVENT_DESCRIPTIONS = {
33
41
  "session-start": "When a session begins",
34
42
  "session-end": "When a session ends",
43
+ "pre-clear": "Before memory extraction on /clear or /new",
35
44
  "pre-prompt": "Before processing user input",
36
45
  "pre-tool": "Before a tool executes",
37
46
  "post-tool": "After a tool completes",
@@ -50,7 +59,14 @@ var EVENT_DESCRIPTIONS = {
50
59
  "automode:resume": "When auto-mode is resumed",
51
60
  "automode:cancel": "When auto-mode is cancelled",
52
61
  "automode:complete": "When auto-mode completes",
53
- "automode:error": "When auto-mode encounters an error"
62
+ "automode:error": "When auto-mode encounters an error",
63
+ // Team events
64
+ "team-created": "When a team is created",
65
+ "teammate-spawned": "When a teammate process starts",
66
+ "teammate-idle": "When a teammate becomes idle",
67
+ "task-assigned": "When a task is assigned to a teammate",
68
+ "task-completed": "When a task is marked as done",
69
+ "team-shutdown": "When team cleanup completes"
54
70
  };
55
71
  var HOOK_ICONS = {
56
72
  // Script-based hooks
@@ -1,15 +1,16 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkBRXIEKJ3cjs = require('./chunk-BRXIEKJ3.cjs');
3
+ var _chunkAMT2UZBIcjs = require('./chunk-AMT2UZBI.cjs');
4
4
 
5
5
 
6
- var _chunk2U5HFVROcjs = require('./chunk-2U5HFVRO.cjs');
6
+ var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
7
7
 
8
8
  // src/commands/hooks.ts
9
9
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
10
10
  var HOOK_EVENTS = [
11
11
  "session-start",
12
12
  "session-end",
13
+ "pre-clear",
13
14
  "pre-prompt",
14
15
  "pre-tool",
15
16
  "post-tool",
@@ -27,11 +28,19 @@ var HOOK_EVENTS = [
27
28
  "automode:resume",
28
29
  "automode:cancel",
29
30
  "automode:complete",
30
- "automode:error"
31
+ "automode:error",
32
+ // Team events
33
+ "team-created",
34
+ "teammate-spawned",
35
+ "teammate-idle",
36
+ "task-assigned",
37
+ "task-completed",
38
+ "team-shutdown"
31
39
  ];
32
40
  var EVENT_DESCRIPTIONS = {
33
41
  "session-start": "When a session begins",
34
42
  "session-end": "When a session ends",
43
+ "pre-clear": "Before memory extraction on /clear or /new",
35
44
  "pre-prompt": "Before processing user input",
36
45
  "pre-tool": "Before a tool executes",
37
46
  "post-tool": "After a tool completes",
@@ -50,7 +59,14 @@ var EVENT_DESCRIPTIONS = {
50
59
  "automode:resume": "When auto-mode is resumed",
51
60
  "automode:cancel": "When auto-mode is cancelled",
52
61
  "automode:complete": "When auto-mode completes",
53
- "automode:error": "When auto-mode encounters an error"
62
+ "automode:error": "When auto-mode encounters an error",
63
+ // Team events
64
+ "team-created": "When a team is created",
65
+ "teammate-spawned": "When a teammate process starts",
66
+ "teammate-idle": "When a teammate becomes idle",
67
+ "task-assigned": "When a task is assigned to a teammate",
68
+ "task-completed": "When a task is marked as done",
69
+ "team-shutdown": "When team cleanup completes"
54
70
  };
55
71
  var HOOK_ICONS = {
56
72
  // Script-based hooks
@@ -119,11 +135,11 @@ function getShortCommand(command) {
119
135
  }
120
136
  function displayHooksList(allHooks) {
121
137
  console.log();
122
- console.log(_chalk2.default.bold.cyan(_chunk2U5HFVROcjs.t.call(void 0, "commands.hooks.title")));
138
+ console.log(_chalk2.default.bold.cyan(_chunkRVUQKMXXcjs.t.call(void 0, "commands.hooks.title")));
123
139
  console.log(_chalk2.default.gray(" Lifecycle hooks run shell commands on events"));
124
140
  console.log();
125
141
  if (allHooks.length === 0) {
126
- console.log(_chalk2.default.gray(` ${_chunk2U5HFVROcjs.t.call(void 0, "commands.hooks.noHooks")}`));
142
+ console.log(_chalk2.default.gray(` ${_chunkRVUQKMXXcjs.t.call(void 0, "commands.hooks.noHooks")}`));
127
143
  console.log();
128
144
  return;
129
145
  }
@@ -197,7 +213,7 @@ async function hooks(ctx) {
197
213
  const toggleLabel = settings.enabled !== false ? "\u25EF Disable all hooks" : "\u25CF Enable all hooks";
198
214
  choices.push({ name: "toggle_global", message: toggleLabel });
199
215
  }
200
- const actionResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
216
+ const actionResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
201
217
  type: "select",
202
218
  name: "action",
203
219
  message: "Action",
@@ -233,7 +249,7 @@ async function toggleHooksMulti(manager, allHooks) {
233
249
  enabled: h.enabled !== false
234
250
  };
235
251
  });
236
- const result = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
252
+ const result = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
237
253
  type: "select",
238
254
  name: "selected",
239
255
  message: "Toggle hooks (select to enable/disable)",
@@ -259,26 +275,26 @@ async function addHook(manager) {
259
275
  name: e,
260
276
  message: `${e} ${_chalk2.default.dim(`- ${EVENT_DESCRIPTIONS[e]}`)}`
261
277
  }));
262
- const eventResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
278
+ const eventResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
263
279
  type: "select",
264
280
  name: "event",
265
281
  message: "Event to hook into",
266
282
  choices: eventChoices
267
283
  });
268
284
  if (!eventResult) return;
269
- const commandResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
285
+ const commandResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
270
286
  type: "input",
271
287
  name: "command",
272
288
  message: "Shell command to execute",
273
289
  validate: (val) => typeof val === "string" && val.trim().length > 0 || "Command is required"
274
290
  });
275
291
  if (!commandResult || !commandResult.command) return;
276
- const descResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
292
+ const descResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
277
293
  type: "input",
278
294
  name: "description",
279
295
  message: "Description (optional)"
280
296
  });
281
- const asyncResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
297
+ const asyncResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
282
298
  type: "confirm",
283
299
  name: "async",
284
300
  message: "Run asynchronously (non-blocking)?",
@@ -303,7 +319,7 @@ async function removeHook(manager, allHooks) {
303
319
  message: `${eventTag} ${desc2}`
304
320
  };
305
321
  });
306
- const selectResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
322
+ const selectResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
307
323
  type: "select",
308
324
  name: "hookIndex",
309
325
  message: "Select hook to remove",
@@ -315,7 +331,7 @@ async function removeHook(manager, allHooks) {
315
331
  const eventHooks = allHooks.filter((h) => h.event === hook.event);
316
332
  const eventIndex = eventHooks.indexOf(hook);
317
333
  const desc = hook.description || getShortCommand(hook.command);
318
- const confirmResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
334
+ const confirmResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
319
335
  type: "confirm",
320
336
  name: "confirm",
321
337
  message: `Remove "${desc}"?`,
@@ -338,7 +354,7 @@ async function testHook(manager, allHooks) {
338
354
  message: `${eventTag} ${desc}`
339
355
  };
340
356
  });
341
- const selectResult = await _chunkBRXIEKJ3cjs.safePrompt.call(void 0, {
357
+ const selectResult = await _chunkAMT2UZBIcjs.safePrompt.call(void 0, {
342
358
  type: "select",
343
359
  name: "hookIndex",
344
360
  message: "Select hook to test",
@@ -369,7 +385,7 @@ async function testHook(manager, allHooks) {
369
385
  }
370
386
  var metadata = {
371
387
  command: "/hooks",
372
- description: _chunk2U5HFVROcjs.t.call(void 0, "commands.hooks.description"),
388
+ description: _chunkRVUQKMXXcjs.t.call(void 0, "commands.hooks.description"),
373
389
  implemented: true
374
390
  };
375
391
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-NMWEDN4Z.js";
3
+ } from "./chunk-HFMLWH7B.js";
4
4
 
5
5
  // src/commands/memory.ts
6
6
  import chalk from "chalk";
@@ -26,7 +26,9 @@ var AUTOHAND_PATHS = {
26
26
  /** Plan files for plan mode */
27
27
  plans: path.join(AUTOHAND_HOME, "plans"),
28
28
  /** MCP community registry cache */
29
- mcpCache: path.join(AUTOHAND_HOME, "community-mcp", "cache")
29
+ mcpCache: path.join(AUTOHAND_HOME, "community-mcp", "cache"),
30
+ /** Auto-report data */
31
+ reporting: path.join(AUTOHAND_HOME, "reporting")
30
32
  };
31
33
  var AUTOHAND_FILES = {
32
34
  /** Main config file */
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  DEFAULT_SYNC_CONFIG,
3
3
  createSyncService
4
- } from "./chunk-P5VDZ6PV.js";
4
+ } from "./chunk-3PDTTAKJ.js";
5
5
  import {
6
6
  getAuthClient
7
- } from "./chunk-D2XFTCRP.js";
7
+ } from "./chunk-HQ7YZKXE.js";
8
8
  import {
9
9
  safePrompt
10
- } from "./chunk-YHGTBPEC.js";
10
+ } from "./chunk-VNQ5GL34.js";
11
11
  import {
12
12
  saveConfig
13
- } from "./chunk-ZBIBLOZL.js";
13
+ } from "./chunk-WTNBX2JO.js";
14
14
  import {
15
15
  AUTH_CONFIG
16
- } from "./chunk-PWLLLJHU.js";
16
+ } from "./chunk-EGFT4PGW.js";
17
17
  import {
18
18
  t
19
- } from "./chunk-NMWEDN4Z.js";
19
+ } from "./chunk-HFMLWH7B.js";
20
20
 
21
21
  // src/commands/login.ts
22
22
  import chalk from "chalk";
@@ -141,7 +141,7 @@ async function checkAndRestoreSyncData(token, userId, config) {
141
141
  enabled: true
142
142
  }
143
143
  });
144
- const { getSyncApiClient } = await import("./SyncApiClient-AYXYSOJM.js");
144
+ const { getSyncApiClient } = await import("./SyncApiClient-LVIO4C2S.js");
145
145
  const apiClient = getSyncApiClient();
146
146
  const remoteManifest = await apiClient.getRemoteManifest(token);
147
147
  if (!remoteManifest || remoteManifest.files.length === 0) {
@@ -2,7 +2,7 @@ import {
2
2
  getCurrentLocale,
3
3
  onLanguageChange,
4
4
  t
5
- } from "./chunk-NMWEDN4Z.js";
5
+ } from "./chunk-HFMLWH7B.js";
6
6
 
7
7
  // src/ui/i18n/I18nContext.tsx
8
8
  import { createContext, useContext, useState, useEffect, useMemo } from "react";
@@ -0,0 +1,123 @@
1
+ // src/utils/gitIgnore.ts
2
+ import fs from "fs-extra";
3
+ import path from "path";
4
+ import ignore from "ignore";
5
+ var GitIgnoreParser = class {
6
+ constructor(projectRoot, extraPatterns) {
7
+ this.extraPatterns = extraPatterns;
8
+ this.cache = /* @__PURE__ */ new Map();
9
+ this.processedExtraPatterns = [];
10
+ this.projectRoot = path.resolve(projectRoot);
11
+ if (this.extraPatterns?.length) {
12
+ this.processedExtraPatterns = this.processPatterns(this.extraPatterns, ".");
13
+ }
14
+ }
15
+ isIgnored(filePath) {
16
+ if (!filePath) {
17
+ return false;
18
+ }
19
+ const absoluteFilePath = path.resolve(this.projectRoot, filePath);
20
+ if (!absoluteFilePath.startsWith(this.projectRoot)) {
21
+ return false;
22
+ }
23
+ const relativePath = path.relative(this.projectRoot, absoluteFilePath);
24
+ if (!relativePath || relativePath.startsWith("..")) {
25
+ return false;
26
+ }
27
+ const normalizedPath = relativePath.replace(/\\/g, "/");
28
+ const ig = ignore();
29
+ ig.add(".git");
30
+ if (this.globalPatterns === void 0) {
31
+ const excludeFile = path.join(this.projectRoot, ".git", "info", "exclude");
32
+ this.globalPatterns = fs.existsSync(excludeFile) ? this.loadPatternsForFile(excludeFile) : [];
33
+ }
34
+ ig.add(this.globalPatterns);
35
+ const pathParts = relativePath.split(path.sep);
36
+ const dirsToVisit = [];
37
+ let current = this.projectRoot;
38
+ dirsToVisit.push(current);
39
+ for (let i = 0; i < pathParts.length - 1; i++) {
40
+ current = path.join(current, pathParts[i]);
41
+ dirsToVisit.push(current);
42
+ }
43
+ for (const dir of dirsToVisit) {
44
+ const relativeDir = path.relative(this.projectRoot, dir);
45
+ if (relativeDir) {
46
+ const normalizedDir = relativeDir.replace(/\\/g, "/");
47
+ const igPlusExtras = ignore().add(ig).add(this.processedExtraPatterns);
48
+ if (igPlusExtras.ignores(normalizedDir)) {
49
+ break;
50
+ }
51
+ }
52
+ if (this.cache.has(dir)) {
53
+ ig.add(this.cache.get(dir) ?? []);
54
+ } else {
55
+ const gitignorePath = path.join(dir, ".gitignore");
56
+ if (fs.existsSync(gitignorePath)) {
57
+ const patterns = this.loadPatternsForFile(gitignorePath);
58
+ this.cache.set(dir, patterns);
59
+ ig.add(patterns);
60
+ } else {
61
+ this.cache.set(dir, []);
62
+ }
63
+ }
64
+ }
65
+ ig.add(this.processedExtraPatterns);
66
+ return ig.ignores(normalizedPath);
67
+ }
68
+ loadPatternsForFile(patternsFilePath) {
69
+ let content = "";
70
+ try {
71
+ content = fs.readFileSync(patternsFilePath, "utf8");
72
+ } catch {
73
+ return [];
74
+ }
75
+ const isExcludeFile = patternsFilePath.endsWith(path.join(".git", "info", "exclude"));
76
+ const relativeBaseDir = isExcludeFile ? "." : path.dirname(path.relative(this.projectRoot, patternsFilePath)).split(path.sep).join(path.posix.sep);
77
+ const rawPatterns = content.split("\n");
78
+ return this.processPatterns(rawPatterns, relativeBaseDir);
79
+ }
80
+ processPatterns(rawPatterns, relativeBaseDir) {
81
+ return rawPatterns.map((pattern) => pattern.trimStart()).filter((pattern) => pattern && !pattern.startsWith("#")).map((pattern) => this.normalizePattern(pattern, relativeBaseDir)).filter(Boolean);
82
+ }
83
+ normalizePattern(pattern, relativeBaseDir) {
84
+ let p = pattern;
85
+ const isNegative = p.startsWith("!");
86
+ if (isNegative) {
87
+ p = p.slice(1);
88
+ }
89
+ const isAnchored = p.startsWith("/");
90
+ if (isAnchored) {
91
+ p = p.slice(1);
92
+ }
93
+ if (!p) {
94
+ return "";
95
+ }
96
+ let newPattern = p;
97
+ if (relativeBaseDir && relativeBaseDir !== ".") {
98
+ if (!isAnchored && !p.includes("/")) {
99
+ newPattern = path.posix.join("**", p);
100
+ }
101
+ newPattern = path.posix.join(relativeBaseDir, newPattern);
102
+ if (!newPattern.startsWith("/")) {
103
+ newPattern = "/" + newPattern;
104
+ }
105
+ }
106
+ if (isAnchored && !newPattern.startsWith("/")) {
107
+ newPattern = "/" + newPattern;
108
+ }
109
+ if (isNegative) {
110
+ newPattern = "!" + newPattern;
111
+ }
112
+ return newPattern;
113
+ }
114
+ };
115
+
116
+ export {
117
+ GitIgnoreParser
118
+ };
119
+ /**
120
+ * @license
121
+ * Copyright 2025 Autohand AI LLC
122
+ * SPDX-License-Identifier: Apache-2.0
123
+ */
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-QHPFA6OE.js";
4
4
  import {
5
5
  safePrompt
6
- } from "./chunk-YHGTBPEC.js";
6
+ } from "./chunk-VNQ5GL34.js";
7
7
  import {
8
8
  AUTOHAND_PATHS
9
- } from "./chunk-PWLLLJHU.js";
9
+ } from "./chunk-EGFT4PGW.js";
10
10
 
11
11
  // src/commands/skills-new.ts
12
12
  import path from "path";
@@ -0,0 +1,42 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/commands/message.ts
2
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
3
+ var metadata = {
4
+ command: "/message",
5
+ description: "Send a direct message to a teammate",
6
+ implemented: true
7
+ };
8
+ async function message(ctx, args) {
9
+ if (!ctx.teamManager) {
10
+ return _chalk2.default.yellow("Team manager not available.");
11
+ }
12
+ const team = ctx.teamManager.getTeam();
13
+ if (!team) {
14
+ return _chalk2.default.yellow("No active team.");
15
+ }
16
+ if (args.length < 2) {
17
+ return [
18
+ _chalk2.default.bold("Usage:"),
19
+ ` ${_chalk2.default.cyan("/message <name> <text>")}`,
20
+ "",
21
+ _chalk2.default.gray("Example: /message hunter also check src/legacy/")
22
+ ].join("\n");
23
+ }
24
+ const [targetName, ...rest] = args;
25
+ const content = rest.join(" ");
26
+ try {
27
+ ctx.teamManager.sendMessageTo(targetName, "lead", content);
28
+ return _chalk2.default.green(`Message sent to ${targetName}.`);
29
+ } catch (err) {
30
+ return _chalk2.default.red(err.message);
31
+ }
32
+ }
33
+
34
+
35
+
36
+
37
+ exports.metadata = metadata; exports.message = message;
38
+ /**
39
+ * @license
40
+ * Copyright 2025 Autohand AI LLC
41
+ * SPDX-License-Identifier: Apache-2.0
42
+ */
@@ -0,0 +1,218 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/utils/versionCheck.ts
2
+ var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
3
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
4
+ var _os = require('os'); var _os2 = _interopRequireDefault(_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 = _path2.default.join(_os2.default.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 _path2.default.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 = _nullishCoalesce(_nullishCoalesce(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 _fsextra2.default.pathExists(cacheFile)) {
79
+ const data = await _fsextra2.default.readJson(cacheFile);
80
+ return data;
81
+ }
82
+ } catch (e) {
83
+ }
84
+ return null;
85
+ }
86
+ async function writeCache(channel, cache) {
87
+ try {
88
+ const cacheFile = getCacheFile(channel);
89
+ await _fsextra2.default.ensureDir(_path2.default.dirname(cacheFile));
90
+ await _fsextra2.default.writeJson(cacheFile, cache, { spaces: 2 });
91
+ } catch (e2) {
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 (e3) {
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 (e4) {
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 (_optionalChain([latestPrerelease, 'optionalAccess', _ => _.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 (e5) {
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
+
211
+
212
+
213
+ exports.getInstallHint = getInstallHint; exports.checkForUpdates = checkForUpdates;
214
+ /**
215
+ * @license
216
+ * Copyright 2025 Autohand AI LLC
217
+ * SPDX-License-Identifier: Apache-2.0
218
+ */