autohand-cli 0.8.2 → 0.9.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 (551) hide show
  1. package/README.md +173 -74
  2. package/dist/AgentRegistry-EGBDIUAK.cjs +10 -0
  3. package/dist/{AgentRegistry-7LDL5HJH.js → AgentRegistry-XPWSVO3Q.js} +3 -3
  4. package/dist/{AutomodeManager-MWLKGPZK.js → AutomodeManager-APLLPEYJ.js} +32 -18
  5. package/dist/{AutomodeManager-NYIZNODK.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
  6. package/dist/CommunitySkillsCache-2OIUV227.cjs +8 -0
  7. package/dist/CommunitySkillsCache-ZEQWP6YM.js +8 -0
  8. package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
  9. package/dist/{GitHubRegistryFetcher-6JQ5JEDZ.js → GitHubRegistryFetcher-J2BWPXJF.js} +2 -2
  10. package/dist/HookManager-CWLTFKWO.js +7 -0
  11. package/dist/HookManager-TMAJQU4S.cjs +7 -0
  12. package/dist/{ImportWizard-35YBJ4AM.cjs → ImportWizard-MQXEED2U.cjs} +41 -17
  13. package/dist/{ImportWizard-XH7CINCH.js → ImportWizard-QBKQEXDW.js} +35 -11
  14. package/dist/LearnAdvisor-46FG2XIP.js +9 -0
  15. package/dist/LearnAdvisor-XBRDNAGH.cjs +9 -0
  16. package/dist/McpClientManager-BNSKLHIN.cjs +8 -0
  17. package/dist/{McpClientManager-7RM6YT35.js → McpClientManager-SL35BR24.js} +2 -2
  18. package/dist/MemoryManager-34L4YOKA.cjs +8 -0
  19. package/dist/MemoryManager-WJMLPWGU.js +8 -0
  20. package/dist/NVIDIAProvider-2HR737UE.js +14 -0
  21. package/dist/NVIDIAProvider-MVTL62PR.cjs +14 -0
  22. package/dist/PermissionManager-5OOJ7FAT.cjs +11 -0
  23. package/dist/{PermissionManager-ATUV34LQ.js → PermissionManager-KMYILJ4Z.js} +4 -4
  24. package/dist/{ProjectProfiler-ZDWR2ODG.cjs → ProjectProfiler-CDAE7ECW.cjs} +2 -1
  25. package/dist/{ProjectProfiler-UMJJSOCE.js → ProjectProfiler-NZTJDRHD.js} +2 -1
  26. package/dist/ProviderFactory-C3YPXTDD.cjs +11 -0
  27. package/dist/ProviderFactory-HFPRVQ25.js +11 -0
  28. package/dist/SessionManager-PNBTJJTQ.js +10 -0
  29. package/dist/SessionManager-WAPTFMDO.cjs +10 -0
  30. package/dist/SkillsRegistry-4RRD5GMX.js +9 -0
  31. package/dist/SkillsRegistry-7AJP74GJ.cjs +9 -0
  32. package/dist/SubAgent-FDIH3DXB.js +11 -0
  33. package/dist/SubAgent-HVL2ICVZ.cjs +11 -0
  34. package/dist/{SyncApiClient-LVIO4C2S.js → SyncApiClient-LRPFNCKJ.js} +2 -2
  35. package/dist/SyncApiClient-VMBOLQ6H.cjs +11 -0
  36. package/dist/about-BW3PDZUU.js +14 -0
  37. package/dist/about-FCAX37YC.cjs +14 -0
  38. package/dist/acp-EOETGAHC.cjs +1517 -0
  39. package/dist/acp-VHEL7BOW.js +1517 -0
  40. package/dist/actionExecutor-33I47NZS.js +24 -0
  41. package/dist/actionExecutor-4YBMR3YH.cjs +24 -0
  42. package/dist/add-dir-7SS6KSH5.cjs +11 -0
  43. package/dist/add-dir-VFX7QT4E.js +11 -0
  44. package/dist/agent-DMRUFU4M.cjs +116 -0
  45. package/dist/agent-WCJEYQJT.js +116 -0
  46. package/dist/agents/builtin/code-cleaner.md +1 -1
  47. package/dist/agents/builtin/docs-writer.md +1 -1
  48. package/dist/agents/builtin/researcher.md +2 -2
  49. package/dist/agents/builtin/reviewer.md +1 -1
  50. package/dist/agents/builtin/tester.md +1 -1
  51. package/dist/agents/builtin/todo-resolver.md +1 -1
  52. package/dist/agents-CHROO3VU.cjs +17 -0
  53. package/dist/agents-UVDUL65K.js +17 -0
  54. package/dist/agents-new-AUBWSOXP.js +17 -0
  55. package/dist/agents-new-Y562WC47.cjs +17 -0
  56. package/dist/{autoSkill-6TGBTEQD.js → autoSkill-EFMK6WU6.js} +3 -3
  57. package/dist/autoSkill-YOLLFTP2.cjs +20 -0
  58. package/dist/automode-BMYSRM34.js +10 -0
  59. package/dist/automode-DBLKTTKD.cjs +10 -0
  60. package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
  61. package/dist/browserToolBridge-F5N66PE7.js +58 -0
  62. package/dist/{cc-7LEIJ3KF.js → cc-AYEP2CA3.js} +1 -1
  63. package/dist/{cc-Q5MM4AWC.cjs → cc-S2QLQFBR.cjs} +1 -1
  64. package/dist/chrome-ATC4OO5I.cjs +20 -0
  65. package/dist/chrome-NHJ44WUN.js +50 -0
  66. package/dist/chrome-O62WXV7F.js +20 -0
  67. package/dist/chrome-XHJLCO4M.cjs +50 -0
  68. package/dist/chromeSkill-53TH55PM.js +105 -0
  69. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  70. package/dist/{chunk-HOAHWIQ5.cjs → chunk-2CGE7ZV3.cjs} +26 -26
  71. package/dist/chunk-2H5O745H.js +63 -0
  72. package/dist/chunk-2HOLOHVK.js +2219 -0
  73. package/dist/{chunk-3PDTTAKJ.js → chunk-2QL6MNXG.js} +15 -8
  74. package/dist/{chunk-PGRH5Q77.cjs → chunk-2VHB43IX.cjs} +35 -6
  75. package/dist/{chunk-VG34MG2U.js → chunk-37M5UM6I.js} +9 -6
  76. package/dist/{chunk-6HYLHBQG.cjs → chunk-3DDL2E55.cjs} +20 -16
  77. package/dist/chunk-3EDDDZS2.cjs +5 -0
  78. package/dist/{chunk-6OYHF6MF.js → chunk-3GUEUCZK.js} +28 -4
  79. package/dist/{chunk-N254NRHT.cjs → chunk-3HT76LNN.cjs} +9 -2
  80. package/dist/{chunk-DVUHHH3B.cjs → chunk-3KLSNNRW.cjs} +4 -4
  81. package/dist/chunk-3LJJG5YY.cjs +387 -0
  82. package/dist/chunk-3OF56EMA.cjs +197 -0
  83. package/dist/chunk-3PXKRVCW.js +108 -0
  84. package/dist/{chunk-IKGWDOGU.cjs → chunk-3S563FNF.cjs} +160 -79
  85. package/dist/chunk-3UT7R3XV.js +663 -0
  86. package/dist/chunk-4256YRCO.cjs +80 -0
  87. package/dist/chunk-46C73ZKK.cjs +663 -0
  88. package/dist/chunk-46MTALKD.js +44 -0
  89. package/dist/{chunk-AEJH23FO.cjs → chunk-47PHDKNW.cjs} +6 -6
  90. package/dist/chunk-4LMUDS2K.js +124 -0
  91. package/dist/{chunk-HLHTG5ZU.cjs → chunk-5CMYEM3R.cjs} +14 -12
  92. package/dist/{chunk-MBBY4ZIK.js → chunk-5F6ZKSHO.js} +4 -1
  93. package/dist/chunk-5JFTY3VU.js +74 -0
  94. package/dist/chunk-5JTTM5SC.js +59 -0
  95. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  96. package/dist/{chunk-GJH7XMSK.js → chunk-5VHP6HDQ.js} +8 -6
  97. package/dist/{chunk-6ZCULLCA.js → chunk-62RTC3XX.js} +1 -1
  98. package/dist/{chunk-MSED7RH2.cjs → chunk-6GUODJKM.cjs} +112 -41
  99. package/dist/{chunk-47CKWKEX.cjs → chunk-6HH236FV.cjs} +9 -4
  100. package/dist/{chunk-WHE2SWHU.js → chunk-6NVAK6CK.js} +2 -2
  101. package/dist/chunk-6R25D2H5.js +121 -0
  102. package/dist/{chunk-3PCTTUNW.cjs → chunk-6XVVIY54.cjs} +55 -25
  103. package/dist/{chunk-3L53OA4E.cjs → chunk-75EDROHL.cjs} +10 -10
  104. package/dist/{chunk-G4CAKI3V.js → chunk-7HPWMALN.js} +7 -2
  105. package/dist/chunk-7JLT2VNW.cjs +18963 -0
  106. package/dist/chunk-7LWQCE4Y.cjs +987 -0
  107. package/dist/{chunk-OLSBBZW6.cjs → chunk-7MU7LWF3.cjs} +5 -5
  108. package/dist/{chunk-HLQV64Y5.js → chunk-7RFJB75Y.js} +140 -59
  109. package/dist/{chunk-X2MSVKDV.js → chunk-A7HHCIDQ.js} +2 -2
  110. package/dist/{chunk-SKYG33B2.cjs → chunk-AC7DZ6SK.cjs} +3 -3
  111. package/dist/{chunk-XX2ZO7DS.js → chunk-ACDQGA4Z.js} +90 -16
  112. package/dist/{chunk-CZXGCVTR.cjs → chunk-AOKCI722.cjs} +2 -2
  113. package/dist/chunk-ARBEHFCG.js +715 -0
  114. package/dist/{chunk-OOKY3HPZ.js → chunk-AT7OWLY5.js} +50 -9
  115. package/dist/chunk-AU6JAGZJ.cjs +231 -0
  116. package/dist/chunk-AUFNACED.js +18963 -0
  117. package/dist/{chunk-CDBPBM2K.cjs → chunk-AUYSIEVV.cjs} +3 -3
  118. package/dist/chunk-B4HSNOIH.cjs +354 -0
  119. package/dist/{chunk-EGMZDTSL.js → chunk-B5CGDNMR.js} +10 -2
  120. package/dist/{chunk-34M3HWLR.js → chunk-BFQDQRDE.js} +2 -2
  121. package/dist/{chunk-2AA5MFES.js → chunk-BL2UC7HC.js} +8 -5
  122. package/dist/{chunk-LNMYK2F5.cjs → chunk-BQ22N3TX.cjs} +56 -41
  123. package/dist/chunk-BQU3HAE7.js +21 -0
  124. package/dist/chunk-BWF4VDYE.js +3897 -0
  125. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  126. package/dist/{chunk-APIXPPMT.js → chunk-CBFH2J3O.js} +855 -33
  127. package/dist/chunk-CCVMREXI.js +420 -0
  128. package/dist/chunk-CFAWTLSC.js +13 -0
  129. package/dist/{chunk-G27PQQFD.js → chunk-CFFE4VA3.js} +1 -1
  130. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CH2J4PVE.cjs} +212 -70
  131. package/dist/{chunk-7BTSG4ME.cjs → chunk-CHI52KFR.cjs} +855 -33
  132. package/dist/{chunk-DJDE4DTT.cjs → chunk-CWINVFRI.cjs} +25 -19
  133. package/dist/{chunk-HXGBSJL5.cjs → chunk-D2OSPLYC.cjs} +2 -2
  134. package/dist/{chunk-GBHDROGL.js → chunk-D6GZBSOX.js} +16 -4
  135. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  136. package/dist/chunk-DEQVRSV5.cjs +866 -0
  137. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  138. package/dist/{chunk-WM5PAOTQ.cjs → chunk-DIZTWFVR.cjs} +1649 -484
  139. package/dist/{chunk-YZXUDM5X.js → chunk-DLP436GI.js} +204 -62
  140. package/dist/{chunk-OHUZKDGX.js → chunk-DMRXF5DU.js} +3 -3
  141. package/dist/{chunk-U46VYPLR.cjs → chunk-DPSIGY6L.cjs} +9 -9
  142. package/dist/{chunk-DN573ME7.cjs → chunk-DRWDEHE5.cjs} +4 -4
  143. package/dist/{chunk-SEKD5FH3.cjs → chunk-E26KKI46.cjs} +5 -2
  144. package/dist/{chunk-J4Q7XR3G.js → chunk-E46DJH5S.js} +3 -3
  145. package/dist/{chunk-Q7XSCYND.cjs → chunk-E6GFD7VR.cjs} +49 -26
  146. package/dist/chunk-ES2HJQ4N.js +37 -0
  147. package/dist/chunk-EZJHLOWP.js +80 -0
  148. package/dist/chunk-FFBDRUO5.cjs +59 -0
  149. package/dist/{chunk-AYSFIUFW.js → chunk-FGT6KK6T.js} +38 -15
  150. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  151. package/dist/{chunk-DSPQEHDT.js → chunk-FQAVGSPW.js} +2 -2
  152. package/dist/chunk-FQVG6ZHF.js +197 -0
  153. package/dist/chunk-GBMDFWJX.cjs +152 -0
  154. package/dist/{chunk-DRE2RXBZ.js → chunk-GGLKUENP.js} +1605 -440
  155. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  156. package/dist/{chunk-MYISNQH4.js → chunk-GWO66KBI.js} +1 -1
  157. package/dist/chunk-GWY26SUD.cjs +63 -0
  158. package/dist/{chunk-YGN4CQIP.js → chunk-GZ6DV2UG.js} +1 -1
  159. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  160. package/dist/chunk-HDK2EHVH.cjs +570 -0
  161. package/dist/chunk-HJIXWGQZ.js +139 -0
  162. package/dist/{chunk-6RF7UKUS.js → chunk-HKYZSUQ5.js} +48 -47
  163. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  164. package/dist/{chunk-HTLINWX6.cjs → chunk-HQWQZML5.cjs} +16 -13
  165. package/dist/{chunk-DVZOENQ7.cjs → chunk-HS4USDND.cjs} +9 -4
  166. package/dist/chunk-HSCUPEA4.cjs +3897 -0
  167. package/dist/{chunk-JCLYQ2JC.js → chunk-HXJEGMGB.js} +12 -6
  168. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  169. package/dist/{chunk-SCXX4LW5.js → chunk-I24CWKKK.js} +15 -8
  170. package/dist/chunk-IAGCRVJ3.js +355 -0
  171. package/dist/chunk-IEXKKKOF.cjs +92 -0
  172. package/dist/{chunk-5IXII4HX.cjs → chunk-IGMPWJ2I.cjs} +19 -12
  173. package/dist/chunk-IKUMVBCW.cjs +33 -0
  174. package/dist/{chunk-XTB6VJVQ.cjs → chunk-J2K57QM7.cjs} +6 -6
  175. package/dist/{chunk-O4IF4NJT.cjs → chunk-J5ADZN6V.cjs} +57 -56
  176. package/dist/chunk-J5HE6CUM.cjs +124 -0
  177. package/dist/{chunk-JS7IPR7P.js → chunk-JAQO6XDB.js} +31 -2
  178. package/dist/chunk-JIMSII7R.js +987 -0
  179. package/dist/chunk-JJ4KA7HK.cjs +2219 -0
  180. package/dist/chunk-JMN3GZU6.js +570 -0
  181. package/dist/{chunk-X5VSP65C.cjs → chunk-JP3YHTQ2.cjs} +4 -4
  182. package/dist/{chunk-SKV2F3NM.js → chunk-JYKPWK5O.js} +1 -1
  183. package/dist/{chunk-NNPAM4HC.cjs → chunk-KNTUI4TZ.cjs} +12 -6
  184. package/dist/{chunk-HIVRCQS2.js → chunk-L4F7SUYL.js} +56 -25
  185. package/dist/{chunk-C5IJIM2V.cjs → chunk-LDJQ5QHG.cjs} +68 -37
  186. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  187. package/dist/chunk-LJD7KR3L.cjs +44 -0
  188. package/dist/chunk-LN7D3EJZ.js +387 -0
  189. package/dist/{chunk-643VRA5S.cjs → chunk-LQBONA55.cjs} +32 -8
  190. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  191. package/dist/chunk-M4KNC5BQ.js +78 -0
  192. package/dist/chunk-MO4KP6XS.cjs +229 -0
  193. package/dist/{chunk-BVKXEQVG.cjs → chunk-MOJ7ADW4.cjs} +22 -10
  194. package/dist/chunk-MPULXVC4.cjs +715 -0
  195. package/dist/{chunk-X5YJ34FZ.cjs → chunk-MQESBFBZ.cjs} +46 -23
  196. package/dist/chunk-MUNUUFU7.cjs +21 -0
  197. package/dist/{chunk-X3WS5LDG.js → chunk-MX75JYIY.js} +7 -5
  198. package/dist/chunk-MXVIDIC6.cjs +139 -0
  199. package/dist/{chunk-3K2ESU53.cjs → chunk-N6O3XUZ2.cjs} +2 -2
  200. package/dist/{chunk-IVM5F2AE.js → chunk-NBGOIFKP.js} +265 -18
  201. package/dist/{chunk-SLQAYV3W.js → chunk-NMQ47RCG.js} +8 -2
  202. package/dist/{chunk-JYTDYJVW.js → chunk-O64I2GYI.js} +1 -1
  203. package/dist/{chunk-IFFXSTOM.cjs → chunk-O6TQP7U7.cjs} +3 -3
  204. package/dist/{chunk-AYS2ASM7.js → chunk-OHWMWKJQ.js} +1 -1
  205. package/dist/{chunk-N23UAW4I.js → chunk-OM24WXEE.js} +7 -2
  206. package/dist/{chunk-MAKMSQMQ.cjs → chunk-OPNI6O7F.cjs} +8 -6
  207. package/dist/chunk-OR67YXQK.cjs +13 -0
  208. package/dist/{chunk-QOXPOR5D.js → chunk-OV3PVUYN.js} +115 -44
  209. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  210. package/dist/chunk-PCM3N3CL.cjs +37 -0
  211. package/dist/{chunk-A4IJHHV7.cjs → chunk-PDHT7LQS.cjs} +52 -11
  212. package/dist/{chunk-LA7H35XM.cjs → chunk-PHJO5YAL.cjs} +9 -9
  213. package/dist/{chunk-KPELYZ6L.js → chunk-PQLKJCIE.js} +2 -2
  214. package/dist/chunk-PUD76XQT.cjs +78 -0
  215. package/dist/chunk-Q2IL4DDI.cjs +355 -0
  216. package/dist/{chunk-WPVWQSL7.cjs → chunk-Q6AC3PHY.cjs} +16 -13
  217. package/dist/{chunk-XRZEUWKF.js → chunk-QCHIDZBA.js} +1 -1
  218. package/dist/{chunk-IQ5RXU6O.js → chunk-QEGOB6QV.js} +1 -1
  219. package/dist/{chunk-JSBRDJBE.js → chunk-QGM4M3NI.js} +8 -1
  220. package/dist/chunk-QKP772OZ.js +4291 -0
  221. package/dist/chunk-QQ7PANOP.js +59 -0
  222. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  223. package/dist/chunk-RAKO7UN7.js +114 -0
  224. package/dist/chunk-RBHANOYY.js +33 -0
  225. package/dist/chunk-RBZ7AFX7.cjs +29 -0
  226. package/dist/{chunk-TXSDBGKX.cjs → chunk-REMGR23V.cjs} +46 -49
  227. package/dist/chunk-ROLA6EFO.cjs +85 -0
  228. package/dist/{chunk-TBEGGJNC.cjs → chunk-SOLBYSLY.cjs} +33 -16
  229. package/dist/{chunk-FKSDEWDH.js → chunk-SWCQM52V.js} +68 -25
  230. package/dist/{chunk-H5SWOLG6.js → chunk-TBOLJDUG.js} +39 -24
  231. package/dist/chunk-TH26BQJG.js +101 -0
  232. package/dist/{chunk-245KJE5Y.cjs → chunk-TJNBASFD.cjs} +14 -6
  233. package/dist/chunk-TKKN34TV.js +229 -0
  234. package/dist/chunk-TQ33WBY5.cjs +74 -0
  235. package/dist/{chunk-EGFT4PGW.js → chunk-TWQDAUZU.js} +5 -2
  236. package/dist/{chunk-OGV4WJ5L.cjs → chunk-TXPSTCG7.cjs} +74 -59
  237. package/dist/{chunk-CAMZTXV6.js → chunk-U4C3HW6P.js} +67 -52
  238. package/dist/{chunk-5P2NXKP3.js → chunk-UEIXJG45.js} +104 -76
  239. package/dist/{chunk-22D2CNTP.cjs → chunk-UGFVM77J.cjs} +5 -2
  240. package/dist/chunk-UOQECODR.js +34 -0
  241. package/dist/chunk-UR27UDTB.js +354 -0
  242. package/dist/chunk-UWFG2R2I.cjs +420 -0
  243. package/dist/{chunk-Y72HH2TF.cjs → chunk-UXLW45ZE.cjs} +102 -28
  244. package/dist/{chunk-FPHU2ES6.cjs → chunk-VBOFPU5M.cjs} +6 -0
  245. package/dist/{chunk-JX3DFKBI.js → chunk-VDWJMWDF.js} +54 -24
  246. package/dist/{chunk-LENHP55G.cjs → chunk-VGEV44V2.cjs} +1076 -158
  247. package/dist/{chunk-33RSHBDH.js → chunk-VKBIE6I6.js} +38 -7
  248. package/dist/{chunk-CWMZKFTT.js → chunk-VRMZO6TB.js} +31 -8
  249. package/dist/chunk-VUGOOGHB.js +400 -0
  250. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  251. package/dist/chunk-WGLBC5AY.cjs +59 -0
  252. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  253. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  254. package/dist/chunk-WRTXCQ3V.cjs +4291 -0
  255. package/dist/chunk-WTB7AFL6.cjs +101 -0
  256. package/dist/{chunk-NDMIPTV4.js → chunk-WZV6UVPY.js} +8 -3
  257. package/dist/chunk-XF2WIKHR.cjs +34 -0
  258. package/dist/{chunk-L3WAH3EM.cjs → chunk-XGMI6IYB.cjs} +46 -15
  259. package/dist/{chunk-FW774QXH.js → chunk-XIVFAD2L.js} +1048 -130
  260. package/dist/chunk-XV2HXRHX.js +85 -0
  261. package/dist/{chunk-72FKPBT5.js → chunk-Y3M2DABP.js} +16 -12
  262. package/dist/{chunk-QNGEW5TC.js → chunk-YV63VW4K.js} +1 -1
  263. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  264. package/dist/{chunk-RD5XAJR2.cjs → chunk-YWTIXHU6.cjs} +266 -19
  265. package/dist/chunk-YZWE7XSM.js +5 -0
  266. package/dist/{chunk-I5IW3T2Y.js → chunk-Z3XSSF7B.js} +32 -15
  267. package/dist/{chunk-6UJMCWRY.js → chunk-Z4LIPMPM.js} +6 -0
  268. package/dist/chunk-ZASDSY7P.cjs +114 -0
  269. package/dist/{chunk-R33VKSH5.cjs → chunk-ZHJ7JGME.cjs} +11 -11
  270. package/dist/chunk-ZPD2AO3U.js +866 -0
  271. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  272. package/dist/chunk-ZR46OJNZ.js +152 -0
  273. package/dist/{chunk-G3V4SFET.cjs → chunk-ZZ63NW7A.cjs} +78 -35
  274. package/dist/clear-33TWQ2ES.cjs +12 -0
  275. package/dist/clear-OFLFQ3MR.js +12 -0
  276. package/dist/{communityInstaller-6KCFN7YZ.js → communityInstaller-COB2KTOW.js} +9 -6
  277. package/dist/communityInstaller-TWMGPSYM.cjs +22 -0
  278. package/dist/completion-IIZMHXYP.cjs +17 -0
  279. package/dist/completion-PT4VM2H2.js +17 -0
  280. package/dist/config-KL6WU7R2.cjs +20 -0
  281. package/dist/{config-ZN66VXPS.js → config-R4O7GBTY.js} +7 -5
  282. package/dist/{constants-UFM5B232.js → constants-HVCHVQAF.js} +2 -2
  283. package/dist/constants-RLMJ5D5P.cjs +21 -0
  284. package/dist/{defaultHooks-RCXPHF4M.cjs → defaultHooks-2V2CQL63.cjs} +26 -11
  285. package/dist/{defaultHooks-RDRMER3Z.js → defaultHooks-TMHDU3FS.js} +26 -11
  286. package/dist/export-3PK3VFCE.js +15 -0
  287. package/dist/export-WLGNWEMJ.cjs +15 -0
  288. package/dist/{extractSessionMemories-V7K42ZHW.js → extractSessionMemories-A2JX5WJ2.js} +1 -1
  289. package/dist/{extractSessionMemories-SDW2MVBQ.cjs → extractSessionMemories-XL3MS37F.cjs} +1 -1
  290. package/dist/feedback-G635NCLJ.js +18 -0
  291. package/dist/feedback-LLMK3TZH.cjs +18 -0
  292. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  293. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  294. package/dist/filesystem-L6DQKGWK.js +11 -0
  295. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  296. package/dist/{formatters-6K7QVWQL.cjs → formatters-53XTCNGQ.cjs} +1 -1
  297. package/dist/{formatters-DQHO5I36.js → formatters-T6KV4BPP.js} +1 -1
  298. package/dist/help-BAXLP2M2.cjs +12 -0
  299. package/dist/{help-2BLR7L43.js → help-X3OAZ3CY.js} +3 -3
  300. package/dist/history-6HOJSEMT.cjs +14 -0
  301. package/dist/{history-5FZ3M2AK.js → history-YKFPHBJN.js} +3 -3
  302. package/dist/hooks-7TA4PIIB.js +18 -0
  303. package/dist/hooks-XVFU67T2.cjs +18 -0
  304. package/dist/{i18n-K7QOWIBH.js → i18n-2KBUU7XL.js} +2 -2
  305. package/dist/i18n-MUJMKTFM.cjs +33 -0
  306. package/dist/ide-CCQ33PGC.cjs +15 -0
  307. package/dist/ide-VLVFBZ5F.js +15 -0
  308. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  309. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  310. package/dist/{import-UXM3VK7B.js → import-4CHYLS4K.js} +4 -4
  311. package/dist/{import-QEME3E4T.cjs → import-I7T4ZHYL.cjs} +4 -4
  312. package/dist/import-J46F54JY.cjs +10 -0
  313. package/dist/import-JWPYKXCZ.js +10 -0
  314. package/dist/index.cjs +747 -22356
  315. package/dist/index.d.cts +93 -0
  316. package/dist/index.d.ts +93 -0
  317. package/dist/index.js +786 -22395
  318. package/dist/init-262MWZV4.js +10 -0
  319. package/dist/init-EE5Y7RBL.cjs +10 -0
  320. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  321. package/dist/inkMode-WBNFOSAT.js +7 -0
  322. package/dist/inputPrompt-IIFKCX5Q.cjs +90 -0
  323. package/dist/inputPrompt-YGBHDUEP.js +90 -0
  324. package/dist/language-CVLPB7OV.js +21 -0
  325. package/dist/language-ZTWFHUSV.cjs +21 -0
  326. package/dist/learn-PON7I5QS.js +23 -0
  327. package/dist/learn-XLRSVNA3.cjs +23 -0
  328. package/dist/{lint-D5UOJWIK.cjs → lint-4NDGCSCL.cjs} +1 -1
  329. package/dist/{lint-NJPZWVN2.js → lint-FZ7ZJUB3.js} +1 -1
  330. package/dist/login-223QTGBG.cjs +26 -0
  331. package/dist/login-6IKTBUBY.js +26 -0
  332. package/dist/logout-RN2AG6SI.js +23 -0
  333. package/dist/logout-U3M4FFX7.cjs +23 -0
  334. package/dist/mcp-5O6PUL4G.js +20 -0
  335. package/dist/mcp-NUQ76QQB.cjs +20 -0
  336. package/dist/{mcp-install-VESN42PI.js → mcp-install-6XWXLFVY.js} +18 -11
  337. package/dist/{mcp-install-G27HSS3Z.cjs → mcp-install-P6DHES7V.cjs} +22 -15
  338. package/dist/memory-CYMDQ2YC.cjs +10 -0
  339. package/dist/memory-Q54CESNM.js +10 -0
  340. package/dist/{message-ZJ5AYAMT.cjs → message-4OKO775J.cjs} +1 -1
  341. package/dist/{message-JUBOK2VU.js → message-X3LOAAM7.js} +1 -1
  342. package/dist/model-6AJ77PJG.js +10 -0
  343. package/dist/model-IDRCKDML.cjs +10 -0
  344. package/dist/new-7LEWOUF2.cjs +12 -0
  345. package/dist/new-ZXHEWC2S.js +12 -0
  346. package/dist/onboarding-FXX7YHSJ.cjs +35 -0
  347. package/dist/onboarding-JYNMK6NI.js +35 -0
  348. package/dist/{patch-MOD7QC3D.cjs → patch-DJ2GPFST.cjs} +1 -1
  349. package/dist/{patch-5F6VBIT3.js → patch-NIJWIRHS.js} +1 -1
  350. package/dist/permissions-YBNSANIA.cjs +10 -0
  351. package/dist/permissions-YHJMVA6L.js +10 -0
  352. package/dist/plan-XEJMOT55.cjs +13 -0
  353. package/dist/plan-YYUAXPTL.js +13 -0
  354. package/dist/pr-review-CW6J7P62.cjs +9 -0
  355. package/dist/pr-review-YZSBQVT2.js +9 -0
  356. package/dist/quit-B43SJ6E4.cjs +10 -0
  357. package/dist/quit-GWTNHQSP.js +10 -0
  358. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  359. package/dist/rawMode-GFNLXQPU.js +7 -0
  360. package/dist/{registry-KWZGYJC2.js → registry-34GL6BNJ.js} +30 -45
  361. package/dist/{registry-YN4FQPOO.cjs → registry-V24W7YK6.cjs} +66 -81
  362. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  363. package/dist/repeat-RALE6AUO.js +17 -0
  364. package/dist/resume-DYVOQN5L.cjs +16 -0
  365. package/dist/resume-M25UQKOX.js +16 -0
  366. package/dist/review-QHP2KP4Q.js +9 -0
  367. package/dist/review-UWHWQHCB.cjs +9 -0
  368. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  369. package/dist/ripgrep-VHJQQ55W.js +9 -0
  370. package/dist/rpc-NPS3PU4O.cjs +3730 -0
  371. package/dist/rpc-S3DGW6KV.js +3730 -0
  372. package/dist/search-CPX4PWHP.js +20 -0
  373. package/dist/search-VUF3M4N3.cjs +20 -0
  374. package/dist/{session-BSU2L5UI.cjs → session-LXKC4X5Q.cjs} +1 -1
  375. package/dist/{session-SZMRN5KG.js → session-NMMO4QOL.js} +1 -1
  376. package/dist/sessions-IYAXMK23.js +10 -0
  377. package/dist/sessions-JODKER5D.cjs +10 -0
  378. package/dist/settings-55BNW6BF.js +33 -0
  379. package/dist/settings-BKTS7OMC.cjs +33 -0
  380. package/dist/setup-IRC5HQG2.js +29 -0
  381. package/dist/setup-MMQ7TWOP.cjs +29 -0
  382. package/dist/share-6JRQECAH.cjs +17 -0
  383. package/dist/share-YM5MJKMO.js +17 -0
  384. package/dist/{skills-FYY6F2WV.cjs → skills-GGMZOVIE.cjs} +14 -11
  385. package/dist/skills-LWSOKOSH.cjs +29 -0
  386. package/dist/{skills-6OL4OSGA.js → skills-MVIZNHT4.js} +13 -10
  387. package/dist/skills-VWOMV3CR.js +29 -0
  388. package/dist/{skills-install-6CSWC24P.js → skills-install-QBA5RCV6.js} +22 -71
  389. package/dist/{skills-install-O3LZ2ETC.cjs → skills-install-VTAMCNNY.cjs} +35 -84
  390. package/dist/skills-new-GPL46YV2.js +18 -0
  391. package/dist/skills-new-L5BEZN5V.cjs +18 -0
  392. package/dist/slashCommands-FBPCIWM5.cjs +95 -0
  393. package/dist/slashCommands-FCWY5DXW.js +95 -0
  394. package/dist/status-3B5SDZPL.js +17 -0
  395. package/dist/status-TTGRF6NC.cjs +17 -0
  396. package/dist/summarizer-DGPHE5IQ.js +17 -0
  397. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  398. package/dist/sync-77CXVVTK.cjs +21 -0
  399. package/dist/{sync-KWX67OUN.js → sync-7BILIQHP.js} +4 -4
  400. package/dist/sync-7OKF6636.js +21 -0
  401. package/dist/sync-EH4K5U3N.cjs +40 -0
  402. package/dist/{tasks-5FPBIFLC.js → tasks-R5MBGAQ6.js} +1 -1
  403. package/dist/{tasks-TXGKGNH6.cjs → tasks-V4WB3MFR.cjs} +1 -1
  404. package/dist/{team-5YXP3JGR.js → team-JESCHGWB.js} +1 -1
  405. package/dist/{team-IIWEZKNR.cjs → team-VQQKWGZB.cjs} +1 -1
  406. package/dist/{teammate-L6EZQ3I2.js → teammate-GZQSCIMS.js} +29 -8
  407. package/dist/{teammate-2KMKJXAM.cjs → teammate-J6PHGL23.cjs} +30 -9
  408. package/dist/theme-64BYGJ57.cjs +21 -0
  409. package/dist/theme-YJE6HEON.js +21 -0
  410. package/dist/tools-3PPTTKFV.js +9 -0
  411. package/dist/tools-THIQA7WC.cjs +9 -0
  412. package/dist/ui/questionModal.cjs +9 -6
  413. package/dist/ui/questionModal.js +8 -5
  414. package/dist/undo-PRTEGL2J.cjs +10 -0
  415. package/dist/undo-SZEHLX7X.js +10 -0
  416. package/dist/{update-TVAJMMBC.js → update-53WMKYVS.js} +1 -1
  417. package/dist/{update-Z6BIIQDC.cjs → update-NV6QRYY7.cjs} +1 -1
  418. package/dist/web-3BA2WV37.cjs +37 -0
  419. package/dist/web-6FYGBX5K.js +37 -0
  420. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  421. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  422. package/dist/yolo-GF2YD7ZI.js +9 -0
  423. package/dist/yolo-OGDA7HNC.cjs +9 -0
  424. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  425. package/dist/yoloMode-4JOOSU26.js +17 -0
  426. package/package.json +46 -49
  427. package/dist/AgentRegistry-NQCLWABO.cjs +0 -10
  428. package/dist/CommunitySkillsCache-6QPRMTJO.js +0 -8
  429. package/dist/CommunitySkillsCache-GTQMOCCO.cjs +0 -8
  430. package/dist/GitHubRegistryFetcher-S7QFUEKV.cjs +0 -7
  431. package/dist/HookManager-Q2KYMCP4.cjs +0 -7
  432. package/dist/HookManager-TTP4Y6DC.js +0 -7
  433. package/dist/LearnAdvisor-A4Q5PPBI.js +0 -9
  434. package/dist/LearnAdvisor-GASQD7HT.cjs +0 -9
  435. package/dist/McpClientManager-RKD7C6OY.cjs +0 -8
  436. package/dist/MemoryManager-GUNLRP5S.js +0 -8
  437. package/dist/MemoryManager-TNSGKDKX.cjs +0 -8
  438. package/dist/PermissionManager-KMN53FJP.cjs +0 -11
  439. package/dist/ProviderFactory-MR5B23QJ.js +0 -9
  440. package/dist/ProviderFactory-VFGCJJX6.cjs +0 -9
  441. package/dist/SessionManager-FEUAU3ZJ.cjs +0 -10
  442. package/dist/SessionManager-IKWAK2PI.js +0 -10
  443. package/dist/SkillsRegistry-KPQFTRIT.cjs +0 -9
  444. package/dist/SkillsRegistry-XJSKPDF2.js +0 -9
  445. package/dist/SubAgent-NYH6GWQ3.js +0 -11
  446. package/dist/SubAgent-PZKBDUBA.cjs +0 -11
  447. package/dist/SyncApiClient-ZNYMT36M.cjs +0 -11
  448. package/dist/about-HHTF2YFL.js +0 -12
  449. package/dist/about-JGRVNNQC.cjs +0 -12
  450. package/dist/actionExecutor-U6IBN2TU.cjs +0 -19
  451. package/dist/actionExecutor-XT5FW3W6.js +0 -19
  452. package/dist/add-dir-247K3XRY.js +0 -10
  453. package/dist/add-dir-GS4DXKKH.cjs +0 -10
  454. package/dist/agents-R6ZEFTVR.cjs +0 -12
  455. package/dist/agents-WJPQWQF2.js +0 -12
  456. package/dist/agents-new-HKVEIBDJ.js +0 -14
  457. package/dist/agents-new-X6GTHIO6.cjs +0 -14
  458. package/dist/autoSkill-H4T6VVDA.cjs +0 -20
  459. package/dist/automode-BC6NVECO.js +0 -10
  460. package/dist/automode-WN2RSOGW.cjs +0 -10
  461. package/dist/chunk-33A755XB.cjs +0 -168
  462. package/dist/chunk-3OTU3RS3.cjs +0 -1607
  463. package/dist/chunk-4PKF7WPD.js +0 -100
  464. package/dist/chunk-ALYU6VTM.js +0 -105
  465. package/dist/chunk-AS6RTLN7.cjs +0 -203
  466. package/dist/chunk-BWN2CLLM.cjs +0 -298
  467. package/dist/chunk-HQ7YZKXE.js +0 -168
  468. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  469. package/dist/chunk-J6QET7EF.cjs +0 -454
  470. package/dist/chunk-LWUJFGOZ.js +0 -115
  471. package/dist/chunk-P47WPOXN.js +0 -298
  472. package/dist/chunk-PRRCJFU3.cjs +0 -85
  473. package/dist/chunk-RO6WYEWH.js +0 -454
  474. package/dist/chunk-SYVYLZZF.cjs +0 -24
  475. package/dist/chunk-T73IDKDF.js +0 -111
  476. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  477. package/dist/chunk-ZQE72E6W.cjs +0 -100
  478. package/dist/chunk-ZVY2XD6T.js +0 -1607
  479. package/dist/clear-UO4MNWZW.cjs +0 -12
  480. package/dist/clear-ZJ5NYP6E.js +0 -12
  481. package/dist/communityInstaller-PVSOFDZD.cjs +0 -19
  482. package/dist/completion-MMF2PN2H.js +0 -14
  483. package/dist/completion-UI5WKHXI.cjs +0 -14
  484. package/dist/config-E7RINK4R.cjs +0 -18
  485. package/dist/constants-6CPCJ3DY.cjs +0 -21
  486. package/dist/export-N4XIVDSL.cjs +0 -12
  487. package/dist/export-W22L4D5C.js +0 -12
  488. package/dist/feedback-DR6ADSNE.cjs +0 -15
  489. package/dist/feedback-FEEAP4QW.js +0 -15
  490. package/dist/filesystem-3SGCW2BF.js +0 -10
  491. package/dist/filesystem-MCFXJQ6R.cjs +0 -10
  492. package/dist/help-AQHGTS7P.cjs +0 -12
  493. package/dist/history-NIUDRMKA.cjs +0 -14
  494. package/dist/hooks-2EY4IPKV.js +0 -13
  495. package/dist/hooks-LJVORRIG.cjs +0 -13
  496. package/dist/i18n-ARDG2SMC.cjs +0 -33
  497. package/dist/ide-GFW6IJHD.js +0 -12
  498. package/dist/ide-N2ZNSSB3.cjs +0 -12
  499. package/dist/import-DFVN3KNZ.js +0 -10
  500. package/dist/import-ZS6DPGU5.cjs +0 -10
  501. package/dist/init-PY75HA3S.cjs +0 -10
  502. package/dist/init-QNMWLAVY.js +0 -10
  503. package/dist/language-5UE4G2BT.cjs +0 -18
  504. package/dist/language-UXMHEZUJ.js +0 -18
  505. package/dist/learn-HJ3FLNZC.cjs +0 -20
  506. package/dist/learn-MVYS3RU5.js +0 -20
  507. package/dist/localProjectPermissions-N77HA3XK.js +0 -18
  508. package/dist/localProjectPermissions-UFSMNTBJ.cjs +0 -18
  509. package/dist/login-DSE7H63A.js +0 -20
  510. package/dist/login-V3MEWPKN.cjs +0 -20
  511. package/dist/logout-BMVCLKKW.js +0 -18
  512. package/dist/logout-XEG7FHOZ.cjs +0 -18
  513. package/dist/mcp-PYUR4PHO.js +0 -18
  514. package/dist/mcp-SG6JFLGC.cjs +0 -18
  515. package/dist/memory-4ZMMEZ2Z.js +0 -10
  516. package/dist/memory-QSGMVVGH.cjs +0 -10
  517. package/dist/model-NANLBZ4Z.cjs +0 -10
  518. package/dist/model-ZXNV4AF7.js +0 -10
  519. package/dist/new-5QJY5JP2.js +0 -12
  520. package/dist/new-PMMG55UX.cjs +0 -12
  521. package/dist/permissions-LECTCJ4H.cjs +0 -13
  522. package/dist/permissions-VP5VGIBL.js +0 -13
  523. package/dist/plan-G5CEKJI4.js +0 -11
  524. package/dist/plan-QKOHE3LH.cjs +0 -11
  525. package/dist/quit-BKOOPHU5.cjs +0 -10
  526. package/dist/quit-FVFNYACP.js +0 -10
  527. package/dist/resume-EXFQSQPH.js +0 -13
  528. package/dist/resume-PP2IQM5S.cjs +0 -13
  529. package/dist/search-C56FBN67.cjs +0 -17
  530. package/dist/search-XGZDYBF4.js +0 -17
  531. package/dist/sessions-54KI3F2Q.js +0 -10
  532. package/dist/sessions-DDTSPNVW.cjs +0 -10
  533. package/dist/settings-BDO37TTO.cjs +0 -30
  534. package/dist/settings-FHRDFPLK.js +0 -30
  535. package/dist/share-IERCTBGN.cjs +0 -14
  536. package/dist/share-TGROUE6R.js +0 -14
  537. package/dist/skills-OM4IGBAA.cjs +0 -26
  538. package/dist/skills-S3GRN323.js +0 -26
  539. package/dist/skills-new-ALD2PTHN.js +0 -15
  540. package/dist/skills-new-PWLKK7GW.cjs +0 -15
  541. package/dist/slashCommands-L4ZD33LJ.js +0 -75
  542. package/dist/slashCommands-YY2VUUDF.cjs +0 -75
  543. package/dist/status-3PC5XWSS.cjs +0 -11
  544. package/dist/status-KCLVOYPD.js +0 -11
  545. package/dist/sync-6SDWG5RK.js +0 -18
  546. package/dist/sync-7JMZVEQD.cjs +0 -40
  547. package/dist/sync-WHURZL3U.cjs +0 -18
  548. package/dist/theme-BE5A4FPN.cjs +0 -18
  549. package/dist/theme-YMFCQP7J.js +0 -18
  550. package/dist/undo-KZHUUZTD.cjs +0 -10
  551. package/dist/undo-NEIEHQVX.js +0 -10
