autohand-cli 0.7.14 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/README.md +97 -2
  2. package/assets/icon.png +0 -0
  3. package/dist/AgentRegistry-7LDL5HJH.js +10 -0
  4. package/dist/AgentRegistry-NQCLWABO.cjs +10 -0
  5. package/dist/{AutomodeManager-NGRAO2MH.js → AutomodeManager-MWLKGPZK.js} +2 -0
  6. package/dist/{AutomodeManager-ZKQMBM4T.cjs → AutomodeManager-NYIZNODK.cjs} +3 -1
  7. package/dist/CommunitySkillsCache-6QPRMTJO.js +8 -0
  8. package/dist/CommunitySkillsCache-GTQMOCCO.cjs +8 -0
  9. package/dist/{GitHubRegistryFetcher-US2JJID4.js → GitHubRegistryFetcher-6JQ5JEDZ.js} +1 -0
  10. package/dist/{GitHubRegistryFetcher-K744NNAJ.cjs → GitHubRegistryFetcher-S7QFUEKV.cjs} +1 -0
  11. package/dist/HookManager-Q2KYMCP4.cjs +7 -0
  12. package/dist/HookManager-TTP4Y6DC.js +7 -0
  13. package/dist/ImportWizard-35YBJ4AM.cjs +466 -0
  14. package/dist/ImportWizard-XH7CINCH.js +466 -0
  15. package/dist/LearnAdvisor-A4Q5PPBI.js +9 -0
  16. package/dist/LearnAdvisor-GASQD7HT.cjs +9 -0
  17. package/dist/McpClientManager-7RM6YT35.js +8 -0
  18. package/dist/McpClientManager-RKD7C6OY.cjs +8 -0
  19. package/dist/MemoryManager-GUNLRP5S.js +8 -0
  20. package/dist/MemoryManager-TNSGKDKX.cjs +8 -0
  21. package/dist/{PermissionManager-U5OMGR3L.js → PermissionManager-ATUV34LQ.js} +4 -3
  22. package/dist/PermissionManager-KMN53FJP.cjs +11 -0
  23. package/dist/ProjectProfiler-UMJJSOCE.js +194 -0
  24. package/dist/ProjectProfiler-ZDWR2ODG.cjs +194 -0
  25. package/dist/ProviderFactory-MR5B23QJ.js +9 -0
  26. package/dist/ProviderFactory-VFGCJJX6.cjs +9 -0
  27. package/dist/SessionManager-FEUAU3ZJ.cjs +10 -0
  28. package/dist/SessionManager-IKWAK2PI.js +10 -0
  29. package/dist/SkillsRegistry-KPQFTRIT.cjs +9 -0
  30. package/dist/SkillsRegistry-XJSKPDF2.js +9 -0
  31. package/dist/SubAgent-NYH6GWQ3.js +11 -0
  32. package/dist/SubAgent-PZKBDUBA.cjs +11 -0
  33. package/dist/{SyncApiClient-AYXYSOJM.js → SyncApiClient-LVIO4C2S.js} +1 -0
  34. package/dist/{SyncApiClient-ID3KXEMA.cjs → SyncApiClient-ZNYMT36M.cjs} +1 -0
  35. package/dist/about-HHTF2YFL.js +12 -0
  36. package/dist/about-JGRVNNQC.cjs +12 -0
  37. package/dist/actionExecutor-U6IBN2TU.cjs +19 -0
  38. package/dist/actionExecutor-XT5FW3W6.js +19 -0
  39. package/dist/add-dir-247K3XRY.js +10 -0
  40. package/dist/add-dir-GS4DXKKH.cjs +10 -0
  41. package/dist/agents/builtin/code-cleaner.md +14 -0
  42. package/dist/agents/builtin/docs-writer.md +14 -0
  43. package/dist/agents/builtin/researcher.md +14 -0
  44. package/dist/agents/builtin/reviewer.md +15 -0
  45. package/dist/agents/builtin/tester.md +15 -0
  46. package/dist/agents/builtin/todo-resolver.md +15 -0
  47. package/dist/agents-R6ZEFTVR.cjs +12 -0
  48. package/dist/agents-WJPQWQF2.js +12 -0
  49. package/dist/agents-new-HKVEIBDJ.js +14 -0
  50. package/dist/agents-new-X6GTHIO6.cjs +14 -0
  51. package/dist/assets/icon.png +0 -0
  52. package/dist/autoSkill-6TGBTEQD.js +20 -0
  53. package/dist/autoSkill-H4T6VVDA.cjs +20 -0
  54. package/dist/automode-BC6NVECO.js +10 -0
  55. package/dist/automode-WN2RSOGW.cjs +10 -0
  56. package/dist/{cc-UTTLESTY.js → cc-7LEIJ3KF.js} +1 -0
  57. package/dist/{cc-2W6M7J45.cjs → cc-Q5MM4AWC.cjs} +1 -0
  58. package/dist/{chunk-N4ZSG6JJ.cjs → chunk-22D2CNTP.cjs} +2 -2
  59. package/dist/chunk-245KJE5Y.cjs +55 -0
  60. package/dist/chunk-24QIWILL.js +51 -0
  61. package/dist/{chunk-MYNHJHDZ.js → chunk-2AA5MFES.js} +1 -1
  62. package/dist/{chunk-TSY7JHIV.cjs → chunk-33A755XB.cjs} +2 -2
  63. package/dist/chunk-33RSHBDH.js +131 -0
  64. package/dist/{chunk-QRGPAUST.js → chunk-34M3HWLR.js} +2 -2
  65. package/dist/{chunk-U7CZFKPL.cjs → chunk-3K2ESU53.cjs} +2 -2
  66. package/dist/{chunk-SIGWDEPS.cjs → chunk-3L53OA4E.cjs} +10 -10
  67. package/dist/chunk-3OEDGIFW.js +42 -0
  68. package/dist/chunk-3OTU3RS3.cjs +1607 -0
  69. package/dist/{chunk-MNSTWHK3.cjs → chunk-3PCTTUNW.cjs} +11 -11
  70. package/dist/{chunk-P5VDZ6PV.js → chunk-3PDTTAKJ.js} +1 -1
  71. package/dist/chunk-47CKWKEX.cjs +59 -0
  72. package/dist/{chunk-Z4J4W6YQ.cjs → chunk-4JNNTOGF.cjs} +2 -48
  73. package/dist/{chunk-GVZPIQWB.js → chunk-4PKF7WPD.js} +11 -5
  74. package/dist/{chunk-3S4DEIJP.cjs → chunk-5IXII4HX.cjs} +2 -2
  75. package/dist/{chunk-CRQKDBLD.js → chunk-5P2NXKP3.js} +98 -64
  76. package/dist/{chunk-DSKVMFRM.cjs → chunk-643VRA5S.cjs} +12 -4
  77. package/dist/{chunk-VVBBEYTH.cjs → chunk-6HYLHBQG.cjs} +10 -10
  78. package/dist/{chunk-L5ZFPWHY.js → chunk-6OYHF6MF.js} +12 -4
  79. package/dist/{chunk-BPTBKO7D.js → chunk-6RF7UKUS.js} +224 -37
  80. package/dist/{chunk-YHGTBPEC.js → chunk-6ZCULLCA.js} +1 -1
  81. package/dist/{chunk-VHBUKGRG.js → chunk-72FKPBT5.js} +4 -4
  82. package/dist/{chunk-2U5HFVRO.cjs → chunk-7BTSG4ME.cjs} +5165 -2194
  83. package/dist/chunk-7UOUW76C.js +603 -0
  84. package/dist/{chunk-FEVHH525.cjs → chunk-A4IJHHV7.cjs} +11 -5
  85. package/dist/{chunk-B6EBHCK2.cjs → chunk-AEJH23FO.cjs} +6 -6
  86. package/dist/{chunk-WLTVF77A.js → chunk-ALYU6VTM.js} +1 -1
  87. package/dist/{chunk-NMWEDN4Z.js → chunk-APIXPPMT.js} +5165 -2194
  88. package/dist/chunk-AS6RTLN7.cjs +203 -0
  89. package/dist/{chunk-BHV7CBNT.js → chunk-AYS2ASM7.js} +1 -1
  90. package/dist/{chunk-GRSVQ5YZ.js → chunk-AYSFIUFW.js} +44 -12
  91. package/dist/{chunk-NUHYCFHW.cjs → chunk-BVKXEQVG.cjs} +54 -65
  92. package/dist/chunk-BWN2CLLM.cjs +298 -0
  93. package/dist/{chunk-4HA7IHLJ.cjs → chunk-C5IJIM2V.cjs} +38 -16
  94. package/dist/{chunk-SRLY7K6J.js → chunk-CAMZTXV6.js} +2 -2
  95. package/dist/chunk-CDBPBM2K.cjs +29 -0
  96. package/dist/chunk-CNBKZEX5.cjs +109 -0
  97. package/dist/{chunk-WQUQ5JMM.js → chunk-CWMZKFTT.js} +4 -4
  98. package/dist/{chunk-CKN2BLHK.cjs → chunk-CZXGCVTR.cjs} +2 -2
  99. package/dist/{chunk-SZP4ULM5.cjs → chunk-DJDE4DTT.cjs} +17 -17
  100. package/dist/chunk-DN573ME7.cjs +1675 -0
  101. package/dist/chunk-DRE2RXBZ.js +4498 -0
  102. package/dist/chunk-DSPQEHDT.js +29 -0
  103. package/dist/{chunk-SFNT5DYE.cjs → chunk-DVUHHH3B.cjs} +4 -4
  104. package/dist/chunk-DVZOENQ7.cjs +58 -0
  105. package/dist/{chunk-PWLLLJHU.js → chunk-EGFT4PGW.js} +3 -1
  106. package/dist/chunk-EGMZDTSL.js +55 -0
  107. package/dist/chunk-EZMINVLU.js +123 -0
  108. package/dist/chunk-FHK7UDOJ.cjs +42 -0
  109. package/dist/{chunk-KWRUQRXR.js → chunk-FKSDEWDH.js} +44 -10
  110. package/dist/chunk-FMB3TSWP.cjs +218 -0
  111. package/dist/chunk-FW774QXH.js +1838 -0
  112. package/dist/{chunk-MY3TZER2.js → chunk-G27PQQFD.js} +1 -1
  113. package/dist/{chunk-Y2ZSH3YF.cjs → chunk-G3V4SFET.cjs} +57 -23
  114. package/dist/chunk-G4CAKI3V.js +58 -0
  115. package/dist/{chunk-FB6JWNJS.js → chunk-GBHDROGL.js} +54 -65
  116. package/dist/{chunk-DEAEO7RI.js → chunk-GJH7XMSK.js} +15 -1
  117. package/dist/chunk-GLBAF54O.js +218 -0
  118. package/dist/{chunk-S47TCZDL.js → chunk-H5SWOLG6.js} +7 -7
  119. package/dist/chunk-HBXAA3XB.js +83 -0
  120. package/dist/{chunk-63BXZQZW.js → chunk-HIVRCQS2.js} +26 -4
  121. package/dist/{chunk-WOGJXDBU.cjs → chunk-HLHTG5ZU.cjs} +18 -4
  122. package/dist/{chunk-FK2DVRPJ.js → chunk-HLQV64Y5.js} +170 -4
  123. package/dist/chunk-HOAHWIQ5.cjs +260 -0
  124. package/dist/{chunk-D2XFTCRP.js → chunk-HQ7YZKXE.js} +1 -1
  125. package/dist/{chunk-L42HTMMR.cjs → chunk-HTLINWX6.cjs} +2 -2
  126. package/dist/{chunk-PKOAXQKW.cjs → chunk-HVKOZ2VP.cjs} +11 -11
  127. package/dist/chunk-HXGBSJL5.cjs +27 -0
  128. package/dist/chunk-I5IW3T2Y.js +310 -0
  129. package/dist/chunk-IETRBBMP.cjs +603 -0
  130. package/dist/{chunk-MTALRU7R.cjs → chunk-IFFXSTOM.cjs} +3 -3
  131. package/dist/{chunk-V7YTCNMN.cjs → chunk-IKGWDOGU.cjs} +174 -8
  132. package/dist/chunk-IQ5RXU6O.js +1675 -0
  133. package/dist/{chunk-ZBIBLOZL.js → chunk-IVM5F2AE.js} +500 -317
  134. package/dist/chunk-J4Q7XR3G.js +260 -0
  135. package/dist/{chunk-XL77XYI2.cjs → chunk-J6QET7EF.cjs} +27 -7
  136. package/dist/{chunk-TQB222ZB.js → chunk-JCLYQ2JC.js} +2 -2
  137. package/dist/chunk-JSBRDJBE.js +30 -0
  138. package/dist/{chunk-XPOHYKR3.js → chunk-JX3DFKBI.js} +2 -2
  139. package/dist/chunk-JYTDYJVW.js +27 -0
  140. package/dist/{chunk-6SHHB2VD.js → chunk-KPELYZ6L.js} +2 -2
  141. package/dist/{chunk-ZLOTP56B.cjs → chunk-KWXVKLQ5.cjs} +5 -5
  142. package/dist/chunk-L3WAH3EM.cjs +131 -0
  143. package/dist/{chunk-ZXIQCYYV.cjs → chunk-LA7H35XM.cjs} +9 -9
  144. package/dist/chunk-LENHP55G.cjs +1838 -0
  145. package/dist/chunk-LJFUXC56.cjs +123 -0
  146. package/dist/{chunk-R5OO7MEB.cjs → chunk-LNMYK2F5.cjs} +22 -22
  147. package/dist/chunk-LQGVEP3E.js +109 -0
  148. package/dist/{chunk-KXAAEROY.js → chunk-LWUJFGOZ.js} +2 -2
  149. package/dist/chunk-MAKMSQMQ.cjs +504 -0
  150. package/dist/{chunk-BG4OQUKP.js → chunk-MBBY4ZIK.js} +1 -1
  151. package/dist/chunk-MSED7RH2.cjs +267 -0
  152. package/dist/{chunk-NMGF2KUN.js → chunk-MYISNQH4.js} +1 -1
  153. package/dist/chunk-N23UAW4I.js +59 -0
  154. package/dist/chunk-N254NRHT.cjs +30 -0
  155. package/dist/{chunk-TOTDRAWG.js → chunk-NDMIPTV4.js} +1 -1
  156. package/dist/{chunk-AIH6GUGB.cjs → chunk-NNPAM4HC.cjs} +5 -5
  157. package/dist/{chunk-HSPWX4Z2.cjs → chunk-O4IF4NJT.cjs} +231 -44
  158. package/dist/{chunk-DZHR34H6.cjs → chunk-OGV4WJ5L.cjs} +8 -8
  159. package/dist/chunk-OHUZKDGX.js +348 -0
  160. package/dist/{chunk-BRXIEKJ3.cjs → chunk-OLSBBZW6.cjs} +5 -5
  161. package/dist/{chunk-MILZEEUV.js → chunk-OOKY3HPZ.js} +9 -3
  162. package/dist/chunk-P47WPOXN.js +298 -0
  163. package/dist/{chunk-ULMPJUJW.cjs → chunk-PRRCJFU3.cjs} +23 -23
  164. package/dist/{chunk-SMHY3Q7B.cjs → chunk-Q7XSCYND.cjs} +54 -22
  165. package/dist/chunk-QCLYBIMM.cjs +51 -0
  166. package/dist/chunk-QMAKTSZB.cjs +48 -0
  167. package/dist/{chunk-DTFR3WD6.js → chunk-QNGEW5TC.js} +1 -1
  168. package/dist/chunk-QOXPOR5D.js +267 -0
  169. package/dist/chunk-R33VKSH5.cjs +348 -0
  170. package/dist/{chunk-RJP3SZ7Q.cjs → chunk-RD5XAJR2.cjs} +492 -309
  171. package/dist/chunk-RGR6ME5J.cjs +844 -0
  172. package/dist/{chunk-EOGKE5GD.cjs → chunk-RKJTGGMU.cjs} +221 -126
  173. package/dist/{chunk-GD4AFYJ3.js → chunk-RO6WYEWH.js} +24 -4
  174. package/dist/chunk-S52YW5ZQ.js +844 -0
  175. package/dist/{chunk-6DWXHBAY.js → chunk-SAHBLB3E.js} +222 -127
  176. package/dist/{chunk-JHOQABEF.js → chunk-SCXX4LW5.js} +5 -5
  177. package/dist/{chunk-GIZL57FE.cjs → chunk-SEKD5FH3.cjs} +3 -1
  178. package/dist/{chunk-JWPI6O5Z.js → chunk-SKV2F3NM.js} +31 -4
  179. package/dist/{chunk-FHUNAB2K.cjs → chunk-SKYG33B2.cjs} +33 -6
  180. package/dist/{chunk-BISFR6ZL.js → chunk-SLQAYV3W.js} +1 -1
  181. package/dist/{chunk-RFNCTE4V.cjs → chunk-SYVYLZZF.cjs} +2 -2
  182. package/dist/{chunk-3XJD56Z4.js → chunk-T73IDKDF.js} +10 -3
  183. package/dist/chunk-TBEGGJNC.cjs +310 -0
  184. package/dist/{chunk-RRZS5A53.js → chunk-TNZRZQ7Q.js} +1 -1
  185. package/dist/{chunk-CH4SPVFD.cjs → chunk-TXSDBGKX.cjs} +10 -3
  186. package/dist/chunk-U3WDY42C.cjs +42 -0
  187. package/dist/{chunk-425MT6Y5.cjs → chunk-U46VYPLR.cjs} +9 -9
  188. package/dist/{chunk-OLG7LZBD.js → chunk-VG34MG2U.js} +1 -1
  189. package/dist/{chunk-XDVG3NM4.js → chunk-W3X6PAC7.js} +2 -48
  190. package/dist/{chunk-LYMTYC67.js → chunk-WHE2SWHU.js} +2 -2
  191. package/dist/chunk-WM5PAOTQ.cjs +4498 -0
  192. package/dist/chunk-WNUVPKBW.js +42 -0
  193. package/dist/{chunk-EV53SLSB.cjs → chunk-WPVWQSL7.cjs} +4 -4
  194. package/dist/chunk-WQ3VJXZB.js +118 -0
  195. package/dist/{chunk-HMRDNRTH.js → chunk-X2MSVKDV.js} +2 -2
  196. package/dist/chunk-X3WS5LDG.js +504 -0
  197. package/dist/{chunk-43XS26AQ.cjs → chunk-X5VSP65C.cjs} +4 -4
  198. package/dist/{chunk-DSCQPWUB.cjs → chunk-X5YJ34FZ.cjs} +15 -15
  199. package/dist/chunk-XAV24VYN.js +48 -0
  200. package/dist/chunk-XDLH4EDL.cjs +118 -0
  201. package/dist/{chunk-X765A7J5.js → chunk-XRZEUWKF.js} +1 -1
  202. package/dist/{chunk-ZKZRFH37.cjs → chunk-XTB6VJVQ.cjs} +6 -6
  203. package/dist/{chunk-H3GBSPK5.js → chunk-XX2ZO7DS.js} +14 -6
  204. package/dist/{chunk-RUZB43HU.cjs → chunk-Y72HH2TF.cjs} +22 -14
  205. package/dist/chunk-YFXTE422.cjs +92 -0
  206. package/dist/{chunk-OSUWEUZE.js → chunk-YGN4CQIP.js} +1 -1
  207. package/dist/{chunk-KC5FPUOF.cjs → chunk-YRLYSQEQ.cjs} +2 -2
  208. package/dist/{chunk-3KBBARKO.js → chunk-YZXUDM5X.js} +85 -28
  209. package/dist/chunk-Z36XBUMX.cjs +83 -0
  210. package/dist/chunk-ZK6HOR62.js +92 -0
  211. package/dist/{chunk-PDKNHU5G.cjs → chunk-ZQE72E6W.cjs} +22 -16
  212. package/dist/chunk-ZVY2XD6T.js +1607 -0
  213. package/dist/{chunk-XBUMKEFN.cjs → chunk-ZYQMLKOK.cjs} +91 -34
  214. package/dist/clear-UO4MNWZW.cjs +12 -0
  215. package/dist/clear-ZJ5NYP6E.js +12 -0
  216. package/dist/communityInstaller-6KCFN7YZ.js +19 -0
  217. package/dist/communityInstaller-PVSOFDZD.cjs +19 -0
  218. package/dist/completion-MMF2PN2H.js +14 -0
  219. package/dist/completion-UI5WKHXI.cjs +14 -0
  220. package/dist/config-E7RINK4R.cjs +18 -0
  221. package/dist/config-ZN66VXPS.js +18 -0
  222. package/dist/constants-6CPCJ3DY.cjs +21 -0
  223. package/dist/{constants-V6J54N3X.js → constants-UFM5B232.js} +2 -1
  224. package/dist/{defaultHooks-WLMRQUXG.cjs → defaultHooks-RCXPHF4M.cjs} +3 -1
  225. package/dist/{defaultHooks-R56VYG7I.js → defaultHooks-RDRMER3Z.js} +2 -0
  226. package/dist/export-N4XIVDSL.cjs +12 -0
  227. package/dist/export-W22L4D5C.js +12 -0
  228. package/dist/extractSessionMemories-SDW2MVBQ.cjs +7 -0
  229. package/dist/extractSessionMemories-V7K42ZHW.js +7 -0
  230. package/dist/feedback-DR6ADSNE.cjs +15 -0
  231. package/dist/feedback-FEEAP4QW.js +15 -0
  232. package/dist/filesystem-3SGCW2BF.js +10 -0
  233. package/dist/filesystem-MCFXJQ6R.cjs +10 -0
  234. package/dist/formatters-6K7QVWQL.cjs +10 -0
  235. package/dist/formatters-DQHO5I36.js +10 -0
  236. package/dist/{help-LKKQU2TN.js → help-2BLR7L43.js} +3 -2
  237. package/dist/help-AQHGTS7P.cjs +12 -0
  238. package/dist/{history-AV4XBFRK.js → history-5FZ3M2AK.js} +3 -2
  239. package/dist/history-NIUDRMKA.cjs +14 -0
  240. package/dist/hooks-2EY4IPKV.js +13 -0
  241. package/dist/hooks-LJVORRIG.cjs +13 -0
  242. package/dist/i18n-ARDG2SMC.cjs +33 -0
  243. package/dist/{i18n-BSAPXM56.js → i18n-K7QOWIBH.js} +2 -1
  244. package/dist/ide-GFW6IJHD.js +12 -0
  245. package/dist/ide-N2ZNSSB3.cjs +12 -0
  246. package/dist/import-DFVN3KNZ.js +10 -0
  247. package/dist/import-QEME3E4T.cjs +170 -0
  248. package/dist/import-UXM3VK7B.js +170 -0
  249. package/dist/import-ZS6DPGU5.cjs +10 -0
  250. package/dist/index.cjs +11233 -11804
  251. package/dist/index.js +12594 -13165
  252. package/dist/init-PY75HA3S.cjs +10 -0
  253. package/dist/init-QNMWLAVY.js +10 -0
  254. package/dist/language-5UE4G2BT.cjs +18 -0
  255. package/dist/language-UXMHEZUJ.js +18 -0
  256. package/dist/learn-HJ3FLNZC.cjs +20 -0
  257. package/dist/learn-MVYS3RU5.js +20 -0
  258. package/dist/{lint-44UQJ673.cjs → lint-D5UOJWIK.cjs} +1 -0
  259. package/dist/{lint-TA2ZHVLM.js → lint-NJPZWVN2.js} +1 -0
  260. package/dist/{localProjectPermissions-WQYMGI42.js → localProjectPermissions-N77HA3XK.js} +3 -2
  261. package/dist/localProjectPermissions-UFSMNTBJ.cjs +18 -0
  262. package/dist/login-DSE7H63A.js +20 -0
  263. package/dist/login-V3MEWPKN.cjs +20 -0
  264. package/dist/logout-BMVCLKKW.js +18 -0
  265. package/dist/logout-XEG7FHOZ.cjs +18 -0
  266. package/dist/mcp-PYUR4PHO.js +18 -0
  267. package/dist/mcp-SG6JFLGC.cjs +18 -0
  268. package/dist/{mcp-install-2KVKRAMQ.cjs → mcp-install-G27HSS3Z.cjs} +26 -14
  269. package/dist/{mcp-install-77UXRN6R.js → mcp-install-VESN42PI.js} +21 -9
  270. package/dist/memory-4ZMMEZ2Z.js +10 -0
  271. package/dist/memory-QSGMVVGH.cjs +10 -0
  272. package/dist/message-JUBOK2VU.js +9 -0
  273. package/dist/message-ZJ5AYAMT.cjs +9 -0
  274. package/dist/model-NANLBZ4Z.cjs +10 -0
  275. package/dist/model-ZXNV4AF7.js +10 -0
  276. package/dist/new-5QJY5JP2.js +12 -0
  277. package/dist/new-PMMG55UX.cjs +12 -0
  278. package/dist/{patch-BAAQIYSW.js → patch-5F6VBIT3.js} +2 -0
  279. package/dist/{patch-J32X2QQP.cjs → patch-MOD7QC3D.cjs} +3 -1
  280. package/dist/permissions-LECTCJ4H.cjs +13 -0
  281. package/dist/permissions-VP5VGIBL.js +13 -0
  282. package/dist/{plan-JFGNRL2S.js → plan-G5CEKJI4.js} +1 -0
  283. package/dist/{plan-B3CW5DXJ.cjs → plan-QKOHE3LH.cjs} +1 -0
  284. package/dist/quit-BKOOPHU5.cjs +10 -0
  285. package/dist/quit-FVFNYACP.js +10 -0
  286. package/dist/registry-KWZGYJC2.js +2108 -0
  287. package/dist/registry-YN4FQPOO.cjs +2108 -0
  288. package/dist/resume-EXFQSQPH.js +13 -0
  289. package/dist/resume-PP2IQM5S.cjs +13 -0
  290. package/dist/search-C56FBN67.cjs +17 -0
  291. package/dist/search-XGZDYBF4.js +17 -0
  292. package/dist/{session-T3TAZ5ZU.cjs → session-BSU2L5UI.cjs} +1 -0
  293. package/dist/{session-H5QWKE5E.js → session-SZMRN5KG.js} +1 -0
  294. package/dist/sessions-54KI3F2Q.js +10 -0
  295. package/dist/sessions-DDTSPNVW.cjs +10 -0
  296. package/dist/settings-BDO37TTO.cjs +30 -0
  297. package/dist/settings-FHRDFPLK.js +30 -0
  298. package/dist/share-IERCTBGN.cjs +14 -0
  299. package/dist/share-TGROUE6R.js +14 -0
  300. package/dist/skills-6OL4OSGA.js +76 -0
  301. package/dist/skills-FYY6F2WV.cjs +76 -0
  302. package/dist/skills-OM4IGBAA.cjs +26 -0
  303. package/dist/skills-S3GRN323.js +26 -0
  304. package/dist/{skills-install-MQINL3EC.js → skills-install-6CSWC24P.js} +97 -26
  305. package/dist/{skills-install-IKJZN4G2.cjs → skills-install-O3LZ2ETC.cjs} +106 -35
  306. package/dist/skills-new-ALD2PTHN.js +15 -0
  307. package/dist/skills-new-PWLKK7GW.cjs +15 -0
  308. package/dist/slashCommands-L4ZD33LJ.js +75 -0
  309. package/dist/slashCommands-YY2VUUDF.cjs +75 -0
  310. package/dist/status-3PC5XWSS.cjs +11 -0
  311. package/dist/status-KCLVOYPD.js +11 -0
  312. package/dist/sync-6SDWG5RK.js +18 -0
  313. package/dist/sync-7JMZVEQD.cjs +40 -0
  314. package/dist/{sync-EXYX7HXW.js → sync-KWX67OUN.js} +3 -2
  315. package/dist/sync-WHURZL3U.cjs +18 -0
  316. package/dist/tasks-5FPBIFLC.js +9 -0
  317. package/dist/tasks-TXGKGNH6.cjs +9 -0
  318. package/dist/team-5YXP3JGR.js +9 -0
  319. package/dist/team-IIWEZKNR.cjs +9 -0
  320. package/dist/teammate-2KMKJXAM.cjs +139 -0
  321. package/dist/teammate-L6EZQ3I2.js +139 -0
  322. package/dist/theme-BE5A4FPN.cjs +18 -0
  323. package/dist/theme-YMFCQP7J.js +18 -0
  324. package/dist/ui/questionModal.cjs +7 -25
  325. package/dist/ui/questionModal.js +6 -24
  326. package/dist/undo-KZHUUZTD.cjs +10 -0
  327. package/dist/undo-NEIEHQVX.js +10 -0
  328. package/dist/update-TVAJMMBC.js +82 -0
  329. package/dist/update-Z6BIIQDC.cjs +82 -0
  330. package/package.json +10 -3
  331. package/dist/CommunitySkillsCache-ILWHWE5P.js +0 -7
  332. package/dist/CommunitySkillsCache-KHC6RUJW.cjs +0 -7
  333. package/dist/HookManager-X47HCM5G.cjs +0 -6
  334. package/dist/HookManager-ZXKHCD7U.js +0 -6
  335. package/dist/MemoryManager-6ZT7IDO5.cjs +0 -7
  336. package/dist/MemoryManager-AJGS5AKB.js +0 -7
  337. package/dist/PermissionManager-HG6W2DGU.cjs +0 -10
  338. package/dist/SessionManager-BJ2G6VV4.cjs +0 -9
  339. package/dist/SessionManager-ENPGYK5J.js +0 -9
  340. package/dist/SkillsRegistry-6ZFOCT25.cjs +0 -8
  341. package/dist/SkillsRegistry-C2SHOZ5D.js +0 -8
  342. package/dist/about-3BJTNSLK.js +0 -11
  343. package/dist/about-EABQNJGV.cjs +0 -11
  344. package/dist/add-dir-7FD4DMDA.cjs +0 -9
  345. package/dist/add-dir-LOYJ4YB5.js +0 -9
  346. package/dist/agents-2Y6ASV7C.js +0 -10
  347. package/dist/agents-UOSPKLQL.cjs +0 -10
  348. package/dist/agents-new-23NSGAM5.js +0 -13
  349. package/dist/agents-new-WI2EL7IJ.cjs +0 -13
  350. package/dist/automode-LGWTY3UX.js +0 -9
  351. package/dist/automode-WLBQ7MN7.cjs +0 -9
  352. package/dist/chunk-5UBW2BGC.js +0 -33
  353. package/dist/chunk-I6DBWNLN.cjs +0 -169
  354. package/dist/chunk-IZBCMJHJ.cjs +0 -33
  355. package/dist/completion-7WGMHKOR.cjs +0 -13
  356. package/dist/completion-KH33NSGP.js +0 -13
  357. package/dist/constants-RBQTR32A.cjs +0 -20
  358. package/dist/export-3QN3IH7A.js +0 -11
  359. package/dist/export-BI54X3MP.cjs +0 -11
  360. package/dist/feedback-CI4OIPOS.cjs +0 -14
  361. package/dist/feedback-GFPL5STE.js +0 -14
  362. package/dist/formatters-N5IJKYZY.cjs +0 -8
  363. package/dist/formatters-UG6VZJJ5.js +0 -8
  364. package/dist/help-CWMUGD3V.cjs +0 -11
  365. package/dist/history-73VBEMSI.cjs +0 -13
  366. package/dist/hooks-62UDQBGH.cjs +0 -12
  367. package/dist/hooks-XORDJD5X.js +0 -12
  368. package/dist/i18n-X2IU2EZD.cjs +0 -32
  369. package/dist/ide-RPKZALQV.js +0 -11
  370. package/dist/ide-YMNXJB6A.cjs +0 -11
  371. package/dist/init-J5HR4R7U.js +0 -9
  372. package/dist/init-JCC7RVMC.cjs +0 -9
  373. package/dist/language-AZISJCEZ.js +0 -16
  374. package/dist/language-F65RA6FZ.cjs +0 -16
  375. package/dist/localProjectPermissions-2EATUDZM.cjs +0 -17
  376. package/dist/login-5HLPMECE.js +0 -18
  377. package/dist/login-ISWYYBXP.cjs +0 -18
  378. package/dist/logout-3EKZM5J3.cjs +0 -16
  379. package/dist/logout-GE7TSZ24.js +0 -16
  380. package/dist/mcp-EW64QRFA.cjs +0 -15
  381. package/dist/mcp-VHS7AMF2.js +0 -15
  382. package/dist/memory-2I473RU3.js +0 -9
  383. package/dist/memory-JZ6NPSP3.cjs +0 -9
  384. package/dist/model-GXZLARPT.js +0 -9
  385. package/dist/model-Y274DBDO.cjs +0 -9
  386. package/dist/new-BG5VIGZ7.cjs +0 -9
  387. package/dist/new-YXFDQOA7.js +0 -9
  388. package/dist/permissions-QILEAGBP.cjs +0 -12
  389. package/dist/permissions-WVEOVMWO.js +0 -12
  390. package/dist/quit-NC32OEJG.cjs +0 -9
  391. package/dist/quit-WRRIGU33.js +0 -9
  392. package/dist/resume-GJIKIDPR.cjs +0 -12
  393. package/dist/resume-RMJNCAOK.js +0 -12
  394. package/dist/search-UIWIXB73.js +0 -14
  395. package/dist/search-WQNXDA2E.cjs +0 -14
  396. package/dist/sessions-HPFX2GDD.js +0 -9
  397. package/dist/sessions-SAQU6MFA.cjs +0 -9
  398. package/dist/share-2WH5ZVOO.cjs +0 -13
  399. package/dist/share-PSSWWVV5.js +0 -13
  400. package/dist/skills-LJZA6PVJ.js +0 -13
  401. package/dist/skills-YTYGART7.cjs +0 -13
  402. package/dist/skills-new-3WCU3CWB.js +0 -14
  403. package/dist/skills-new-O5LFVFZU.cjs +0 -14
  404. package/dist/slashCommands-7IRDOXOQ.cjs +0 -55
  405. package/dist/slashCommands-C6CAQA25.js +0 -55
  406. package/dist/status-4EDV2LSY.cjs +0 -10
  407. package/dist/status-NU7TJDCE.js +0 -10
  408. package/dist/sync-3GFSEIAZ.js +0 -16
  409. package/dist/sync-6M3WRKMH.cjs +0 -39
  410. package/dist/sync-CQNQDNTJ.cjs +0 -16
  411. package/dist/theme-EMJGULMI.cjs +0 -16
  412. package/dist/theme-FGDSXNU3.js +0 -16
  413. package/dist/undo-CTXQYE7C.cjs +0 -9
  414. package/dist/undo-HX2ZMECP.js +0 -9
