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
@@ -1,18 +1,50 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
3
 
4
- var _chunkAIH6GUGBcjs = require('./chunk-AIH6GUGB.cjs');
4
+ var _chunkYDCDGTK6cjs = require('./chunk-YDCDGTK6.cjs');
5
5
 
6
6
  // src/ui/ink/components/Modal.tsx
7
7
  var _react = require('react');
8
8
  var _ink = require('ink');
9
9
  var _jsxruntime = require('react/jsx-runtime');
10
10
  var OTHER_VALUE = "__other__";
11
+ function resolveInitialCursor(mode, optionsLength, initialIndex, defaultValue) {
12
+ if (mode === "confirm") {
13
+ return defaultValue === false ? 1 : 0;
14
+ }
15
+ if (typeof initialIndex !== "number" || !Number.isFinite(initialIndex) || optionsLength <= 0) {
16
+ return 0;
17
+ }
18
+ return Math.max(0, Math.min(optionsLength - 1, Math.floor(initialIndex)));
19
+ }
20
+ function unmountAndResolve(instance, value, resolve) {
21
+ instance.unmount();
22
+ process.nextTick(() => resolve(value));
23
+ }
11
24
  function Modal(props) {
12
- const { t } = _chunkAIH6GUGBcjs.useTranslation.call(void 0, );
25
+ const { t } = _chunkYDCDGTK6cjs.useTranslation.call(void 0, );
13
26
  const { title, onCancel } = props;
14
27
  const mode = "mode" in props ? props.mode : "select";
15
- const [cursor, setCursor] = _react.useState.call(void 0, 0);
28
+ const selectOptionCount = mode === "select" && "options" in props ? props.options.length + ("allowCustomInput" in props && props.allowCustomInput ? 1 : 0) : 0;
29
+ const confirmDefaultValue = mode === "confirm" && typeof props.defaultValue === "boolean" ? props.defaultValue : void 0;
30
+ const maxVisible = mode === "select" && "maxVisible" in props && typeof props.maxVisible === "number" ? props.maxVisible : 10;
31
+ const [cursor, setCursor] = _react.useState.call(void 0,
32
+ () => resolveInitialCursor(
33
+ mode === "confirm" ? "confirm" : "select",
34
+ mode === "confirm" ? 2 : selectOptionCount,
35
+ mode === "select" && "initialIndex" in props ? props.initialIndex : void 0,
36
+ confirmDefaultValue
37
+ )
38
+ );
39
+ const [windowStart, setWindowStart] = _react.useState.call(void 0, () => {
40
+ const initial = resolveInitialCursor(
41
+ mode === "confirm" ? "confirm" : "select",
42
+ mode === "confirm" ? 2 : selectOptionCount,
43
+ mode === "select" && "initialIndex" in props ? props.initialIndex : void 0,
44
+ confirmDefaultValue
45
+ );
46
+ return Math.max(0, initial - Math.floor(maxVisible / 2));
47
+ });
16
48
  const [customInput, setCustomInput] = _react.useState.call(void 0, "");
17
49
  const [isCustomMode, setIsCustomMode] = _react.useState.call(void 0, false);
18
50
  const [inputValue, setInputValue] = _react.useState.call(void 0, () => {
@@ -44,12 +76,6 @@ function Modal(props) {
44
76
  }
45
77
  return [];
46
78
  }, [mode, props, t]);
47
- _react.useState.call(void 0, () => {
48
- if (mode === "confirm" && "defaultValue" in props) {
49
- const defaultIdx = props.defaultValue === false ? 1 : 0;
50
- setCursor(defaultIdx);
51
- }
52
- });
53
79
  const hasNoChoices = mode === "select" && choices.length === 0;
54
80
  const findNextEnabled = _react.useCallback.call(void 0,
55
81
  (from, direction) => {
@@ -138,11 +164,27 @@ function Modal(props) {
138
164
  return;
139
165
  }
140
166
  if (key.upArrow) {
141
- setCursor((prev) => findNextEnabled(prev, -1));
167
+ setCursor((prev) => {
168
+ const next = findNextEnabled(prev, -1);
169
+ setWindowStart((ws) => {
170
+ if (next < ws) return next;
171
+ if (next >= ws + maxVisible) return Math.max(0, next - maxVisible + 1);
172
+ return ws;
173
+ });
174
+ return next;
175
+ });
142
176
  return;
143
177
  }
144
178
  if (key.downArrow) {
145
- setCursor((prev) => findNextEnabled(prev, 1));
179
+ setCursor((prev) => {
180
+ const next = findNextEnabled(prev, 1);
181
+ setWindowStart((ws) => {
182
+ if (next >= ws + maxVisible) return next - maxVisible + 1;
183
+ if (next < ws) return next;
184
+ return ws;
185
+ });
186
+ return next;
187
+ });
146
188
  return;
147
189
  }
148
190
  if (char && char >= "1" && char <= "9") {
@@ -191,7 +233,11 @@ function Modal(props) {
191
233
  if (hasNoChoices) {
192
234
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: t("ui.noOptionsAvailable") }) });
193
235
  }
194
- return choices.map((choice, i) => {
236
+ const needsScroll = choices.length > maxVisible;
237
+ const windowEnd = Math.min(windowStart + maxVisible, choices.length);
238
+ const visibleChoices = needsScroll ? choices.slice(windowStart, windowEnd) : choices;
239
+ const items = visibleChoices.map((choice, vi) => {
240
+ const i = needsScroll ? windowStart + vi : vi;
195
241
  const isSelected = i === cursor;
196
242
  const isDisabled = choice.disabled;
197
243
  let color;
@@ -214,6 +260,23 @@ function Modal(props) {
214
260
  ] })
215
261
  ] }, `${choice.value}-${i}`);