@@ -0,0 +1,139 @@
1
+ import {
2
+ PROJECT_DIR_NAME
3
+ } from "./chunk-TWQDAUZU.js";
4
+
5
+ // src/permissions/localProjectPermissions.ts
6
+ import fs from "fs-extra";
7
+ import path from "path";
8
+ var LOCAL_SETTINGS_FILE = "settings.local.json";
9
+ function normalizePermissionSettings(settings) {
10
+ if (!settings) {
11
+ return settings;
12
+ }
13
+ const allowList = settings.allowList ?? settings.whitelist ?? [];
14
+ const denyList = settings.denyList ?? settings.blacklist ?? [];
15
+ return {
16
+ ...settings,
17
+ allowList,
18
+ denyList,
19
+ whitelist: void 0,
20
+ blacklist: void 0
21
+ };
22
+ }
23
+ function getLocalSettingsPath(workspaceRoot) {
24
+ return path.join(workspaceRoot, PROJECT_DIR_NAME, LOCAL_SETTINGS_FILE);
25
+ }
26
+ async function loadLocalProjectSettings(workspaceRoot) {
27
+ const settingsPath = getLocalSettingsPath(workspaceRoot);
28
+ try {
29
+ if (await fs.pathExists(settingsPath)) {
30
+ const content = await fs.readFile(settingsPath, "utf8");
31
+ const parsed = JSON.parse(content);
32
+ return {
33
+ ...parsed,
34
+ permissions: normalizePermissionSettings(parsed.permissions)
35
+ };
36
+ }
37
+ } catch (error) {
38
+ console.error(`Warning: Failed to parse local settings at ${settingsPath}:`, error.message);
39
+ }
40
+ return null;
41
+ }
42
+ async function saveLocalProjectSettings(workspaceRoot, settings) {
43
+ const settingsPath = getLocalSettingsPath(workspaceRoot);
44
+ const dir = path.dirname(settingsPath);
45
+ await fs.ensureDir(dir);
46
+ const toSave = {
47
+ ...settings,
48
+ version: 1
49
+ };
50
+ await fs.writeJson(settingsPath, toSave, { spaces: 2 });
51
+ }
52
+ async function addToLocalAllowList(workspaceRoot, pattern) {
53
+ const current = await loadLocalProjectSettings(workspaceRoot) || {};
54
+ const permissions = normalizePermissionSettings(current.permissions) || {};
55
+ const allowList = permissions.allowList || [];
56
+ if (!allowList.includes(pattern)) {
57
+ allowList.push(pattern);
58
+ await saveLocalProjectSettings(workspaceRoot, {
59
+ ...current,
60
+ permissions: {
61
+ ...permissions,
62
+ allowList
63
+ }
64
+ });
65
+ }
66
+ }
67
+ async function addToLocalDenyList(workspaceRoot, pattern) {
68
+ const current = await loadLocalProjectSettings(workspaceRoot) || {};
69
+ const permissions = normalizePermissionSettings(current.permissions) || {};
70
+ const denyList = permissions.denyList || [];
71
+ if (!denyList.includes(pattern)) {
72
+ denyList.push(pattern);
73
+ await saveLocalProjectSettings(workspaceRoot, {
74
+ ...current,
75
+ permissions: {
76
+ ...permissions,
77
+ denyList
78
+ }
79
+ });
80
+ }
81
+ }
82
+ function mergePermissions(globalSettings, localSettings) {
83
+ const normalizedGlobal = normalizePermissionSettings(globalSettings) ?? {};
84
+ const normalizedLocal = normalizePermissionSettings(localSettings);
85
+ if (!normalizedLocal) {
86
+ return normalizedGlobal;
87
+ }
88
+ return {
89
+ // Global settings as base
90
+ ...normalizedGlobal,
91
+ // Local mode overrides global if set
92
+ mode: normalizedLocal.mode || normalizedGlobal.mode,
93
+ allowList: [
94
+ ...normalizedGlobal.allowList || [],
95
+ ...normalizedLocal.allowList || []
96
+ ].filter((v, i, a) => a.indexOf(v) === i),
97
+ denyList: [
98
+ ...normalizedGlobal.denyList || [],
99
+ ...normalizedLocal.denyList || []
100
+ ].filter((v, i, a) => a.indexOf(v) === i),
101
+ // Merge rules (local rules checked first)
102
+ rules: [
103
+ ...normalizedLocal.rules || [],
104
+ ...normalizedGlobal.rules || []
105
+ ],
106
+ // Use local rememberSession if set, otherwise global
107
+ rememberSession: normalizedLocal.rememberSession ?? normalizedGlobal.rememberSession,
108
+ allowPatterns: [
109
+ ...normalizedGlobal.allowPatterns || [],
110
+ ...normalizedLocal.allowPatterns || []
111
+ ],
112
+ denyPatterns: [
113
+ ...normalizedGlobal.denyPatterns || [],
114
+ ...normalizedLocal.denyPatterns || []
115
+ ],
116
+ availableTools: [
117
+ ...normalizedGlobal.availableTools || [],
118
+ ...normalizedLocal.availableTools || []
119
+ ],
120
+ excludedTools: [
121
+ ...normalizedGlobal.excludedTools || [],
122
+ ...normalizedLocal.excludedTools || []
123
+ ],
124
+ allPathsAllowed: normalizedLocal.allPathsAllowed ?? normalizedGlobal.allPathsAllowed,
125
+ allUrlsAllowed: normalizedLocal.allUrlsAllowed ?? normalizedGlobal.allUrlsAllowed
126
+ };
127
+ }
128
+
129
+ export {
130
+ loadLocalProjectSettings,
131
+ addToLocalAllowList,
132
+ addToLocalDenyList,
133
+ mergePermissions
134
+ };
135
+ /**
136
+ * Local Project Permissions
137
+ * Handles per-project permission settings stored in .autohand/settings.local.json
138
+ * @license Apache-2.0
139
+ */
@@ -2,21 +2,27 @@ import {
2
2
  normalizeMcpCommandForConfig
3
3
  } from "./chunk-WQ3VJXZB.js";