@@ -0,0 +1,260 @@
1
+ import {
2
+ showConfirm,
3
+ showInput,
4
+ showModal,
5
+ showPassword
6
+ } from "./chunk-YZXUDM5X.js";
7
+ import {
8
+ saveConfig
9
+ } from "./chunk-P47WPOXN.js";
10
+ import {
11
+ t
12
+ } from "./chunk-APIXPPMT.js";
13
+
14
+ // src/commands/settings.ts
15
+ import chalk from "chalk";
16
+ var SETTING_CATEGORIES = [
17
+ { id: "ui", labelKey: "commands.settings.categories.ui" },
18
+ { id: "agent", labelKey: "commands.settings.categories.agent" },
19
+ { id: "permissions", labelKey: "commands.settings.categories.permissions" },
20
+ { id: "network", labelKey: "commands.settings.categories.network" },
21
+ { id: "telemetry", labelKey: "commands.settings.categories.telemetry" },
22
+ { id: "automode", labelKey: "commands.settings.categories.automode" },
23
+ { id: "teams", labelKey: "commands.settings.categories.teams" },
24
+ { id: "search", labelKey: "commands.settings.categories.search" }
25
+ ];
26
+ var SETTINGS_REGISTRY = [
27
+ // UI & Display
28
+ { key: "ui.theme", labelKey: "commands.settings.ui.theme", category: "ui", type: "string", redirect: "/theme" },
29
+ { key: "ui.locale", labelKey: "commands.settings.ui.locale", category: "ui", type: "string", redirect: "/language" },
30
+ { key: "ui.autoConfirm", labelKey: "commands.settings.ui.autoConfirm", descriptionKey: "commands.settings.ui.autoConfirmDesc", category: "ui", type: "boolean", defaultValue: false },
31
+ { key: "ui.showThinking", labelKey: "commands.settings.ui.showThinking", descriptionKey: "commands.settings.ui.showThinkingDesc", category: "ui", type: "boolean", defaultValue: true },
32
+ { key: "ui.terminalBell", labelKey: "commands.settings.ui.terminalBell", descriptionKey: "commands.settings.ui.terminalBellDesc", category: "ui", type: "boolean", defaultValue: true },
33
+ { key: "ui.checkForUpdates", labelKey: "commands.settings.ui.checkForUpdates", descriptionKey: "commands.settings.ui.checkForUpdatesDesc", category: "ui", type: "boolean", defaultValue: true },
34
+ { key: "ui.showCompletionNotification", labelKey: "commands.settings.ui.showCompletionNotification", descriptionKey: "commands.settings.ui.showCompletionNotificationDesc", category: "ui", type: "boolean", defaultValue: true },
35
+ { key: "ui.promptSuggestions", labelKey: "commands.settings.ui.promptSuggestions", descriptionKey: "commands.settings.ui.promptSuggestionsDesc", category: "ui", type: "boolean", defaultValue: true },
36
+ { key: "ui.activitySymbol", labelKey: "commands.settings.ui.activitySymbol", descriptionKey: "commands.settings.ui.activitySymbolDesc", category: "ui", type: "string", defaultValue: "\u2733" },
37
+ { key: "ui.updateCheckInterval", labelKey: "commands.settings.ui.updateCheckInterval", descriptionKey: "commands.settings.ui.updateCheckIntervalDesc", category: "ui", type: "number", defaultValue: 24 },
38
+ // Agent Behavior
39
+ { key: "agent.maxIterations", labelKey: "commands.settings.agent.maxIterations", descriptionKey: "commands.settings.agent.maxIterationsDesc", category: "agent", type: "number", defaultValue: 100 },
40
+ { key: "agent.enableRequestQueue", labelKey: "commands.settings.agent.enableRequestQueue", descriptionKey: "commands.settings.agent.enableRequestQueueDesc", category: "agent", type: "boolean", defaultValue: true },
41
+ { key: "agent.sessionRetryLimit", labelKey: "commands.settings.agent.sessionRetryLimit", descriptionKey: "commands.settings.agent.sessionRetryLimitDesc", category: "agent", type: "number", defaultValue: 3 },
42
+ { key: "agent.sessionRetryDelay", labelKey: "commands.settings.agent.sessionRetryDelay", descriptionKey: "commands.settings.agent.sessionRetryDelayDesc", category: "agent", type: "number", defaultValue: 1e3 },
43
+ { key: "agent.debug", labelKey: "commands.settings.agent.debug", descriptionKey: "commands.settings.agent.debugDesc", category: "agent", type: "boolean", defaultValue: false },
44
+ // Permissions
45
+ { key: "permissions.mode", labelKey: "commands.settings.permissions.mode", descriptionKey: "commands.settings.permissions.modeDesc", category: "permissions", type: "enum", enumValues: ["interactive", "unrestricted", "restricted"], defaultValue: "interactive" },
46
+ { key: "permissions.rememberSession", labelKey: "commands.settings.permissions.rememberSession", descriptionKey: "commands.settings.permissions.rememberSessionDesc", category: "permissions", type: "boolean", defaultValue: true },
47
+ // Network
48
+ { key: "network.maxRetries", labelKey: "commands.settings.network.maxRetries", descriptionKey: "commands.settings.network.maxRetriesDesc", category: "network", type: "number", defaultValue: 3 },
49
+ { key: "network.timeout", labelKey: "commands.settings.network.timeout", descriptionKey: "commands.settings.network.timeoutDesc", category: "network", type: "number", defaultValue: 3e4 },
50
+ { key: "network.retryDelay", labelKey: "commands.settings.network.retryDelay", descriptionKey: "commands.settings.network.retryDelayDesc", category: "network", type: "number", defaultValue: 1e3 },
51
+ // Telemetry & Reporting
52
+ { key: "telemetry.enabled", labelKey: "commands.settings.telemetry.enabled", descriptionKey: "commands.settings.telemetry.enabledDesc", category: "telemetry", type: "boolean", defaultValue: false },
53
+ { key: "autoReport.enabled", labelKey: "commands.settings.telemetry.autoReportEnabled", descriptionKey: "commands.settings.telemetry.autoReportEnabledDesc", category: "telemetry", type: "boolean", defaultValue: true },
54
+ // Auto-mode
55
+ { key: "automode.maxIterations", labelKey: "commands.settings.automode.maxIterations", descriptionKey: "commands.settings.automode.maxIterationsDesc", category: "automode", type: "number", defaultValue: 50 },
56
+ { key: "automode.maxRuntime", labelKey: "commands.settings.automode.maxRuntime", descriptionKey: "commands.settings.automode.maxRuntimeDesc", category: "automode", type: "number", defaultValue: 120 },
57
+ { key: "automode.maxCost", labelKey: "commands.settings.automode.maxCost", descriptionKey: "commands.settings.automode.maxCostDesc", category: "automode", type: "number", defaultValue: 10 },
58
+ { key: "automode.checkpointInterval", labelKey: "commands.settings.automode.checkpointInterval", descriptionKey: "commands.settings.automode.checkpointIntervalDesc", category: "automode", type: "number", defaultValue: 5 },
59
+ { key: "automode.useWorktree", labelKey: "commands.settings.automode.useWorktree", descriptionKey: "commands.settings.automode.useWorktreeDesc", category: "automode", type: "boolean", defaultValue: true },
60
+ // Teams
61
+ { key: "teams.enabled", labelKey: "commands.settings.teams.enabled", descriptionKey: "commands.settings.teams.enabledDesc", category: "teams", type: "boolean", defaultValue: true },
62
+ { key: "teams.teammateMode", labelKey: "commands.settings.teams.teammateMode", descriptionKey: "commands.settings.teams.teammateModeDesc", category: "teams", type: "enum", enumValues: ["auto", "in-process", "tmux"], defaultValue: "auto" },
63
+ { key: "teams.maxTeammates", labelKey: "commands.settings.teams.maxTeammates", descriptionKey: "commands.settings.teams.maxTeammatesDesc", category: "teams", type: "number", defaultValue: 5 },
64
+ // Search
65
+ { key: "search.provider", labelKey: "commands.settings.search.provider", descriptionKey: "commands.settings.search.providerDesc", category: "search", type: "enum", enumValues: ["google", "brave", "duckduckgo", "parallel"], defaultValue: "google" },
66
+ { key: "search.braveApiKey", labelKey: "commands.settings.search.braveApiKey", descriptionKey: "commands.settings.search.braveApiKeyDesc", category: "search", type: "password" },
67
+ { key: "search.parallelApiKey", labelKey: "commands.settings.search.parallelApiKey", descriptionKey: "commands.settings.search.parallelApiKeyDesc", category: "search", type: "password" }
68
+ ];
69
+ function getNestedValue(obj, path) {
70
+ const parts = path.split(".");
71
+ let current = obj;
72
+ for (const part of parts) {
73
+ if (current == null || typeof current !== "object") return void 0;
74
+ current = current[part];
75
+ }
76
+ return current;
77
+ }
78
+ function setNestedValue(obj, path, value) {
79
+ const parts = path.split(".");
80
+ let current = obj;
81
+ for (let i = 0; i < parts.length - 1; i++) {
82
+ if (current[parts[i]] == null || typeof current[parts[i]] !== "object") {
83
+ current[parts[i]] = {};
84
+ }
85
+ current = current[parts[i]];
86
+ }
87
+ current[parts[parts.length - 1]] = value;
88
+ }
89
+ function getSettingsForCategory(category) {
90
+ return SETTINGS_REGISTRY.filter((s) => s.category === category);
91
+ }
92
+ function formatSettingValue(value, type) {
93
+ if (value == null || value === void 0) {
94
+ if (type === "password") return chalk.gray("(not set)");
95
+ return chalk.gray("(default)");
96
+ }
97
+ switch (type) {
98
+ case "boolean":
99
+ return value ? chalk.green(t("commands.settings.on")) : chalk.red(t("commands.settings.off"));
100
+ case "password":
101
+ return typeof value === "string" && value.length > 0 ? chalk.gray("****") : chalk.gray("(not set)");
102
+ case "number":
103
+ return chalk.cyan(String(value));
104
+ case "enum":
105
+ case "string":
106
+ return chalk.cyan(String(value));
107
+ default:
108
+ return String(value);
109
+ }
110
+ }
111
+ async function editSetting(setting, config) {
112
+ const currentValue = getNestedValue(config, setting.key);
113
+ switch (setting.type) {
114
+ case "boolean": {
115
+ const current = currentValue ?? setting.defaultValue ?? false;
116
+ const newValue = await showConfirm({
117
+ title: t(setting.labelKey),
118
+ defaultValue: current
119
+ });
120
+ if (newValue !== current) {
121
+ setNestedValue(config, setting.key, newValue);
122
+ return true;
123
+ }
124
+ return false;
125
+ }
126
+ case "enum": {
127
+ const options = (setting.enumValues ?? []).map((v) => ({
128
+ label: v === String(currentValue) ? `${v} (current)` : v,
129
+ value: v
130
+ }));
131
+ const result = await showModal({
132
+ title: t(setting.labelKey),
133
+ options,
134
+ initialIndex: setting.enumValues?.indexOf(String(currentValue ?? setting.defaultValue)) ?? 0
135
+ });
136
+ if (result && result.value !== String(currentValue)) {
137
+ setNestedValue(config, setting.key, result.value);
138
+ return true;
139
+ }
140
+ return false;
141
+ }
142
+ case "string": {
143
+ const result = await showInput({
144
+ title: t(setting.labelKey),
145
+ defaultValue: String(currentValue ?? setting.defaultValue ?? "")
146
+ });
147
+ if (result !== null && result !== String(currentValue)) {
148
+ setNestedValue(config, setting.key, result);
149
+ return true;
150
+ }
151
+ return false;
152
+ }
153
+ case "number": {
154
+ const result = await showInput({
155
+ title: t(setting.labelKey),
156
+ defaultValue: String(currentValue ?? setting.defaultValue ?? ""),
157
+ validate: (v) => {
158
+ const n = Number(v);
159
+ if (isNaN(n) || !Number.isFinite(n)) return "Must be a number";
160
+ return true;
161
+ }
162
+ });
163
+ if (result !== null) {
164
+ const numValue = Number(result);
165
+ if (numValue !== currentValue) {
166
+ setNestedValue(config, setting.key, numValue);
167
+ return true;
168
+ }
169
+ }
170
+ return false;
171
+ }
172
+ case "password": {
173
+ const result = await showPassword({
174
+ title: t(setting.labelKey)
175
+ });
176
+ if (result !== null && result !== String(currentValue ?? "")) {
177
+ setNestedValue(config, setting.key, result);
178
+ return true;
179
+ }
180
+ return false;
181
+ }
182
+ default:
183
+ return false;
184
+ }
185
+ }
186
+ async function showCategorySettings(category, config) {
187
+ while (true) {
188
+ const settings2 = getSettingsForCategory(category);
189
+ const options = settings2.map((s) => {
190
+ const value = getNestedValue(config, s.key);
191
+ const display = formatSettingValue(value, s.type);
192
+ const label = s.redirect ? `${t(s.labelKey)}: ${display} (${s.redirect})` : `${t(s.labelKey)}: ${display}`;
193
+ return {
194
+ label,
195
+ value: s.key,
196
+ description: s.descriptionKey ? t(s.descriptionKey) : void 0
197
+ };
198
+ });
199
+ options.push({ label: t("commands.settings.back"), value: "__back__" });
200
+ const result = await showModal({
201
+ title: t("commands.settings.selectSetting"),
202
+ options
203
+ });
204
+ if (!result || result.value === "__back__") return;
205
+ const setting = SETTINGS_REGISTRY.find((s) => s.key === result.value);
206
+ if (!setting) return;
207
+ if (setting.redirect) {
208
+ console.log(chalk.gray(`
209
+ ${t("commands.settings.redirect", { command: chalk.cyan(setting.redirect) })}
210
+ `));
211
+ continue;
212
+ }
213
+ const changed = await editSetting(setting, config);
214
+ if (changed) {
215
+ await saveConfig(config);
216
+ console.log(chalk.green(`
217
+ ${t("commands.settings.saved")}
218
+ `));
219
+ }
220
+ }
221
+ }
222
+ async function settings(ctx) {
223
+ console.log(chalk.cyan(`
224
+ ${t("commands.settings.title")}
225
+ `));
226
+ while (true) {
227
+ const options = SETTING_CATEGORIES.map((cat) => ({
228
+ label: t(cat.labelKey),
229
+ value: cat.id
230
+ }));
231
+ const result = await showModal({
232
+ title: t("commands.settings.selectCategory"),
233
+ options
234
+ });
235
+ if (!result) return null;
236
+ await showCategorySettings(result.value, ctx.config);
237
+ }
238
+ }
239
+ var metadata = {
240
+ command: "/settings",
241
+ description: "configure autohand settings",
242
+ implemented: true
243
+ };
244
+
245
+ export {
246
+ SETTING_CATEGORIES,
247
+ SETTINGS_REGISTRY,
248
+ getNestedValue,
249
+ setNestedValue,
250
+ getSettingsForCategory,
251
+ formatSettingValue,
252
+ editSetting,
253
+ settings,
254
+ metadata
255
+ };
256
+ /**
257
+ * @license
258
+ * Copyright 2025 Autohand AI LLC
259
+ * SPDX-License-Identifier: Apache-2.0
260
+ */
@@ -1,10 +1,11 @@
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; }
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
3
 