216
262
  });
263
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
264
+ needsScroll && windowStart > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
265
+ " ",
266
+ "\u2191",
267
+ " ",
268
+ windowStart,
269
+ " more above"
270
+ ] }),
271
+ items,
272
+ needsScroll && windowEnd < choices.length && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
273
+ " ",
274
+ "\u2193",
275
+ " ",
276
+ choices.length - windowEnd,
277
+ " more below"
278
+ ] })
279
+ ] });
217
280
  };
218
281
  const renderHint = () => {
219
282
  if (mode === "input" || mode === "password") {
@@ -236,31 +299,30 @@ function Modal(props) {
236
299
  ] });
237
300
  }
238
301
  async function showModal(options) {
239
- const { title, options: modalOptions, allowCustomInput, multiSelect } = options;
302
+ const { title, options: modalOptions, allowCustomInput, multiSelect, maxVisible } = options;
240
303
  if (!process.stdout.isTTY) {
241
304
  return null;
242
305
  }
243
306
  return new Promise((resolve) => {
244
307
  let completed = false;
245
308
  const instance = _ink.render.call(void 0,
246
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAIH6GUGBcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
309
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
247
310
  Modal,
248
311
  {
249
312
  title,
250
313
  options: modalOptions,
251
314
  allowCustomInput,
252
315
  multiSelect,
316
+ maxVisible,
253
317
  onSelect: (option) => {
254
318
  if (completed) return;
255
319
  completed = true;
256
- instance.unmount();
257
- resolve(option);
320
+ unmountAndResolve(instance, option, resolve);
258
321
  },
259
322
  onCancel: () => {
260
323
  if (completed) return;
261
324
  completed = true;
262
- instance.unmount();
263
- resolve(null);
325
+ unmountAndResolve(instance, null, resolve);
264
326
  }
265
327
  }
266
328
  ) }),
@@ -275,7 +337,7 @@ async function showConfirm(options) {
275
337
  return new Promise((resolve) => {
276
338
  let completed = false;
277
339
  const instance = _ink.render.call(void 0,
278
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAIH6GUGBcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
340
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
279
341
  Modal,
280
342
  {
281
343
  mode: "confirm",
@@ -286,14 +348,12 @@ async function showConfirm(options) {
286
348
  onConfirm: (confirmed) => {
287
349
  if (completed) return;
288
350
  completed = true;
289
- instance.unmount();
290
- resolve(confirmed);
351
+ unmountAndResolve(instance, confirmed, resolve);
291
352
  },
292
353
  onCancel: () => {
293
354
  if (completed) return;
294
355
  completed = true;
295
- instance.unmount();
296
- resolve(false);
356
+ unmountAndResolve(instance, false, resolve);
297
357
  }
298
358
  }
299
359
  ) }),
@@ -308,7 +368,7 @@ async function showInput(options) {
308
368
  return new Promise((resolve) => {
309
369
  let completed = false;
310
370
  const instance = _ink.render.call(void 0,
311
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAIH6GUGBcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
371
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
312
372
  Modal,
313
373
  {
314
374
  mode: "input",
@@ -319,14 +379,12 @@ async function showInput(options) {
319
379
  onSubmit: (value) => {
320
380
  if (completed) return;
321
381
  completed = true;
322
- instance.unmount();
323
- resolve(value);
382
+ unmountAndResolve(instance, value, resolve);
324
383
  },
325
384
  onCancel: () => {
326
385
  if (completed) return;
327
386
  completed = true;
328
- instance.unmount();
329
- resolve(null);
387
+ unmountAndResolve(instance, null, resolve);
330
388
  }
331
389
  }
332
390
  ) }),
@@ -341,7 +399,7 @@ async function showPassword(options) {
341
399
  return new Promise((resolve) => {
342
400
  let completed = false;
343
401
  const instance = _ink.render.call(void 0,
344
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAIH6GUGBcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
402
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
345
403
  Modal,
346
404
  {
347
405
  mode: "password",
@@ -351,14 +409,12 @@ async function showPassword(options) {
351
409
  onSubmit: (value) => {
352
410
  if (completed) return;
353
411
  completed = true;
354
- instance.unmount();
355
- resolve(value);
412
+ unmountAndResolve(instance, value, resolve);
356
413
  },
357
414
  onCancel: () => {
358
415
  if (completed) return;
359
416
  completed = true;
360
- instance.unmount();
361
- resolve(null);
417
+ unmountAndResolve(instance, null, resolve);
362
418
  }
363
419
  }
364
420
  ) }),
@@ -372,7 +428,8 @@ async function showPassword(options) {
372
428
 
373
429
 
374
430
 
375
- exports.showModal = showModal; exports.showConfirm = showConfirm; exports.showInput = showInput; exports.showPassword = showPassword;
431
+
432
+ exports.Modal = Modal; exports.showModal = showModal; exports.showConfirm = showConfirm; exports.showInput = showInput; exports.showPassword = showPassword;
376
433
  /**
377
434
  * @license
378
435
  * Copyright 2025 Autohand AI LLC
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-QHPFA6OE.js";
4
4
  import {
5
5
  PROJECT_DIR_NAME
6
- } from "./chunk-PWLLLJHU.js";
6
+ } from "./chunk-EGFT4PGW.js";
7
7
 
8
8
  // src/skills/SkillsRegistry.ts
9
9
  import fs2 from "fs-extra";
@@ -2,10 +2,10 @@ import {
2
2
  showConfirm,
3
3
  showInput,
4
4
  showModal
5
- } from "./chunk-3KBBARKO.js";
5
+ } from "./chunk-5OBNULPU.js";
6
6
  import {
7
7
  t
8
- } from "./chunk-NMWEDN4Z.js";
8
+ } from "./chunk-HFMLWH7B.js";
9
9
 
10
10
  // src/commands/export.ts
11
11
  import chalk from "chalk";
@@ -1,12 +1,6 @@
1
1
  import {
2
2
  AUTOHAND_PATHS
3
- } from "./chunk-PWLLLJHU.js";
4
- import {
5
- t
6
- } from "./chunk-NMWEDN4Z.js";
7
-
8
- // src/commands/agents.ts
9
- import chalk from "chalk";
3
+ } from "./chunk-EGFT4PGW.js";
10
4
 
11
5
  // src/core/agents/AgentRegistry.ts
12
6
  import fs from "fs/promises";
@@ -19,6 +13,42 @@ var AgentConfigSchema = z.object({
19
13
  tools: z.array(z.string()),
20
14
  model: z.string().optional()
21
15
  });
16
+ function extractMarkdownTitle(content) {
17
+ const lines = content.split(/\r?\n/);
18
+ for (const line of lines) {
19
+ const trimmed = line.trim();
20
+ if (!trimmed) continue;
21
+ if (trimmed.startsWith("#")) {
22
+ return trimmed.replace(/^#+\s*/, "").trim() || null;
23
+ }
24
+ return trimmed;
25
+ }
26
+ return null;
27
+ }
28
+ function parseMarkdownAgent(content) {
29
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
30
+ if (!frontmatterMatch) {
31
+ return {
32
+ description: extractMarkdownTitle(content),
33
+ systemPrompt: content,
34
+ tools: []
35
+ };
36
+ }
37
+ const [, frontmatter, body] = frontmatterMatch;
38
+ const meta = {};
39
+ for (const line of frontmatter.split("\n")) {
40
+ const match = line.match(/^(\w+):\s*(.+)$/);
41
+ if (match) {
42
+ meta[match[1]] = match[2].trim();
43
+ }
44
+ }
45
+ return {
46
+ description: meta.description || extractMarkdownTitle(body),
47
+ systemPrompt: body.trim(),
48
+ tools: meta.tools ? meta.tools.split(",").map((t) => t.trim()).filter(Boolean) : [],
49
+ model: meta.model
50
+ };
51
+ }
22
52
  var AgentRegistry = class _AgentRegistry {
23
53
  constructor() {
24
54
  this.agents = /* @__PURE__ */ new Map();
@@ -55,13 +85,14 @@ var AgentRegistry = class _AgentRegistry {
55
85
  for (const extPath of this.externalPaths) {
56
86
  await this.loadAgentsFromDir(extPath, "external");
57
87
  }
88
+ await this.loadBuiltinAgents();
58
89
  }
59
90
  /**
60
91
  * Load agents from a specific directory
61
92
  */
62
93
  async loadAgentsFromDir(dir, source) {
63
94
  try {
64
- if (source === "user") {
95
+ if (source !== "builtin" && source !== "external") {
65
96
  await fs.mkdir(dir, { recursive: true });
66
97
  }
67
98
  const exists = await fs.access(dir).then(() => true).catch(() => false);
@@ -121,15 +152,15 @@ var AgentRegistry = class _AgentRegistry {
121
152
  const name = path.basename(filePath, path.extname(filePath));
122
153
  try {
123
154
  const content = await fs.readFile(filePath, "utf-8");
124
- const description = extractMarkdownTitle(content) || `Agent ${name}`;
155
+ const parsed = parseMarkdownAgent(content);
125
156
  const definition = {
126
157
  name,
127
158
  path: filePath,
128
159
  source,
129
- description,
130
- systemPrompt: content,
131
- tools: [],
132
- model: void 0
160
+ description: parsed.description || `Agent ${name}`,
161
+ systemPrompt: parsed.systemPrompt,
162
+ tools: parsed.tools,
163
+ model: parsed.model
133
164
  };
134
165
  if (!this.agents.has(name)) {
135
166
  this.agents.set(name, definition);
@@ -138,62 +169,20 @@ var AgentRegistry = class _AgentRegistry {
138
169
  console.warn(`Failed to load agent '${name}': ${error.message}`);
139
170
  }
140
171
  }
141
- };
142
- function extractMarkdownTitle(content) {
143
- const lines = content.split(/\r?\n/);
144
- for (const line of lines) {
145
- const trimmed = line.trim();
146
- if (!trimmed) continue;
147
- if (trimmed.startsWith("#")) {
148
- return trimmed.replace(/^#+\s*/, "").trim() || null;
149
- }
150
- return trimmed;
172
+ /**
173
+ * Load built-in agent definitions bundled with the package.
174
+ * These have `source: 'builtin'` and lower priority than user agents
175
+ * (loaded after user agents, so first-loaded-wins applies).
176
+ */
177
+ async loadBuiltinAgents() {
178
+ const builtinDir = path.join(path.dirname(new URL(import.meta.url).pathname), "../../agents/builtin");
179
+ await this.loadAgentsFromDir(builtinDir, "builtin");
151
180
  }
152
- return null;
153
- }
154
-
155
- // src/commands/agents.ts
156
- var metadata = {
157
- command: "/agents",
158
- description: t("commands.agents.description"),
159
- implemented: true,
160
- prd: "prd/sub_agents_architecture.md"
161
181
  };
162
- async function handler() {
163
- const registry = AgentRegistry.getInstance();
164
- await registry.loadAgents();
165
- const agents = registry.getAllAgents();
166
- if (agents.length === 0) {
167
- return `${t("commands.agents.noAgents")}
168
- ${chalk.gray(`Path: ${chalk.cyan(registry.getAgentsDirectory())}`)}`;
169
- }
170
- let output = chalk.bold(`${t("commands.agents.title")}:
171
-
172
- `);
173
- for (const agent of agents) {
174
- output += `${chalk.green("\u{1F916} " + agent.name)}
175
- `;
176
- output += ` ${chalk.gray(agent.description)}
177
- `;
178
- output += ` ${chalk.blue("Path:")} ${agent.path}
179
- `;
180
- if (agent.model) {
181
- output += ` ${chalk.yellow("Model:")} ${agent.model}
182
- `;
183
- }
184
- if (agent.tools?.length) {
185
- output += ` ${chalk.blue("Tools:")} ${agent.tools.join(", ")}
186
- `;
187
- }
188
- output += "\n";
189
- }
190
- return output.trim();
191
- }
192
182
 
193
183
  export {
194
- AgentRegistry,
195
- metadata,
196
- handler
184
+ AgentConfigSchema,
185
+ AgentRegistry
197
186
  };
198
187
  /**
199
188
  * @license
@@ -0,0 +1,131 @@
1
+ import {
2
+ configureSearch,
3
+ getSearchConfig
4
+ } from "./chunk-SAHBLB3E.js";
5
+ import {
6
+ showModal,
7
+ showPassword
8
+ } from "./chunk-5OBNULPU.js";
9
+ import {
10
+ saveConfig
11
+ } from "./chunk-WTNBX2JO.js";
12
+
13
+ // src/commands/search.ts
14
+ import chalk from "chalk";
15
+ async function search(ctx) {
16
+ const currentConfig = getSearchConfig();
17
+ const config = ctx.config;
18
+ console.log(chalk.bold("\nWeb Search Configuration\n"));
19
+ console.log(chalk.gray(`Current provider: ${chalk.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(chalk.gray(`Brave API key: ${braveKeySet ? chalk.green("configured") : chalk.yellow("not set")}`));
23
+ console.log(chalk.gray(`Parallel API key: ${parallelKeySet ? chalk.green("configured") : chalk.yellow("not set")}`));
24
+ console.log();
25
+ const providerOptions = [
26
+ {
27
+ label: `Google ${chalk.gray("(no API key required, recommended default)")}`,
28
+ value: "google"
29
+ },
30
+ {
31
+ label: `DuckDuckGo ${chalk.gray("(no API key required, may be blocked by CAPTCHA)")}`,
32
+ value: "duckduckgo"
33
+ },
34
+ {
35
+ label: `Brave Search ${chalk.gray("(requires API key)")} ${braveKeySet ? chalk.green("\u2713") : ""}`,
36
+ value: "brave"
37
+ },
38
+ {
39
+ label: `Parallel.ai ${chalk.gray("(requires API key)")} ${parallelKeySet ? chalk.green("\u2713") : ""}`,
40
+ value: "parallel"
41
+ }
42
+ ];
43
+ try {
44
+ const result = await showModal({
45
+ title: "Select search provider:",
46
+ options: providerOptions,
47
+ initialIndex: providerOptions.findIndex((c) => c.value === currentConfig.provider)
48
+ });
49
+ if (!result) {
50
+ console.log(chalk.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(chalk.gray("\nGet your free Brave Search API key at: https://brave.com/search/api/\n"));
58
+ const apiKey = await showPassword({
59
+ title: "Enter Brave Search API key:"
60
+ });
61
+ if (apiKey?.trim()) {
62
+ braveApiKey = apiKey.trim();
63
+ } else {
64
+ console.log(chalk.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(chalk.gray("\nGet your Parallel.ai API key at: https://platform.parallel.ai\n"));
70
+ const apiKey = await showPassword({
71
+ title: "Enter Parallel.ai API key:"
72
+ });
73
+ if (apiKey?.trim()) {
74
+ parallelApiKey = apiKey.trim();
75
+ } else {
76
+ console.log(chalk.yellow("No API key entered. Parallel.ai Search will not work without an API key."));
77
+ return null;
78
+ }
79
+ }
80
+ configureSearch({
81
+ provider,
82
+ braveApiKey,
83
+ parallelApiKey
84
+ });
85
+ if (config) {
86
+ config.search = {
87
+ provider,
88
+ braveApiKey,
89
+ parallelApiKey
90
+ };
91
+ await saveConfig(config);
92
+ console.log(chalk.green(`
93
+ \u2713 Search provider set to ${provider} and saved to config`));
94
+ } else {
95
+ console.log(chalk.green(`
96
+ \u2713 Search provider set to ${provider} (session only)`));
97
+ }
98
+ switch (provider) {
99
+ case "google":
100
+ console.log(chalk.gray("Google Search is now active. No API key required."));
101
+ break;
102
+ case "duckduckgo":
103
+ console.log(chalk.gray("Note: DuckDuckGo may block automated requests with a CAPTCHA."));
104
+ break;
105
+ case "brave":
106
+ console.log(chalk.gray("Brave Search is now active. Free tier allows 2,000 queries/month."));
107
+ break;
108
+ case "parallel":
109
+ console.log(chalk.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
+ export {
124
+ search,
125
+ metadata
126
+ };
127
+ /**
128
+ * @license
129
+ * Copyright 2025 Autohand AI LLC
130
+ * SPDX-License-Identifier: Apache-2.0
131
+ */
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  package_default
3
- } from "./chunk-3XJD56Z4.js";
3
+ } from "./chunk-QUFAULH7.js";
4
4
  import {
5
5
  t
6
- } from "./chunk-NMWEDN4Z.js";
6
+ } from "./chunk-HFMLWH7B.js";
7
7
 
8
8
  // src/commands/status.ts
9
9
  import chalk from "chalk";