4
4
  import {
5
- I18nProvider
6
- } from "./chunk-SLQAYV3W.js";
5
+ I18nProvider,
6
+ inkRenderOptions
7
+ } from "./chunk-NMQ47RCG.js";
7
8
  import {
8
9
  loadConfig,
9
10
  saveConfig
10
- } from "./chunk-P47WPOXN.js";
11
+ } from "./chunk-3UT7R3XV.js";
12
+ import {
13
+ ThemeProvider,
14
+ useTheme
15
+ } from "./chunk-NBGOIFKP.js";
11
16
  import {
12
17
  PROJECT_DIR_NAME
13
- } from "./chunk-EGFT4PGW.js";
18
+ } from "./chunk-TWQDAUZU.js";
14
19
  import {
15
20
  t
16
- } from "./chunk-APIXPPMT.js";
21
+ } from "./chunk-CBFH2J3O.js";
17
22
 
18
23
  // src/commands/mcp.ts
19
24
  import chalk from "chalk";
25
+ import fs from "fs-extra";
20
26
  import path from "path";
21
27
 
22
28
  // src/ui/ink/components/McpServerList.tsx
@@ -24,6 +30,7 @@ import { useState, useCallback } from "react";
24
30
  import { Box, Text, useInput, render } from "ink";
25
31
  import { jsx, jsxs } from "react/jsx-runtime";