4
4
 
5
- var _chunkKC5FPUOFcjs = require('./chunk-KC5FPUOF.cjs');
5
+ var _chunkYRLYSQEQcjs = require('./chunk-YRLYSQEQ.cjs');
6
6
 
7
7
  // src/permissions/PermissionManager.ts
8
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
8
9
  var DEFAULT_SECURITY_BLACKLIST = [
9
10
  // === Sensitive Files (read/write blocked) ===
10
11
  // Environment files with secrets
@@ -121,7 +122,7 @@ var PermissionManager = class {
121
122
  async initLocalSettings() {
122
123
  if (!this.workspaceRoot || this.localSettingsLoaded) return;
123
124
  try {
124
- const localSettings = await _chunkKC5FPUOFcjs.loadLocalProjectSettings.call(void 0, this.workspaceRoot);
125
+ const localSettings = await _chunkYRLYSQEQcjs.loadLocalProjectSettings.call(void 0, this.workspaceRoot);
125
126
  if (_optionalChain([localSettings, 'optionalAccess', _ => _.permissions])) {
126
127
  this.localSettings = localSettings.permissions;
127
128
  }
@@ -133,7 +134,7 @@ var PermissionManager = class {
133
134
  * Get merged settings (global + local)
134
135
  */
135
136
  getMergedSettings() {
136
- return _chunkKC5FPUOFcjs.mergePermissions.call(void 0, this.settings, this.localSettings);
137
+ return _chunkYRLYSQEQcjs.mergePermissions.call(void 0, this.settings, this.localSettings);
137
138
  }
138
139
  /**
139
140
  * Set permission mode (can be overridden by CLI flags)
@@ -191,23 +192,31 @@ var PermissionManager = class {
191
192
  this.sessionCache.set(cacheKey, allowed);
192
193
  }
193
194
  const pattern = this.contextToPattern(context);
195
+ const dirPattern = allowed && context.path ? this.buildDirectoryWildcard(context) : null;
194
196
  if (allowed && this.workspaceRoot) {
195
197
  try {
196
- await _chunkKC5FPUOFcjs.addToLocalWhitelist.call(void 0, this.workspaceRoot, pattern);
198
+ const patterns = dirPattern ? [pattern, dirPattern] : [pattern];
199
+ for (const p of patterns) {
200
+ await _chunkYRLYSQEQcjs.addToLocalWhitelist.call(void 0, this.workspaceRoot, p);
201
+ }
197
202
  if (!this.localSettings) {
198
203
  this.localSettings = { whitelist: [] };
199
204
  }
200
205
  if (!this.localSettings.whitelist) {
201
206
  this.localSettings.whitelist = [];
202
207
  }
203
- if (!this.localSettings.whitelist.includes(pattern)) {
204
- this.localSettings.whitelist.push(pattern);
208
+ for (const p of patterns) {
209
+ if (!this.localSettings.whitelist.includes(p)) {
210
+ this.localSettings.whitelist.push(p);
211
+ }
205
212
  }
206
213
  } catch (e2) {
207
214
  this.addToWhitelist(pattern);
215
+ if (dirPattern) this.addToWhitelist(dirPattern);
208
216
  }
209
217
  } else if (allowed) {
210
218
  this.addToWhitelist(pattern);
219
+ if (dirPattern) this.addToWhitelist(dirPattern);
211
220
  } else {
212
221
  this.addToBlacklist(pattern);
213
222
  }
@@ -231,6 +240,17 @@ var PermissionManager = class {
231
240
  }
232
241
  return `${tool}:${value}`;
233
242
  }
243
+ /**
244
+ * Build a directory-level wildcard pattern for path-based approvals.
245
+ * E.g., write_file:/project/tests/foo.ts → write_file:/project/tests/*
246
+ * This allows future writes in the same directory to be auto-approved.
247
+ */
248
+ buildDirectoryWildcard(context) {
249
+ if (!context.path) return null;
250
+ const dir = _path2.default.dirname(context.path);
251
+ if (dir === "." || dir === "/") return null;
252
+ return `${context.tool}:${dir}/*`;
253
+ }
234
254
  /**
235
255
  * Check if context matches the immutable security blacklist
236
256
  * This check CANNOT be bypassed by any mode, whitelist, or user setting
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  showModal
3
- } from "./chunk-3KBBARKO.js";
3
+ } from "./chunk-YZXUDM5X.js";
4
4
  import {
5
5
  t
6
- } from "./chunk-NMWEDN4Z.js";
6
+ } from "./chunk-APIXPPMT.js";
7
7
 
8
8
  // src/commands/ide.ts
9
9
  import chalk from "chalk";
@@ -0,0 +1,30 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+
27
+ export {
28
+ __commonJS,
29
+ __toESM
30
+ };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  package_default
3
- } from "./chunk-3XJD56Z4.js";
3
+ } from "./chunk-T73IDKDF.js";
4
4
  import {
5
5
  t
6
- } from "./chunk-NMWEDN4Z.js";
6
+ } from "./chunk-APIXPPMT.js";
7
7
 
8
8
  // src/commands/status.ts
9
9
  import chalk from "chalk";
@@ -0,0 +1,27 @@
1
+ import {
2
+ showModal
3
+ } from "./chunk-YZXUDM5X.js";
4
+
5
+ // src/ui/questionModal.tsx
6
+ async function showQuestionModal(options) {
7
+ const { question, suggestedAnswers } = options;
8
+ const modalOptions = suggestedAnswers?.map((answer) => ({
9
+ label: answer,
10
+ value: answer
11
+ })) ?? [];
12
+ const result = await showModal({
13
+ title: question,
14
+ options: modalOptions,
15
+ allowCustomInput: true
16
+ });
17
+ return result?.value ?? null;
18
+ }
19
+
20
+ export {
21
+ showQuestionModal
22
+ };
23
+ /**
24
+ * @license
25
+ * Copyright 2025 Autohand AI LLC
26
+ * SPDX-License-Identifier: Apache-2.0
27
+ */
@@ -2,10 +2,10 @@ import {
2
2
  showConfirm,
3
3
  showInput,
4
4
  showModal
5
- } from "./chunk-3KBBARKO.js";
5
+ } from "./chunk-YZXUDM5X.js";
6
6
  import {
7
7
  t
8
- } from "./chunk-NMWEDN4Z.js";
8
+ } from "./chunk-APIXPPMT.js";
9
9
 
10
10
  // src/commands/export.ts
11
11
  import chalk from "chalk";
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunk2U5HFVROcjs = require('./chunk-2U5HFVRO.cjs');
3
+ var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
4
4
 
5
5
  // src/commands/add-dir.ts
6
6
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -286,7 +286,7 @@ async function addDir(ctx, args) {
286
286
  }
287
287
  const resolvedPath = _path2.default.resolve(dirPath);
288
288
  if (!await _fsextra2.default.pathExists(resolvedPath)) {
289
- console.log(_chalk2.default.red(_chunk2U5HFVROcjs.t.call(void 0, "commands.addDir.notFound", { path: dirPath })));
289
+ console.log(_chalk2.default.red(_chunk7BTSG4MEcjs.t.call(void 0, "commands.addDir.notFound", { path: dirPath })));
290
290
  return null;
291
291
  }
292
292
  const stats = await _fsextra2.default.stat(resolvedPath);
@@ -305,17 +305,17 @@ async function addDir(ctx, args) {
305
305
  return null;
306
306
  }
307
307
  if (ctx.additionalDirs.includes(resolvedPath)) {
308
- console.log(_chalk2.default.yellow(_chunk2U5HFVROcjs.t.call(void 0, "commands.addDir.alreadyAdded", { path: resolvedPath })));
308
+ console.log(_chalk2.default.yellow(_chunk7BTSG4MEcjs.t.call(void 0, "commands.addDir.alreadyAdded", { path: resolvedPath })));
309
309
  return null;
310
310
  }
311
311
  ctx.addAdditionalDir(resolvedPath);
312
- console.log(_chalk2.default.green(_chunk2U5HFVROcjs.t.call(void 0, "commands.addDir.added", { path: resolvedPath })));
312
+ console.log(_chalk2.default.green(_chunk7BTSG4MEcjs.t.call(void 0, "commands.addDir.added", { path: resolvedPath })));
313
313
  console.log(_chalk2.default.gray("You can now read, write, and modify files in this directory."));
314
314
  return null;
315
315
  }
316
316
  var metadata = {
317
317
  command: "/add-dir",
318
- description: _chunk2U5HFVROcjs.t.call(void 0, "commands.addDir.description"),
318
+ description: _chunk7BTSG4MEcjs.t.call(void 0, "commands.addDir.description"),
319
319
  implemented: true
320
320
  };
321
321
 
@@ -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 _chunkZYQMLKOKcjs = require('./chunk-ZYQMLKOK.cjs');
9
+
10
+
11
+ var _chunkBWN2CLLMcjs = require('./chunk-BWN2CLLM.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 _chunkZYQMLKOKcjs.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 _chunkZYQMLKOKcjs.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 _chunkZYQMLKOKcjs.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 _chunkBWN2CLLMcjs.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,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunk2U5HFVROcjs = require('./chunk-2U5HFVRO.cjs');
3
+ var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
4
4
 
5
5
  // src/commands/help.ts
6
6
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
7
7
  var _terminallink = require('terminal-link'); var _terminallink2 = _interopRequireDefault(_terminallink);
8
8
  async function help() {
9
- const { SLASH_COMMANDS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./slashCommands-7IRDOXOQ.cjs")));
9
+ const { SLASH_COMMANDS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./slashCommands-YY2VUUDF.cjs")));
10
10
  console.log(_chalk2.default.cyan(`
11
- ${_chunk2U5HFVROcjs.t.call(void 0, "commands.help.title")}
11
+ ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.title")}
12
12
  `));
13
13
  const commands = SLASH_COMMANDS.filter((cmd) => cmd.implemented && cmd.command !== "/?").sort((a, b) => a.command.localeCompare(b.command));
14
14
  const maxLen = Math.max(...commands.map((c) => c.command.length)) + 2;
@@ -16,15 +16,15 @@ async function help() {
16
16
  console.log(` ${_chalk2.default.yellow(command.padEnd(maxLen))} ${_chalk2.default.gray(description)}`);
17
17
  }
18
18
  console.log(_chalk2.default.cyan(`
19
- ${_chunk2U5HFVROcjs.t.call(void 0, "commands.help.tips.title")}
19
+ ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.title")}
20
20
  `));
21
- console.log(_chalk2.default.gray(` \u2022 ${_chunk2U5HFVROcjs.t.call(void 0, "commands.help.tips.mention")}`));
22
- console.log(_chalk2.default.gray(` \u2022 ${_chunk2U5HFVROcjs.t.call(void 0, "commands.help.tips.arrows")}`));
23
- console.log(_chalk2.default.gray(` \u2022 ${_chunk2U5HFVROcjs.t.call(void 0, "commands.help.tips.tab")}`));
24
- console.log(_chalk2.default.gray(` \u2022 ${_chunk2U5HFVROcjs.t.call(void 0, "commands.help.tips.escape")}
21
+ console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.mention")}`));
22
+ console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.arrows")}`));
23
+ console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.tab")}`));
24
+ console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.escape")}
25
25
  `));
26
26
  const docLink = _terminallink2.default.call(void 0, "docs.autohand.ai", "https://docs.autohand.ai");
27
- console.log(_chalk2.default.gray(` ${_chunk2U5HFVROcjs.t.call(void 0, "commands.help.docsLink", { link: docLink })}
27
+ console.log(_chalk2.default.gray(` ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.docsLink", { link: docLink })}
28
28
  `));
29
29
  return null;
30
30
  }