26
32
  function McpServerList({ servers, onToggle, onDone }) {
33
+ const { theme } = useTheme();
27
34
  const [cursor, setCursor] = useState(0);
28
35
  const [toggling, setToggling] = useState(null);
29
36
  const handleToggle = useCallback(async () => {
@@ -53,60 +60,41 @@ function McpServerList({ servers, onToggle, onDone }) {
53
60
  });
54
61
  if (servers.length === 0) {
55
62
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
56
- /* @__PURE__ */ jsx(Text, { color: "cyan", bold: true, children: "MCP Servers" }),
63
+ /* @__PURE__ */ jsx(Text, { bold: true, children: theme.fg("accent", "MCP Servers") }),
57
64
  /* @__PURE__ */ jsx(Text, { children: " " }),
58
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "No MCP servers configured." }),
65
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "No MCP servers configured.") }),
59
66
  /* @__PURE__ */ jsx(Text, { children: " " }),
60
- /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
61
- "Add a server: /mcp add ",
62
- "<name>",
63
- " ",
64
- "<command>",
65
- " [args...]"
66
- ] }),
67
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "Browse: /mcp install" }),
67
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Add a server: /mcp add <name> <command> [args...]") }),
68
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Browse: /mcp install") }),
68
69
  /* @__PURE__ */ jsx(Text, { children: " " }),
69
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "Press ESC or q to close" })
70
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Press ESC or q to close") })
70
71
  ] });
71
72
  }
72
73
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
73
- /* @__PURE__ */ jsx(Text, { color: "cyan", bold: true, children: "MCP Servers" }),
74
- /* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsx(Text, { color: "gray", children: "\u2500".repeat(56) }) }),
74
+ /* @__PURE__ */ jsx(Text, { bold: true, children: theme.fg("accent", "MCP Servers") }),
75
+ /* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "\u2500".repeat(56)) }) }),
75
76
  servers.map((server, i) => {
76
77
  const isSelected = i === cursor;
77
78
  const isToggling = toggling === server.name;
78
79
  const statusIcon = server.status === "connected" ? "\u25CF" : server.status === "error" ? "\u25CF" : "\u25CB";
79
- const statusColor = server.status === "connected" ? "green" : server.status === "error" ? "red" : "gray";
80
+ const statusToken = server.status === "connected" ? "success" : server.status === "error" ? "error" : "muted";
80
81
  const statusLabel = server.status === "connected" ? "enabled" : server.status === "error" ? "error" : "disabled";
81
82
  const toolsInfo = server.status === "connected" && server.toolCount > 0 ? ` (${server.toolCount} tools)` : "";
82
83
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
83
84
  /* @__PURE__ */ jsxs(Box, { children: [
84
- /* @__PURE__ */ jsx(Text, { color: isSelected ? "yellow" : void 0, children: isSelected ? "\u25B8 " : " " }),
85
- /* @__PURE__ */ jsxs(Text, { color: statusColor, children: [
86
- statusIcon,
87
- " "
88
- ] }),
85
+ /* @__PURE__ */ jsx(Text, { children: theme.fg(isSelected ? "warning" : "muted", isSelected ? "\u25B8 " : " ") }),
86
+ /* @__PURE__ */ jsx(Text, { children: theme.fg(statusToken, `${statusIcon} `) }),
89
87
  /* @__PURE__ */ jsx(Text, { bold: isSelected, children: server.name.padEnd(24) }),
90
- /* @__PURE__ */ jsx(Text, { color: statusColor, children: isToggling ? "toggling..." : statusLabel }),
91
- /* @__PURE__ */ jsx(Text, { color: "gray", children: toolsInfo })
88
+ /* @__PURE__ */ jsx(Text, { children: theme.fg(statusToken, isToggling ? "toggling..." : statusLabel) }),
89
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", toolsInfo) })
92
90
  ] }),
93
- isSelected && server.status === "error" && server.error && /* @__PURE__ */ jsx(Box, { marginLeft: 4, children: /* @__PURE__ */ jsxs(Text, { color: "red", dimColor: true, children: [
94
- " ",
95
- server.error
96
- ] }) })
91
+ isSelected && server.status === "error" && server.error && /* @__PURE__ */ jsx(Box, { marginLeft: 4, children: /* @__PURE__ */ jsx(Text, { children: theme.fg("error", ` ${server.error}`) }) })
97
92
  ] }, server.name);
98
93
  }),
99
94
  /* @__PURE__ */ jsx(Text, { children: " " }),
100
95
  /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
101
- /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
102
- "\u2191\u2193",
103
- " navigate ",
104
- "\u23CE/space",
105
- " toggle ",
106
- "q/esc",
107
- " close"
108
- ] }),
109
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "Connected servers provide tools to the agent" })
96
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "\u2191\u2193 navigate \u23CE/space toggle q/esc close") }),
97
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "Connected servers provide tools to the agent") })
110
98
  ] })
111
99
  ] });
112
100
  }
@@ -119,14 +107,14 @@ async function showMcpServerList(options) {
119
107
  let completed = false;
120
108
  let instance;
121
109
  const renderList = () => {
122
- const element = /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
110
+ const element = /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
123
111
  McpServerList,
124
112
  {
125
113
  servers: currentServers,
126
114
  onToggle: async (name, status) => {
127
115
  currentServers = await options.onToggle(name, status);
128
116
  instance.rerender(
129
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
117
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
130
118
  McpServerList,
131
119
  {
132
120
  servers: currentServers,
@@ -141,7 +129,7 @@ async function showMcpServerList(options) {
141
129
  resolve();
142
130
  }
143
131
  }
144
- ) })
132
+ ) }) })
145
133
  );
146
134
  },
147
135
  onDone: () => {
@@ -151,11 +139,16 @@ async function showMcpServerList(options) {
151
139
  resolve();
152
140
  }
153
141
  }
154
- ) });
142
+ ) }) });
155
143
  if (instance) {
156
144
  instance.rerender(element);
157
145
  } else {
158
- instance = render(element, { exitOnCtrlC: false });
146
+ instance = render(element, inkRenderOptions({
147
+ stdin: process.stdin,
148
+ stdout: process.stdout,
149
+ stderr: process.stderr,
150
+ exitOnCtrlC: false
151
+ }));
159
152
  }
160
153
  };
161
154
  renderList();
@@ -181,8 +174,15 @@ async function loadConfigForScope(scopeInput, workspaceRoot) {
181
174
  if (!workspaceRoot) {
182
175
  throw new Error("Workspace root is required for project scope.");
183
176
  }
184
- const projectConfigPath = path.join(workspaceRoot, PROJECT_DIR_NAME, "config.json");
185
- return { config: await loadConfig(projectConfigPath), scope };
177
+ const projectConfigDir = path.join(workspaceRoot, PROJECT_DIR_NAME);
178
+ const candidates = ["config.toml", "config.yaml", "config.yml", "config.json"].map(
179
+ (file) => path.join(projectConfigDir, file)
180
+ );
181
+ const existing = await Promise.all(candidates.map(
182
+ async (candidate) => await fs.pathExists(candidate) ? candidate : null
183
+ ));
184
+ const projectConfigPath = existing.find((candidate) => Boolean(candidate)) ?? path.join(projectConfigDir, "config.json");
185
+ return { config: await loadConfig(projectConfigPath, workspaceRoot), scope };
186
186
  }
187
187
  function syncRuntimeConfig(runtimeConfig, updatedConfig) {
188
188
  if (!runtimeConfig) return;
@@ -556,7 +556,8 @@ var metadata = {
556
556
  { name: "disconnect", description: "Disconnect from a server" },
557
557
  { name: "list", description: "List available tools from servers" },
558
558
  { name: "add", description: "Add a server to config" },
559
- { name: "remove", description: "Remove a server from config" }
559
+ { name: "remove", description: "Remove a server from config" },
560
+ { name: "install", description: t("commands.mcp.installDescription") }
560
561
  ]
561
562
  };
562
563
  var installMetadata = {
@@ -1,11 +1,9 @@
1
1
  // src/core/conversationManager.ts
2
2
  var ConversationManager = class _ConversationManager {
3
+ static instance = null;
4
+ messages = [];
5
+ initialized = false;
3
6
  constructor() {
4
- this.messages = [];
5
- this.initialized = false;
6
- }
7
- static {
8
- this.instance = null;
9
7
  }
10
8
  static getInstance() {
11
9
  if (!_ConversationManager.instance) {
@@ -34,6 +32,24 @@ var ConversationManager = class _ConversationManager {
34
32
  history() {
35
33
  return [...this.messages];
36
34
  }
35
+ removeIndices(indices) {
36
+ if (!this.initialized || indices.length === 0 || this.messages.length <= 1) {
37
+ return [];
38
+ }
39
+ const uniqueValidIndices = [...new Set(indices)].filter((index) => index > 0 && index < this.messages.length).sort((a, b) => a - b);
40
+ if (uniqueValidIndices.length === 0) {
41
+ return [];
42
+ }
43
+ const removed = [];
44
+ for (let i = uniqueValidIndices.length - 1; i >= 0; i -= 1) {
45
+ const index = uniqueValidIndices[i];
46
+ const [message] = this.messages.splice(index, 1);
47
+ if (message) {
48
+ removed.unshift(message);
49
+ }
50
+ }
51
+ return removed;
52
+ }
37
53
  cropHistory(direction, amount) {
38
54
  if (!this.initialized || amount <= 0 || this.messages.length <= 1) {
39
55
  return [];
@@ -60,19 +76,35 @@ var ConversationManager = class _ConversationManager {
60
76
  if (!toRemove.length) {
61
77
  return [];
62
78
  }
63
- toRemove.sort((a, b) => a - b);
64
- const removed = [];
65
- for (let i = toRemove.length - 1; i >= 0; i -= 1) {
66
- const index = toRemove[i];
67
- const [message] = this.messages.splice(index, 1);
68
- removed.unshift(message);
79
+ return this.removeIndices(toRemove);
80
+ }
81
+ replaceMessage(index, message) {
82
+ if (!this.initialized) {
83
+ throw new Error("ConversationManager must be initialized before replacing messages.");
84
+ }
85
+ if (index >= 0 && index < this.messages.length) {
86
+ this.messages[index] = message;
69
87
  }
70
- return removed;
71
88
  }
72
- addSystemNote(content) {
89
+ /**
90
+ * Add a system note to the conversation.
91
+ * If `replaceKey` is provided, replaces an existing system note containing
92
+ * that key instead of appending. This prevents accumulation of old context
93
+ * summary notes that never get cleaned up.
94
+ */
95
+ addSystemNote(content, replaceKey) {
73
96
  if (!this.initialized) {
74
97
  throw new Error("ConversationManager must be initialized before adding summaries.");
75
98
  }
99
+ if (replaceKey) {
100
+ const idx = this.messages.findIndex(
101
+ (m) => m.role === "system" && m.content?.includes(replaceKey)
102
+ );
103
+ if (idx >= 0) {
104
+ this.messages[idx] = { role: "system", content };
105
+ return;
106
+ }
107
+ }
76
108
  this.messages.push({ role: "system", content });
77
109
  }
78
110
  /**
@@ -1,16 +1,17 @@
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; }
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; } var _class; var _class2;
2
2
 
3
- var _chunkSEKD5FH3cjs = require('./chunk-SEKD5FH3.cjs');
3
+ var _chunkE26KKI46cjs = require('./chunk-E26KKI46.cjs');
4
4
 
5
5
  // src/session/SessionManager.ts
6
6
  var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
7
7
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
8
8
  var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto);
9
- var SessionManager = class {
10
- constructor(baseDir) {
11
- this.currentSession = null;
12
- this.index = null;
13
- this.sessionsDir = _nullishCoalesce(baseDir, () => ( _chunkSEKD5FH3cjs.AUTOHAND_PATHS.sessions));
9
+ var SessionManager = (_class = class {
10
+
11
+ __init() {this.currentSession = null}
12
+ __init2() {this.index = null}
13
+ constructor(baseDir) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
14
+ this.sessionsDir = _nullishCoalesce(baseDir, () => ( _chunkE26KKI46cjs.AUTOHAND_PATHS.sessions));
14
15
  }
15
16
  async initialize() {
16
17
  await _fsextra2.default.ensureDir(this.sessionsDir);
@@ -136,11 +137,13 @@ var SessionManager = class {
136
137
  }
137
138
  await this.saveIndex();
138
139
  }
139
- };
140
- var Session = class {
141
- constructor(sessionDir, metadata) {
142
- this.messages = [];
143
- this.state = null;
140
+ }, _class);
141
+ var Session = (_class2 = class {
142
+
143
+
144
+ __init3() {this.messages = []}
145
+ __init4() {this.state = null}
146
+ constructor(sessionDir, metadata) {;_class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this);
144
147
  this.sessionDir = sessionDir;
145
148
  this.metadata = metadata;
146
149
  }
@@ -190,7 +193,7 @@ var Session = class {
190
193
  }
191
194
  await this.save();
192
195
  }
193
- };
196
+ }, _class2);
194
197
 
195
198
 
196
199
 
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkCNBKZEX5cjs = require('./chunk-CNBKZEX5.cjs');
3
+ var _chunkDA7NBAJKcjs = require('./chunk-DA7NBAJK.cjs');
4
4
 
5
5
 
6
6
  var _chunkYFXTE422cjs = require('./chunk-YFXTE422.cjs');
7
7
 
8
8
 
9
- var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
9
+ var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
10
10
 
11
11
  // src/commands/clear.ts
12
12
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -16,7 +16,7 @@ async function clearConversation(ctx) {
16
16
  sessionId: _nullishCoalesce(_optionalChain([ctx, 'access', _ => _.sessionManager, 'access', _2 => _2.getCurrentSession, 'call', _3 => _3(), 'optionalAccess', _4 => _4.metadata, 'access', _5 => _5.sessionId]), () => ( ""))
17
17
  });
18
18
  }
19
- const conversationHistory = _chunkCNBKZEX5cjs.ConversationManager.getInstance().history();
19
+ const conversationHistory = _chunkDA7NBAJKcjs.ConversationManager.getInstance().history();
20
20
  const saved = await _chunkYFXTE422cjs.extractAndSaveSessionMemories.call(void 0, {
21
21
  llm: ctx.llm,
22
22
  memoryManager: ctx.memoryManager,
@@ -29,6 +29,11 @@ async function clearConversation(ctx) {
29
29
  }
30
30
  await ctx.resetConversation();
31
31
  await ctx.sessionManager.createSession(ctx.workspaceRoot, ctx.model);
32
+ if (ctx.clearScreen) {
33
+ ctx.clearScreen();
34
+ } else {
35
+ process.stdout.write("\x1B[2J\x1B[H");
36
+ }
32
37
  console.log();
33
38
  if (saved.length > 0) {
34
39
  console.log(
@@ -37,7 +42,7 @@ async function clearConversation(ctx) {
37
42
  )
38
43
  );
39
44
  } else {
40
- console.log(_chalk2.default.cyan(_chunk7BTSG4MEcjs.t.call(void 0, "commands.new.cleared")));
45
+ console.log(_chalk2.default.cyan(_chunkCHI52KFRcjs.t.call(void 0, "commands.new.cleared")));
41
46
  }
42
47
  console.log();
43
48
  return null;