autohand-cli 0.8.3 → 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 (510) hide show
  1. package/README.md +173 -74
  2. package/dist/AgentRegistry-EGBDIUAK.cjs +10 -0
  3. package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-XPWSVO3Q.js} +2 -2
  4. package/dist/{AutomodeManager-EOVHGRPP.js → AutomodeManager-APLLPEYJ.js} +31 -17
  5. package/dist/{AutomodeManager-6ATBE7Q5.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
  6. package/dist/CommunitySkillsCache-2OIUV227.cjs +8 -0
  7. package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZEQWP6YM.js} +2 -2
  8. package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
  9. package/dist/{GitHubRegistryFetcher-NT5GFZXS.js → GitHubRegistryFetcher-J2BWPXJF.js} +1 -1
  10. package/dist/{HookManager-B2F35M27.js → HookManager-CWLTFKWO.js} +1 -1
  11. package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TMAJQU4S.cjs} +2 -2
  12. package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-MQXEED2U.cjs} +37 -13
  13. package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-QBKQEXDW.js} +33 -9
  14. package/dist/LearnAdvisor-46FG2XIP.js +9 -0
  15. package/dist/LearnAdvisor-XBRDNAGH.cjs +9 -0
  16. package/dist/{McpClientManager-NQ3EW2IF.cjs → McpClientManager-BNSKLHIN.cjs} +2 -2
  17. package/dist/{McpClientManager-VBIMGKXU.js → McpClientManager-SL35BR24.js} +1 -1
  18. package/dist/MemoryManager-34L4YOKA.cjs +8 -0
  19. package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-WJMLPWGU.js} +2 -2
  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-7NQHRCHY.js → PermissionManager-KMYILJ4Z.js} +3 -3
  24. package/dist/{ProjectProfiler-UG42W6WD.cjs → ProjectProfiler-CDAE7ECW.cjs} +1 -0
  25. package/dist/{ProjectProfiler-P4QJQWWA.js → ProjectProfiler-NZTJDRHD.js} +1 -0
  26. package/dist/ProviderFactory-C3YPXTDD.cjs +11 -0
  27. package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-HFPRVQ25.js} +3 -1
  28. package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-PNBTJJTQ.js} +2 -2
  29. package/dist/SessionManager-WAPTFMDO.cjs +10 -0
  30. package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-4RRD5GMX.js} +2 -2
  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-B5RT2ECG.js → SyncApiClient-LRPFNCKJ.js} +1 -1
  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-TUJM3PG5.js → add-dir-VFX7QT4E.js} +3 -2
  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-LQEVQFIH.js → autoSkill-EFMK6WU6.js} +2 -2
  57. package/dist/autoSkill-YOLLFTP2.cjs +20 -0
  58. package/dist/{automode-R6P3VHLS.js → automode-BMYSRM34.js} +2 -2
  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/chrome-ATC4OO5I.cjs +20 -0
  63. package/dist/chrome-NHJ44WUN.js +50 -0
  64. package/dist/chrome-O62WXV7F.js +20 -0
  65. package/dist/chrome-XHJLCO4M.cjs +50 -0
  66. package/dist/chromeSkill-53TH55PM.js +105 -0
  67. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  68. package/dist/{chunk-EGPXJERY.cjs → chunk-2CGE7ZV3.cjs} +26 -26
  69. package/dist/chunk-2H5O745H.js +63 -0
  70. package/dist/chunk-2HOLOHVK.js +2219 -0
  71. package/dist/{chunk-3PDTTAKJ.js → chunk-2QL6MNXG.js} +15 -8
  72. package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
  73. package/dist/{chunk-VG34MG2U.js → chunk-37M5UM6I.js} +9 -6
  74. package/dist/{chunk-KLWJIPU2.cjs → chunk-3DDL2E55.cjs} +20 -16
  75. package/dist/chunk-3EDDDZS2.cjs +5 -0
  76. package/dist/{chunk-2UC22DJU.js → chunk-3GUEUCZK.js} +28 -4
  77. package/dist/{chunk-DVUHHH3B.cjs → chunk-3KLSNNRW.cjs} +4 -4
  78. package/dist/chunk-3LJJG5YY.cjs +387 -0
  79. package/dist/chunk-3OF56EMA.cjs +197 -0
  80. package/dist/chunk-3PXKRVCW.js +108 -0
  81. package/dist/{chunk-ADUFCS4Q.cjs → chunk-3S563FNF.cjs} +160 -79
  82. package/dist/chunk-3UT7R3XV.js +663 -0
  83. package/dist/chunk-4256YRCO.cjs +80 -0
  84. package/dist/chunk-46C73ZKK.cjs +663 -0
  85. package/dist/chunk-46MTALKD.js +44 -0
  86. package/dist/{chunk-AEJH23FO.cjs → chunk-47PHDKNW.cjs} +6 -6
  87. package/dist/chunk-4LMUDS2K.js +124 -0
  88. package/dist/{chunk-HLHTG5ZU.cjs → chunk-5CMYEM3R.cjs} +14 -12
  89. package/dist/{chunk-MBBY4ZIK.js → chunk-5F6ZKSHO.js} +4 -1
  90. package/dist/chunk-5JFTY3VU.js +74 -0
  91. package/dist/chunk-5JTTM5SC.js +59 -0
  92. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  93. package/dist/{chunk-GJH7XMSK.js → chunk-5VHP6HDQ.js} +8 -6
  94. package/dist/{chunk-6ZCULLCA.js → chunk-62RTC3XX.js} +1 -1
  95. package/dist/{chunk-64H4FRM3.cjs → chunk-6GUODJKM.cjs} +32 -34
  96. package/dist/{chunk-47CKWKEX.cjs → chunk-6HH236FV.cjs} +9 -4
  97. package/dist/{chunk-WHE2SWHU.js → chunk-6NVAK6CK.js} +2 -2
  98. package/dist/chunk-6R25D2H5.js +121 -0
  99. package/dist/{chunk-OUZQXMHL.cjs → chunk-6XVVIY54.cjs} +55 -25
  100. package/dist/{chunk-3L53OA4E.cjs → chunk-75EDROHL.cjs} +10 -10
  101. package/dist/{chunk-G4CAKI3V.js → chunk-7HPWMALN.js} +7 -2
  102. package/dist/chunk-7JLT2VNW.cjs +18963 -0
  103. package/dist/chunk-7LWQCE4Y.cjs +987 -0
  104. package/dist/{chunk-OLSBBZW6.cjs → chunk-7MU7LWF3.cjs} +5 -5
  105. package/dist/{chunk-TUD3Z3BD.js → chunk-7RFJB75Y.js} +140 -59
  106. package/dist/{chunk-X2MSVKDV.js → chunk-A7HHCIDQ.js} +2 -2
  107. package/dist/{chunk-SKYG33B2.cjs → chunk-AC7DZ6SK.cjs} +3 -3
  108. package/dist/{chunk-XX2ZO7DS.js → chunk-ACDQGA4Z.js} +90 -16
  109. package/dist/{chunk-CZXGCVTR.cjs → chunk-AOKCI722.cjs} +2 -2
  110. package/dist/chunk-ARBEHFCG.js +715 -0
  111. package/dist/{chunk-OOKY3HPZ.js → chunk-AT7OWLY5.js} +50 -9
  112. package/dist/chunk-AU6JAGZJ.cjs +231 -0
  113. package/dist/chunk-AUFNACED.js +18963 -0
  114. package/dist/{chunk-N2BLVUPM.cjs → chunk-AUYSIEVV.cjs} +3 -3
  115. package/dist/chunk-B4HSNOIH.cjs +354 -0
  116. package/dist/{chunk-EGMZDTSL.js → chunk-B5CGDNMR.js} +10 -2
  117. package/dist/{chunk-FTYY5JJD.js → chunk-BFQDQRDE.js} +2 -2
  118. package/dist/{chunk-2AA5MFES.js → chunk-BL2UC7HC.js} +8 -5
  119. package/dist/{chunk-T2M64VHA.cjs → chunk-BQ22N3TX.cjs} +56 -41
  120. package/dist/chunk-BQU3HAE7.js +21 -0
  121. package/dist/chunk-BWF4VDYE.js +3897 -0
  122. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  123. package/dist/{chunk-APIXPPMT.js → chunk-CBFH2J3O.js} +855 -33
  124. package/dist/chunk-CCVMREXI.js +420 -0
  125. package/dist/chunk-CFAWTLSC.js +13 -0
  126. package/dist/{chunk-G27PQQFD.js → chunk-CFFE4VA3.js} +1 -1
  127. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CH2J4PVE.cjs} +212 -70
  128. package/dist/{chunk-7BTSG4ME.cjs → chunk-CHI52KFR.cjs} +855 -33
  129. package/dist/{chunk-DJDE4DTT.cjs → chunk-CWINVFRI.cjs} +25 -19
  130. package/dist/{chunk-HXGBSJL5.cjs → chunk-D2OSPLYC.cjs} +2 -2
  131. package/dist/{chunk-GBHDROGL.js → chunk-D6GZBSOX.js} +16 -4
  132. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  133. package/dist/chunk-DEQVRSV5.cjs +866 -0
  134. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  135. package/dist/{chunk-K2C56QGS.cjs → chunk-DIZTWFVR.cjs} +1499 -482
  136. package/dist/{chunk-YZXUDM5X.js → chunk-DLP436GI.js} +204 -62
  137. package/dist/{chunk-OHUZKDGX.js → chunk-DMRXF5DU.js} +3 -3
  138. package/dist/{chunk-U46VYPLR.cjs → chunk-DPSIGY6L.cjs} +9 -9
  139. package/dist/{chunk-SEKD5FH3.cjs → chunk-E26KKI46.cjs} +5 -2
  140. package/dist/{chunk-SJAVBCOA.js → chunk-E46DJH5S.js} +3 -3
  141. package/dist/{chunk-DV2ZHK7B.cjs → chunk-E6GFD7VR.cjs} +49 -26
  142. package/dist/chunk-ES2HJQ4N.js +37 -0
  143. package/dist/chunk-EZJHLOWP.js +80 -0
  144. package/dist/chunk-FFBDRUO5.cjs +59 -0
  145. package/dist/{chunk-SV2WA57F.js → chunk-FGT6KK6T.js} +38 -15
  146. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  147. package/dist/{chunk-QXH5RCFI.js → chunk-FQAVGSPW.js} +2 -2
  148. package/dist/chunk-FQVG6ZHF.js +197 -0
  149. package/dist/chunk-GBMDFWJX.cjs +152 -0
  150. package/dist/{chunk-NAGQ2PDC.js → chunk-GGLKUENP.js} +1453 -436
  151. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  152. package/dist/{chunk-MYISNQH4.js → chunk-GWO66KBI.js} +1 -1
  153. package/dist/chunk-GWY26SUD.cjs +63 -0
  154. package/dist/{chunk-YGN4CQIP.js → chunk-GZ6DV2UG.js} +1 -1
  155. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  156. package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
  157. package/dist/chunk-HJIXWGQZ.js +139 -0
  158. package/dist/{chunk-ULDM2SNB.js → chunk-HKYZSUQ5.js} +48 -47
  159. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  160. package/dist/{chunk-HTLINWX6.cjs → chunk-HQWQZML5.cjs} +16 -13
  161. package/dist/{chunk-DVZOENQ7.cjs → chunk-HS4USDND.cjs} +9 -4
  162. package/dist/chunk-HSCUPEA4.cjs +3897 -0
  163. package/dist/{chunk-JCLYQ2JC.js → chunk-HXJEGMGB.js} +12 -6
  164. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  165. package/dist/{chunk-N7LI55V4.js → chunk-I24CWKKK.js} +15 -8
  166. package/dist/chunk-IAGCRVJ3.js +355 -0
  167. package/dist/chunk-IEXKKKOF.cjs +92 -0
  168. package/dist/{chunk-5IXII4HX.cjs → chunk-IGMPWJ2I.cjs} +19 -12
  169. package/dist/chunk-IKUMVBCW.cjs +33 -0
  170. package/dist/{chunk-XTB6VJVQ.cjs → chunk-J2K57QM7.cjs} +6 -6
  171. package/dist/{chunk-56SWIDEL.cjs → chunk-J5ADZN6V.cjs} +57 -56
  172. package/dist/chunk-J5HE6CUM.cjs +124 -0
  173. package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
  174. package/dist/chunk-JIMSII7R.js +987 -0
  175. package/dist/chunk-JJ4KA7HK.cjs +2219 -0
  176. package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
  177. package/dist/{chunk-X5VSP65C.cjs → chunk-JP3YHTQ2.cjs} +4 -4
  178. package/dist/{chunk-SKV2F3NM.js → chunk-JYKPWK5O.js} +1 -1
  179. package/dist/{chunk-NNPAM4HC.cjs → chunk-KNTUI4TZ.cjs} +12 -6
  180. package/dist/{chunk-HIVRCQS2.js → chunk-L4F7SUYL.js} +56 -25
  181. package/dist/{chunk-C5IJIM2V.cjs → chunk-LDJQ5QHG.cjs} +68 -37
  182. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  183. package/dist/chunk-LJD7KR3L.cjs +44 -0
  184. package/dist/chunk-LN7D3EJZ.js +387 -0
  185. package/dist/{chunk-KANW6OYC.cjs → chunk-LQBONA55.cjs} +32 -8
  186. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  187. package/dist/chunk-M4KNC5BQ.js +78 -0
  188. package/dist/chunk-MO4KP6XS.cjs +229 -0
  189. package/dist/{chunk-BVKXEQVG.cjs → chunk-MOJ7ADW4.cjs} +22 -10
  190. package/dist/chunk-MPULXVC4.cjs +715 -0
  191. package/dist/{chunk-VEKDGU2Q.cjs → chunk-MQESBFBZ.cjs} +46 -23
  192. package/dist/chunk-MUNUUFU7.cjs +21 -0
  193. package/dist/{chunk-ZSPXQYG2.js → chunk-MX75JYIY.js} +7 -5
  194. package/dist/chunk-MXVIDIC6.cjs +139 -0
  195. package/dist/{chunk-3K2ESU53.cjs → chunk-N6O3XUZ2.cjs} +2 -2
  196. package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
  197. package/dist/{chunk-SLQAYV3W.js → chunk-NMQ47RCG.js} +8 -2
  198. package/dist/{chunk-JYTDYJVW.js → chunk-O64I2GYI.js} +1 -1
  199. package/dist/{chunk-IFFXSTOM.cjs → chunk-O6TQP7U7.cjs} +3 -3
  200. package/dist/{chunk-AYS2ASM7.js → chunk-OHWMWKJQ.js} +1 -1
  201. package/dist/{chunk-N23UAW4I.js → chunk-OM24WXEE.js} +7 -2
  202. package/dist/{chunk-NAJ4IZKD.cjs → chunk-OPNI6O7F.cjs} +8 -6
  203. package/dist/chunk-OR67YXQK.cjs +13 -0
  204. package/dist/{chunk-XVUHNWMX.js → chunk-OV3PVUYN.js} +17 -19
  205. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  206. package/dist/chunk-PCM3N3CL.cjs +37 -0
  207. package/dist/{chunk-A4IJHHV7.cjs → chunk-PDHT7LQS.cjs} +52 -11
  208. package/dist/{chunk-HPHJ73GU.cjs → chunk-PHJO5YAL.cjs} +9 -9
  209. package/dist/{chunk-KPELYZ6L.js → chunk-PQLKJCIE.js} +2 -2
  210. package/dist/chunk-PUD76XQT.cjs +78 -0
  211. package/dist/chunk-Q2IL4DDI.cjs +355 -0
  212. package/dist/{chunk-WPVWQSL7.cjs → chunk-Q6AC3PHY.cjs} +16 -13
  213. package/dist/{chunk-XRZEUWKF.js → chunk-QCHIDZBA.js} +1 -1
  214. package/dist/chunk-QKP772OZ.js +4291 -0
  215. package/dist/chunk-QQ7PANOP.js +59 -0
  216. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  217. package/dist/chunk-RAKO7UN7.js +114 -0
  218. package/dist/chunk-RBHANOYY.js +33 -0
  219. package/dist/chunk-RBZ7AFX7.cjs +29 -0
  220. package/dist/{chunk-GCXYXLRA.cjs → chunk-REMGR23V.cjs} +46 -49
  221. package/dist/chunk-ROLA6EFO.cjs +85 -0
  222. package/dist/{chunk-RDF37HKB.cjs → chunk-SOLBYSLY.cjs} +3 -2
  223. package/dist/{chunk-KQGPTCQJ.js → chunk-SWCQM52V.js} +68 -25
  224. package/dist/{chunk-L3TWPROA.js → chunk-TBOLJDUG.js} +39 -24
  225. package/dist/chunk-TH26BQJG.js +101 -0
  226. package/dist/{chunk-245KJE5Y.cjs → chunk-TJNBASFD.cjs} +14 -6
  227. package/dist/chunk-TKKN34TV.js +229 -0
  228. package/dist/chunk-TQ33WBY5.cjs +74 -0
  229. package/dist/{chunk-EGFT4PGW.js → chunk-TWQDAUZU.js} +5 -2
  230. package/dist/{chunk-J2GSFVUV.cjs → chunk-TXPSTCG7.cjs} +74 -59
  231. package/dist/{chunk-5K6NGAVM.js → chunk-U4C3HW6P.js} +67 -52
  232. package/dist/{chunk-3WICOC33.js → chunk-UEIXJG45.js} +105 -81
  233. package/dist/{chunk-22D2CNTP.cjs → chunk-UGFVM77J.cjs} +5 -2
  234. package/dist/chunk-UOQECODR.js +34 -0
  235. package/dist/chunk-UR27UDTB.js +354 -0
  236. package/dist/chunk-UWFG2R2I.cjs +420 -0
  237. package/dist/{chunk-Y72HH2TF.cjs → chunk-UXLW45ZE.cjs} +102 -28
  238. package/dist/{chunk-FPHU2ES6.cjs → chunk-VBOFPU5M.cjs} +6 -0
  239. package/dist/{chunk-NTSDP2WB.js → chunk-VDWJMWDF.js} +54 -24
  240. package/dist/{chunk-3O3MOK5C.cjs → chunk-VGEV44V2.cjs} +944 -133
  241. package/dist/{chunk-IDFF5J2E.js → chunk-VKBIE6I6.js} +38 -7
  242. package/dist/{chunk-HBZU3RBZ.js → chunk-VRMZO6TB.js} +31 -8
  243. package/dist/chunk-VUGOOGHB.js +400 -0
  244. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  245. package/dist/chunk-WGLBC5AY.cjs +59 -0
  246. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  247. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  248. package/dist/chunk-WRTXCQ3V.cjs +4291 -0
  249. package/dist/chunk-WTB7AFL6.cjs +101 -0
  250. package/dist/{chunk-NDMIPTV4.js → chunk-WZV6UVPY.js} +8 -3
  251. package/dist/chunk-XF2WIKHR.cjs +34 -0
  252. package/dist/{chunk-W7RYQJLO.cjs → chunk-XGMI6IYB.cjs} +46 -15
  253. package/dist/{chunk-NA6WQDYW.js → chunk-XIVFAD2L.js} +918 -107
  254. package/dist/chunk-XV2HXRHX.js +85 -0
  255. package/dist/{chunk-3VTAFAL2.js → chunk-Y3M2DABP.js} +16 -12
  256. package/dist/{chunk-QNGEW5TC.js → chunk-YV63VW4K.js} +1 -1
  257. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  258. package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
  259. package/dist/chunk-YZWE7XSM.js +5 -0
  260. package/dist/{chunk-TUAITHWL.js → chunk-Z3XSSF7B.js} +2 -1
  261. package/dist/{chunk-6UJMCWRY.js → chunk-Z4LIPMPM.js} +6 -0
  262. package/dist/chunk-ZASDSY7P.cjs +114 -0
  263. package/dist/{chunk-R33VKSH5.cjs → chunk-ZHJ7JGME.cjs} +11 -11
  264. package/dist/chunk-ZPD2AO3U.js +866 -0
  265. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  266. package/dist/chunk-ZR46OJNZ.js +152 -0
  267. package/dist/{chunk-7TQH3CL4.cjs → chunk-ZZ63NW7A.cjs} +78 -35
  268. package/dist/clear-33TWQ2ES.cjs +12 -0
  269. package/dist/{clear-A3N4GK2S.js → clear-OFLFQ3MR.js} +3 -3
  270. package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-COB2KTOW.js} +8 -5
  271. package/dist/communityInstaller-TWMGPSYM.cjs +22 -0
  272. package/dist/completion-IIZMHXYP.cjs +17 -0
  273. package/dist/completion-PT4VM2H2.js +17 -0
  274. package/dist/config-KL6WU7R2.cjs +20 -0
  275. package/dist/{config-HPJPKTO6.js → config-R4O7GBTY.js} +6 -4
  276. package/dist/{constants-LISJW3DD.js → constants-HVCHVQAF.js} +1 -1
  277. package/dist/constants-RLMJ5D5P.cjs +21 -0
  278. package/dist/{defaultHooks-IHSJR2AX.cjs → defaultHooks-2V2CQL63.cjs} +25 -10
  279. package/dist/{defaultHooks-KUKHK3AG.js → defaultHooks-TMHDU3FS.js} +25 -10
  280. package/dist/export-3PK3VFCE.js +15 -0
  281. package/dist/export-WLGNWEMJ.cjs +15 -0
  282. package/dist/feedback-G635NCLJ.js +18 -0
  283. package/dist/feedback-LLMK3TZH.cjs +18 -0
  284. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  285. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  286. package/dist/{filesystem-Z7BWAWMZ.js → filesystem-L6DQKGWK.js} +3 -2
  287. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  288. package/dist/help-BAXLP2M2.cjs +12 -0
  289. package/dist/{help-GFQXNZOK.js → help-X3OAZ3CY.js} +2 -2
  290. package/dist/history-6HOJSEMT.cjs +14 -0
  291. package/dist/{history-E3N6BJP7.js → history-YKFPHBJN.js} +2 -2
  292. package/dist/hooks-7TA4PIIB.js +18 -0
  293. package/dist/hooks-XVFU67T2.cjs +18 -0
  294. package/dist/{i18n-SY7QRM22.js → i18n-2KBUU7XL.js} +1 -1
  295. package/dist/i18n-MUJMKTFM.cjs +33 -0
  296. package/dist/ide-CCQ33PGC.cjs +15 -0
  297. package/dist/ide-VLVFBZ5F.js +15 -0
  298. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  299. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  300. package/dist/{import-W7SVLSTC.js → import-4CHYLS4K.js} +3 -3
  301. package/dist/{import-ADI37ZUR.cjs → import-I7T4ZHYL.cjs} +3 -3
  302. package/dist/import-J46F54JY.cjs +10 -0
  303. package/dist/{import-KGKKZ3B7.js → import-JWPYKXCZ.js} +2 -2
  304. package/dist/index.cjs +744 -23015
  305. package/dist/index.d.cts +93 -0
  306. package/dist/index.d.ts +93 -0
  307. package/dist/index.js +780 -23051
  308. package/dist/{init-7MFK626E.js → init-262MWZV4.js} +2 -2
  309. package/dist/init-EE5Y7RBL.cjs +10 -0
  310. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  311. package/dist/inkMode-WBNFOSAT.js +7 -0
  312. package/dist/inputPrompt-IIFKCX5Q.cjs +90 -0
  313. package/dist/inputPrompt-YGBHDUEP.js +90 -0
  314. package/dist/language-CVLPB7OV.js +21 -0
  315. package/dist/language-ZTWFHUSV.cjs +21 -0
  316. package/dist/learn-PON7I5QS.js +23 -0
  317. package/dist/learn-XLRSVNA3.cjs +23 -0
  318. package/dist/login-223QTGBG.cjs +26 -0
  319. package/dist/login-6IKTBUBY.js +26 -0
  320. package/dist/logout-RN2AG6SI.js +23 -0
  321. package/dist/logout-U3M4FFX7.cjs +23 -0
  322. package/dist/mcp-5O6PUL4G.js +20 -0
  323. package/dist/mcp-NUQ76QQB.cjs +20 -0
  324. package/dist/{mcp-install-2FEROZTL.js → mcp-install-6XWXLFVY.js} +17 -10
  325. package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-P6DHES7V.cjs} +21 -14
  326. package/dist/memory-CYMDQ2YC.cjs +10 -0
  327. package/dist/{memory-J73WZH2I.js → memory-Q54CESNM.js} +2 -2
  328. package/dist/{model-AES267IN.js → model-6AJ77PJG.js} +2 -2
  329. package/dist/model-IDRCKDML.cjs +10 -0
  330. package/dist/new-7LEWOUF2.cjs +12 -0
  331. package/dist/{new-5CLF3MKH.js → new-ZXHEWC2S.js} +3 -3
  332. package/dist/onboarding-FXX7YHSJ.cjs +35 -0
  333. package/dist/onboarding-JYNMK6NI.js +35 -0
  334. package/dist/permissions-YBNSANIA.cjs +10 -0
  335. package/dist/permissions-YHJMVA6L.js +10 -0
  336. package/dist/plan-XEJMOT55.cjs +13 -0
  337. package/dist/{plan-65HMS5HQ.js → plan-YYUAXPTL.js} +3 -1
  338. package/dist/pr-review-CW6J7P62.cjs +9 -0
  339. package/dist/pr-review-YZSBQVT2.js +9 -0
  340. package/dist/quit-B43SJ6E4.cjs +10 -0
  341. package/dist/{quit-XDZYRSPU.js → quit-GWTNHQSP.js} +2 -2
  342. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  343. package/dist/rawMode-GFNLXQPU.js +7 -0
  344. package/dist/{registry-PTHWERKC.js → registry-34GL6BNJ.js} +29 -44
  345. package/dist/{registry-IVT4G2RT.cjs → registry-V24W7YK6.cjs} +65 -80
  346. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  347. package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
  348. package/dist/resume-DYVOQN5L.cjs +16 -0
  349. package/dist/resume-M25UQKOX.js +16 -0
  350. package/dist/review-QHP2KP4Q.js +9 -0
  351. package/dist/review-UWHWQHCB.cjs +9 -0
  352. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  353. package/dist/ripgrep-VHJQQ55W.js +9 -0
  354. package/dist/rpc-NPS3PU4O.cjs +3730 -0
  355. package/dist/rpc-S3DGW6KV.js +3730 -0
  356. package/dist/search-CPX4PWHP.js +20 -0
  357. package/dist/search-VUF3M4N3.cjs +20 -0
  358. package/dist/{sessions-6GWEBMKS.js → sessions-IYAXMK23.js} +2 -2
  359. package/dist/sessions-JODKER5D.cjs +10 -0
  360. package/dist/{settings-BXR6SBJP.js → settings-55BNW6BF.js} +11 -8
  361. package/dist/settings-BKTS7OMC.cjs +33 -0
  362. package/dist/setup-IRC5HQG2.js +29 -0
  363. package/dist/setup-MMQ7TWOP.cjs +29 -0
  364. package/dist/share-6JRQECAH.cjs +17 -0
  365. package/dist/share-YM5MJKMO.js +17 -0
  366. package/dist/{skills-PG542VEB.cjs → skills-GGMZOVIE.cjs} +13 -10
  367. package/dist/skills-LWSOKOSH.cjs +29 -0
  368. package/dist/{skills-ZZCIAS7C.js → skills-MVIZNHT4.js} +12 -9
  369. package/dist/skills-VWOMV3CR.js +29 -0
  370. package/dist/{skills-install-SRC3Z2MS.js → skills-install-QBA5RCV6.js} +21 -70
  371. package/dist/{skills-install-67DOBPJC.cjs → skills-install-VTAMCNNY.cjs} +34 -83
  372. package/dist/skills-new-GPL46YV2.js +18 -0
  373. package/dist/skills-new-L5BEZN5V.cjs +18 -0
  374. package/dist/slashCommands-FBPCIWM5.cjs +95 -0
  375. package/dist/slashCommands-FCWY5DXW.js +95 -0
  376. package/dist/status-3B5SDZPL.js +17 -0
  377. package/dist/status-TTGRF6NC.cjs +17 -0
  378. package/dist/summarizer-DGPHE5IQ.js +17 -0
  379. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  380. package/dist/sync-77CXVVTK.cjs +21 -0
  381. package/dist/{sync-VU2NSJ4O.js → sync-7BILIQHP.js} +3 -3
  382. package/dist/sync-7OKF6636.js +21 -0
  383. package/dist/sync-EH4K5U3N.cjs +40 -0
  384. package/dist/{teammate-SD26GR37.js → teammate-GZQSCIMS.js} +28 -7
  385. package/dist/{teammate-SXRVXNQV.cjs → teammate-J6PHGL23.cjs} +29 -8
  386. package/dist/theme-64BYGJ57.cjs +21 -0
  387. package/dist/theme-YJE6HEON.js +21 -0
  388. package/dist/tools-3PPTTKFV.js +9 -0
  389. package/dist/tools-THIQA7WC.cjs +9 -0
  390. package/dist/ui/questionModal.cjs +8 -5
  391. package/dist/ui/questionModal.js +7 -4
  392. package/dist/undo-PRTEGL2J.cjs +10 -0
  393. package/dist/{undo-OL2EDBRY.js → undo-SZEHLX7X.js} +2 -2
  394. package/dist/web-3BA2WV37.cjs +37 -0
  395. package/dist/web-6FYGBX5K.js +37 -0
  396. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  397. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  398. package/dist/yolo-GF2YD7ZI.js +9 -0
  399. package/dist/yolo-OGDA7HNC.cjs +9 -0
  400. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  401. package/dist/yoloMode-4JOOSU26.js +17 -0
  402. package/package.json +46 -49
  403. package/dist/AgentRegistry-HRPN6ZOF.cjs +0 -10
  404. package/dist/CommunitySkillsCache-KE435RAR.cjs +0 -8
  405. package/dist/GitHubRegistryFetcher-I45SESIL.cjs +0 -7
  406. package/dist/LearnAdvisor-FLBA6FDD.js +0 -9
  407. package/dist/LearnAdvisor-GG3CXQF3.cjs +0 -9
  408. package/dist/MemoryManager-2LQPIYVE.cjs +0 -8
  409. package/dist/PermissionManager-X57BXHJ6.cjs +0 -11
  410. package/dist/ProviderFactory-KPJOGQWF.cjs +0 -9
  411. package/dist/SessionManager-YBJAZXNO.cjs +0 -10
  412. package/dist/SkillsRegistry-7O72A6TZ.cjs +0 -9
  413. package/dist/SubAgent-JT4HZHN7.js +0 -11
  414. package/dist/SubAgent-VPNYDWAU.cjs +0 -11
  415. package/dist/SyncApiClient-HQXJL5BT.cjs +0 -11
  416. package/dist/about-4DB5KTHW.js +0 -12
  417. package/dist/about-LXAOXZFT.cjs +0 -12
  418. package/dist/actionExecutor-23JB2WUC.js +0 -19
  419. package/dist/actionExecutor-X5UEZSKH.cjs +0 -19
  420. package/dist/add-dir-YC37DMSF.cjs +0 -10
  421. package/dist/agents-YF3BSUU5.js +0 -12
  422. package/dist/agents-ZOUHPMYR.cjs +0 -12
  423. package/dist/agents-new-HSH4GQPG.js +0 -14
  424. package/dist/agents-new-VYUDOCE7.cjs +0 -14
  425. package/dist/autoSkill-X5W52WOE.cjs +0 -20
  426. package/dist/automode-SJGM7VEI.cjs +0 -10
  427. package/dist/chunk-ALYU6VTM.js +0 -105
  428. package/dist/chunk-B53A2NM2.js +0 -2030
  429. package/dist/chunk-BJXSNT46.js +0 -100
  430. package/dist/chunk-CB4E2T5N.cjs +0 -312
  431. package/dist/chunk-DNUOXBHL.js +0 -539
  432. package/dist/chunk-EFX2QSZX.cjs +0 -33
  433. package/dist/chunk-H2ZRHQQV.js +0 -33
  434. package/dist/chunk-HNRPK5MY.cjs +0 -85
  435. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  436. package/dist/chunk-JJLYWH5Y.cjs +0 -100
  437. package/dist/chunk-LWUJFGOZ.js +0 -115
  438. package/dist/chunk-MERYP6AM.cjs +0 -539
  439. package/dist/chunk-MZAPWNAC.cjs +0 -207
  440. package/dist/chunk-PGESAU2W.cjs +0 -2030
  441. package/dist/chunk-SYVYLZZF.cjs +0 -24
  442. package/dist/chunk-SZOLA6FR.js +0 -111
  443. package/dist/chunk-VWDHR4HV.js +0 -168
  444. package/dist/chunk-Y45G6ZO5.cjs +0 -168
  445. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  446. package/dist/chunk-ZYVS43MU.js +0 -312
  447. package/dist/clear-GK4IEUUS.cjs +0 -12
  448. package/dist/communityInstaller-XXC7RLE4.cjs +0 -19
  449. package/dist/completion-HWABSAEL.js +0 -14
  450. package/dist/completion-IUUVQG4D.cjs +0 -14
  451. package/dist/config-HF7WOLZF.cjs +0 -18
  452. package/dist/constants-PEO3P2SJ.cjs +0 -21
  453. package/dist/export-QJAV2FCZ.js +0 -12
  454. package/dist/export-XSRFXGWU.cjs +0 -12
  455. package/dist/feedback-4TCIL3ML.cjs +0 -15
  456. package/dist/feedback-SJ6VVEY3.js +0 -15
  457. package/dist/filesystem-W56QZUJF.cjs +0 -10
  458. package/dist/help-ISBVQL3S.cjs +0 -12
  459. package/dist/history-XQ4GTSFU.cjs +0 -14
  460. package/dist/hooks-CJNKJ5PF.js +0 -13
  461. package/dist/hooks-UTMBTAXT.cjs +0 -13
  462. package/dist/i18n-N7QQ7A5M.cjs +0 -33
  463. package/dist/ide-RTA4UJV4.js +0 -12
  464. package/dist/ide-VWVOLIFF.cjs +0 -12
  465. package/dist/immediateCommandRouter-BW34JNXL.js +0 -9
  466. package/dist/immediateCommandRouter-SHOVNB5X.cjs +0 -9
  467. package/dist/import-ZLJVONXH.cjs +0 -10
  468. package/dist/init-TBKAB4LZ.cjs +0 -10
  469. package/dist/language-MDSHEXHB.cjs +0 -18
  470. package/dist/language-PXTQSHIG.js +0 -18
  471. package/dist/learn-623TW5EK.cjs +0 -20
  472. package/dist/learn-BCPV7GM2.js +0 -20
  473. package/dist/localProjectPermissions-BHQXEWZJ.cjs +0 -18
  474. package/dist/localProjectPermissions-GMOUYQM6.js +0 -18
  475. package/dist/login-QMVEETWJ.js +0 -20
  476. package/dist/login-QYMXAL3K.cjs +0 -20
  477. package/dist/logout-2CMTDAOJ.js +0 -18
  478. package/dist/logout-ZOHVZAUK.cjs +0 -18
  479. package/dist/mcp-IUVKK65S.js +0 -18
  480. package/dist/mcp-TXC7PYG3.cjs +0 -18
  481. package/dist/memory-WRIHDEPK.cjs +0 -10
  482. package/dist/model-RLP75SF5.cjs +0 -10
  483. package/dist/new-HLSFL6A4.cjs +0 -12
  484. package/dist/permissions-GP6FTGZ2.js +0 -13
  485. package/dist/permissions-O6EKKPOG.cjs +0 -13
  486. package/dist/plan-MCAXDIM2.cjs +0 -11
  487. package/dist/quit-TQX6GXA5.cjs +0 -10
  488. package/dist/repeat-BSPS5TWD.cjs +0 -13
  489. package/dist/resume-2GOPDLL4.cjs +0 -13
  490. package/dist/resume-37IUVDA6.js +0 -13
  491. package/dist/search-7KUSHIBL.cjs +0 -17
  492. package/dist/search-OJGDRIMA.js +0 -17
  493. package/dist/sessions-CYYCHSQG.cjs +0 -10
  494. package/dist/settings-2D7CAO66.cjs +0 -30
  495. package/dist/share-BXQY5IQU.js +0 -14
  496. package/dist/share-OSFXZBGS.cjs +0 -14
  497. package/dist/skills-FL6O6AOM.cjs +0 -26
  498. package/dist/skills-PNKQZRNK.js +0 -26
  499. package/dist/skills-new-XFMEHHIF.cjs +0 -15
  500. package/dist/skills-new-ZNZPHUKS.js +0 -15
  501. package/dist/slashCommands-LLCNPK3X.js +0 -76
  502. package/dist/slashCommands-RXZZS6RE.cjs +0 -76
  503. package/dist/status-BCECUJXT.cjs +0 -11
  504. package/dist/status-EFO7MQU3.js +0 -11
  505. package/dist/sync-IJYJ6KKM.js +0 -18
  506. package/dist/sync-LFT6SBPF.cjs +0 -18
  507. package/dist/sync-U7SDPBNZ.cjs +0 -40
  508. package/dist/theme-AWBHSG7J.cjs +0 -18
  509. package/dist/theme-TQLBPJ2E.js +0 -18
  510. package/dist/undo-IBBGP7A2.cjs +0 -10
@@ -1,13 +1,33 @@
1
1
  import {
2
2
  I18nProvider,
3
+ inkRenderOptions,
3
4
  useTranslation
4
- } from "./chunk-SLQAYV3W.js";
5
+ } from "./chunk-NMQ47RCG.js";
6
+ import {
7
+ disableBracketedPaste,
8
+ enableBracketedPaste
9
+ } from "./chunk-5JFTY3VU.js";
10
+ import {
11
+ ThemeProvider,
12
+ useTheme
13
+ } from "./chunk-NBGOIFKP.js";
5
14
 
6
15
  // src/ui/ink/components/Modal.tsx
7
16
  import { useState, useMemo, useCallback } from "react";
8
17
  import { Box, Text, useInput, render } from "ink";
18
+
19
+ // src/ui/resetScrollRegion.ts
20
+ function resetScrollRegion() {
21
+ if (process.stdout.isTTY) {
22
+ process.stdout.write("\x1B[r");
23
+ }
24
+ }
25
+
26
+ // src/ui/ink/components/Modal.tsx
9
27
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
28
  var OTHER_VALUE = "__other__";
29
+ var ENTER_ALTERNATE_SCREEN = "\x1B[?1049h\x1B[2J\x1B[H";
30
+ var EXIT_ALTERNATE_SCREEN = "\x1B[?1049l";
11
31
  function resolveInitialCursor(mode, optionsLength, initialIndex, defaultValue) {
12
32
  if (mode === "confirm") {
13
33
  return defaultValue === false ? 1 : 0;
@@ -17,13 +37,42 @@ function resolveInitialCursor(mode, optionsLength, initialIndex, defaultValue) {
17
37
  }
18
38
  return Math.max(0, Math.min(optionsLength - 1, Math.floor(initialIndex)));
19
39
  }
40
+ function isModalCancelInput(char, key) {
41
+ if (key.escape) {
42
+ return true;
43
+ }
44
+ if (char === "\x1B" || char === "\x1B") {
45
+ return true;
46
+ }
47
+ if (char === "c" && key.ctrl) {
48
+ return true;
49
+ }
50
+ return /^\x1b\[27(?:;\d+)?[u~]$/.test(char);
51
+ }
20
52
  function unmountAndResolve(instance, value, resolve) {
21
- instance.unmount();
22
- process.nextTick(() => resolve(value));
53
+ void (async () => {
54
+ instance.unmount();
55
+ try {
56
+ await instance.waitUntilExit();
57
+ } finally {
58
+ cleanupModalRender(process.stdout);
59
+ resolve(value);
60
+ }
61
+ })();
62
+ }
63
+ function prepareModalRender(output = process.stdout) {
64
+ disableBracketedPaste(output);
65
+ resetScrollRegion();
66
+ output.write(ENTER_ALTERNATE_SCREEN);
67
+ }
68
+ function cleanupModalRender(output = process.stdout) {
69
+ output.write(EXIT_ALTERNATE_SCREEN);
70
+ enableBracketedPaste(output);
23
71
  }
24
72
  function Modal(props) {
25
73
  const { t } = useTranslation();
26
- const { title, onCancel } = props;
74
+ const { theme } = useTheme();
75
+ const { title, logo, onCancel } = props;
27
76
  const mode = "mode" in props ? props.mode : "select";
28
77
  const selectOptionCount = mode === "select" && "options" in props ? props.options.length + ("allowCustomInput" in props && props.allowCustomInput ? 1 : 0) : 0;
29
78
  const confirmDefaultValue = mode === "confirm" && typeof props.defaultValue === "boolean" ? props.defaultValue : void 0;
@@ -47,12 +96,25 @@ function Modal(props) {
47
96
  });
48
97
  const [customInput, setCustomInput] = useState("");
49
98
  const [isCustomMode, setIsCustomMode] = useState(false);
99
+ const isMultiSelect = mode === "select" && "multiSelect" in props && props.multiSelect;
100
+ const [checkedSet, setCheckedSet] = useState(() => {
101
+ if (!isMultiSelect || !("options" in props)) return /* @__PURE__ */ new Set();
102
+ return new Set(
103
+ props.options.filter((o) => o.checked).map((o) => o.value)
104
+ );
105
+ });
50
106
  const [inputValue, setInputValue] = useState(() => {
51
107
  if (mode === "input" && "defaultValue" in props && typeof props.defaultValue === "string") {
52
108
  return props.defaultValue;
53
109
  }
54
110
  return "";
55
111
  });
112
+ const [inputCursor, setInputCursor] = useState(() => {
113
+ if (mode === "input" && "defaultValue" in props && typeof props.defaultValue === "string") {
114
+ return props.defaultValue.length;
115
+ }
116
+ return 0;
117
+ });
56
118
  const [validationError, setValidationError] = useState(null);
57
119
  const choices = useMemo(() => {
58
120
  if (mode === "select" && "options" in props) {
@@ -92,7 +154,7 @@ function Modal(props) {
92
154
  [choices]
93
155
  );
94
156
  useInput((char, key) => {
95
- if (key.escape) {
157
+ if (isModalCancelInput(char, key)) {
96
158
  if (mode === "select" && isCustomMode) {
97
159
  setIsCustomMode(false);
98
160
  setCustomInput("");
@@ -117,13 +179,37 @@ function Modal(props) {
117
179
  }
118
180
  return;
119
181
  }
120
- if (key.backspace || key.delete) {
121
- setInputValue((prev) => prev.slice(0, -1));
122
- setValidationError(null);
182
+ if (key.leftArrow) {
183
+ setInputCursor((prev) => Math.max(0, prev - 1));
184
+ return;
185
+ }
186
+ if (key.rightArrow) {
187
+ setInputCursor((prev) => Math.min(inputValue.length, prev + 1));
188
+ return;
189
+ }
190
+ if (char === "a" && key.ctrl || key.meta && key.leftArrow) {
191
+ setInputCursor(0);
192
+ return;
193
+ }
194
+ if (char === "e" && key.ctrl || key.meta && key.rightArrow) {
195
+ setInputCursor(inputValue.length);
196
+ return;
197
+ }
198
+ if (key.backspace) {
199
+ if (inputCursor > 0) {
200
+ setInputValue(
201
+ (prev) => prev.slice(0, inputCursor - 1) + prev.slice(inputCursor)
202
+ );
203
+ setInputCursor((prev) => prev - 1);
204
+ setValidationError(null);
205
+ }
123
206
  return;
124
207
  }
125
208
  if (char && !key.ctrl && !key.meta) {
126
- setInputValue((prev) => prev + char);
209
+ setInputValue(
210
+ (prev) => prev.slice(0, inputCursor) + char + prev.slice(inputCursor)
211
+ );
212
+ setInputCursor((prev) => prev + char.length);
127
213
  setValidationError(null);
128
214
  }
129
215
  return;
@@ -138,7 +224,7 @@ function Modal(props) {
138
224
  }
139
225
  return;
140
226
  }
141
- if (key.backspace || key.delete) {
227
+ if (key.backspace) {
142
228
  setCustomInput((prev) => prev.slice(0, -1));
143
229
  return;
144
230
  }
@@ -147,6 +233,23 @@ function Modal(props) {
147
233
  }
148
234
  return;
149
235
  }
236
+ if (isMultiSelect && char === " " && "onToggle" in props) {
237
+ const selected = choices[cursor];
238
+ if (selected && !selected.disabled) {
239
+ setCheckedSet((prev) => {
240
+ const next = new Set(prev);
241
+ const nowChecked = !next.has(selected.value);
242
+ if (nowChecked) {
243
+ next.add(selected.value);
244
+ } else {
245
+ next.delete(selected.value);
246
+ }
247
+ props.onToggle?.(selected, nowChecked);
248
+ return next;
249
+ });
250
+ }
251
+ return;
252
+ }
150
253
  if (key.return) {
151
254
  const selected = choices[cursor];
152
255
  if (selected?.disabled) {
@@ -211,27 +314,33 @@ function Modal(props) {
211
314
  if (mode === "input" || mode === "password") {
212
315
  const displayValue = mode === "password" ? "\u2022".repeat(inputValue.length) : inputValue;
213
316
  const placeholderText = "placeholder" in props && props.placeholder || (mode === "password" ? t("ui.passwordPlaceholder") : t("ui.inputPlaceholder"));
317
+ const beforeCursor = displayValue.slice(0, inputCursor);
318
+ const atCursor = displayValue[inputCursor] ?? " ";
319
+ const afterCursor = displayValue.slice(inputCursor + 1);
214
320
  return /* @__PURE__ */ jsxs(Fragment, { children: [
215
321
  /* @__PURE__ */ jsxs(Box, { children: [
216
- /* @__PURE__ */ jsx(Text, { color: "yellow", children: "> " }),
217
- /* @__PURE__ */ jsx(Text, { children: displayValue || /* @__PURE__ */ jsx(Text, { color: "gray", children: placeholderText }) }),
218
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "\u2588" })
322
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("warning", "> ") }),
323
+ displayValue ? /* @__PURE__ */ jsxs(Text, { children: [
324
+ beforeCursor,
325
+ /* @__PURE__ */ jsx(Text, { inverse: true, children: atCursor }),
326
+ afterCursor
327
+ ] }) : /* @__PURE__ */ jsxs(Text, { children: [
328
+ theme.fg("muted", placeholderText),
329
+ /* @__PURE__ */ jsx(Text, { inverse: true, children: " " })
330
+ ] })
219
331
  ] }),
220
- validationError && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Text, { color: "red", children: validationError }) })
332
+ validationError && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Text, { children: theme.fg("error", validationError) }) })
221
333
  ] });
222
334
  }
223
335
  if (mode === "select" && isCustomMode) {
224
336
  return /* @__PURE__ */ jsxs(Box, { children: [
225
- /* @__PURE__ */ jsxs(Text, { color: "yellow", children: [
226
- t("ui.questionYourAnswer"),
227
- ": "
228
- ] }),
337
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("warning", `${t("ui.questionYourAnswer")}: `) }),
229
338
  /* @__PURE__ */ jsx(Text, { children: customInput }),
230
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "\u2588" })
339
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "\u2588") })
231
340
  ] });
232
341
  }
233
342
  if (hasNoChoices) {
234
- return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { color: "gray", children: t("ui.noOptionsAvailable") }) });
343
+ return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", t("ui.noOptionsAvailable")) }) });
235
344
  }
236
345
  const needsScroll = choices.length > maxVisible;
237
346
  const windowEnd = Math.min(windowStart + maxVisible, choices.length);
@@ -242,40 +351,20 @@ function Modal(props) {
242
351
  const isDisabled = choice.disabled;
243
352
  let color;
244
353
  if (isDisabled) {
245
- color = "gray";
354
+ color = "dim";
246
355
  } else if (isSelected) {
247
- color = "green";
356
+ color = "accent";
248
357
  }
358
+ const checkbox = isMultiSelect ? checkedSet.has(choice.value) ? "\u2611 " : "\u2610 " : "";
249
359
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
250
- /* @__PURE__ */ jsxs(Text, { color, children: [
251
- isSelected ? "\u25B8 " : " ",
252
- i + 1,
253
- ". ",
254
- choice.label,
255
- isDisabled ? " (disabled)" : ""
256
- ] }),
257
- choice.description && /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
258
- " ",
259
- choice.description
260
- ] })
360
+ /* @__PURE__ */ jsx(Text, { children: theme.fg(color ?? "text", `${isSelected ? "\u25B8 " : " "}${checkbox}${i + 1}. ${choice.label}${isDisabled ? " (disabled)" : ""}`) }),
361
+ choice.description && /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", ` ${choice.description}`) })
261
362
  ] }, `${choice.value}-${i}`);
262
363
  });
263
364
  return /* @__PURE__ */ jsxs(Fragment, { children: [
264
- needsScroll && windowStart > 0 && /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
265
- " ",
266
- "\u2191",
267
- " ",
268
- windowStart,
269
- " more above"
270
- ] }),
365
+ needsScroll && windowStart > 0 && /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", ` \u2191 ${windowStart} more above`) }),
271
366
  items,
272
- needsScroll && windowEnd < choices.length && /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
273
- " ",
274
- "\u2193",
275
- " ",
276
- choices.length - windowEnd,
277
- " more below"
278
- ] })
367
+ needsScroll && windowEnd < choices.length && /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", ` \u2193 ${choices.length - windowEnd} more below`) })
279
368
  ] });
280
369
  };
281
370
  const renderHint = () => {
@@ -288,32 +377,40 @@ function Modal(props) {
288
377
  if (mode === "select" && isCustomMode) {
289
378
  return t("ui.questionCustomHint");
290
379
  }
380
+ if (isMultiSelect) {
381
+ return "Space toggle \xB7 Enter confirm \xB7 ESC cancel";
382
+ }
291
383
  return t("ui.questionSelectHint");
292
384
  };
293
385
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
294
- /* @__PURE__ */ jsx(Text, { color: "cyan", children: title }),
386
+ logo && /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: logo.split("\n").map((line, i) => /* @__PURE__ */ jsx(Text, { children: line }, i)) }),
387
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("accent", title) }),
295
388
  /* @__PURE__ */ jsx(Text, { children: " " }),
296
389
  renderContent(),
297
390
  /* @__PURE__ */ jsx(Text, { children: " " }),
298
- /* @__PURE__ */ jsx(Text, { color: "gray", children: renderHint() })
391
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", renderHint()) })
299
392
  ] });
300
393
  }
301
394
  async function showModal(options) {
302
- const { title, options: modalOptions, allowCustomInput, multiSelect, maxVisible } = options;
395
+ const { title, logo, options: modalOptions, allowCustomInput, multiSelect, maxVisible, onToggle } = options;
303
396
  if (!process.stdout.isTTY) {
304
397
  return null;
305
398
  }
399
+ prepareModalRender(process.stdout);
400
+ await new Promise((resolve) => setImmediate(resolve));
306
401
  return new Promise((resolve) => {
307
402
  let completed = false;
308
403
  const instance = render(
309
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
404
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
310
405
  Modal,
311
406
  {
312
407
  title,
408
+ logo,
313
409
  options: modalOptions,
314
410
  allowCustomInput,
315
411
  multiSelect,
316
412
  maxVisible,
413
+ onToggle,
317
414
  onSelect: (option) => {
318
415
  if (completed) return;
319
416
  completed = true;
@@ -325,8 +422,13 @@ async function showModal(options) {
325
422
  unmountAndResolve(instance, null, resolve);
326
423
  }
327
424
  }
328
- ) }),
329
- { exitOnCtrlC: false }
425
+ ) }) }),
426
+ inkRenderOptions({
427
+ stdin: process.stdin,
428
+ stdout: process.stdout,
429
+ stderr: process.stderr,
430
+ exitOnCtrlC: false
431
+ })
330
432
  );
331
433
  });
332
434
  }
@@ -334,10 +436,12 @@ async function showConfirm(options) {
334
436
  if (!process.stdout.isTTY) {
335
437
  return false;
336
438
  }
439
+ prepareModalRender(process.stdout);
440
+ await new Promise((resolve) => setImmediate(resolve));
337
441
  return new Promise((resolve) => {
338
442
  let completed = false;
339
443
  const instance = render(
340
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
444
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
341
445
  Modal,
342
446
  {
343
447
  mode: "confirm",
@@ -356,8 +460,13 @@ async function showConfirm(options) {
356
460
  unmountAndResolve(instance, false, resolve);
357
461
  }
358
462
  }
359
- ) }),
360
- { exitOnCtrlC: false }
463
+ ) }) }),
464
+ inkRenderOptions({
465
+ stdin: process.stdin,
466
+ stdout: process.stdout,
467
+ stderr: process.stderr,
468
+ exitOnCtrlC: false
469
+ })
361
470
  );
362
471
  });
363
472
  }
@@ -365,10 +474,12 @@ async function showInput(options) {
365
474
  if (!process.stdout.isTTY) {
366
475
  return null;
367
476
  }
477
+ prepareModalRender(process.stdout);
478
+ await new Promise((resolve) => setImmediate(resolve));
368
479
  return new Promise((resolve) => {
369
480
  let completed = false;
370
481
  const instance = render(
371
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
482
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
372
483
  Modal,
373
484
  {
374
485
  mode: "input",
@@ -387,8 +498,13 @@ async function showInput(options) {
387
498
  unmountAndResolve(instance, null, resolve);
388
499
  }
389
500
  }
390
- ) }),
391
- { exitOnCtrlC: false }
501
+ ) }) }),
502
+ inkRenderOptions({
503
+ stdin: process.stdin,
504
+ stdout: process.stdout,
505
+ stderr: process.stderr,
506
+ exitOnCtrlC: false
507
+ })
392
508
  );
393
509
  });
394
510
  }
@@ -396,10 +512,12 @@ async function showPassword(options) {
396
512
  if (!process.stdout.isTTY) {
397
513
  return null;
398
514
  }
515
+ prepareModalRender(process.stdout);
516
+ await new Promise((resolve) => setImmediate(resolve));
399
517
  return new Promise((resolve) => {
400
518
  let completed = false;
401
519
  const instance = render(
402
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
520
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
403
521
  Modal,
404
522
  {
405
523
  mode: "password",
@@ -417,19 +535,43 @@ async function showPassword(options) {
417
535
  unmountAndResolve(instance, null, resolve);
418
536
  }
419
537
  }
420
- ) }),
421
- { exitOnCtrlC: false }
538
+ ) }) }),
539
+ inkRenderOptions({
540
+ stdin: process.stdin,
541
+ stdout: process.stdout,
542
+ stderr: process.stderr,
543
+ exitOnCtrlC: false
544
+ })
422
545
  );
423
546
  });
424
547
  }
425
548
 
426
549
  export {
550
+ prepareModalRender,
551
+ cleanupModalRender,
427
552
  Modal,
428
553
  showModal,
429
554
  showConfirm,
430
555
  showInput,
431
556
  showPassword
432
557
  };
558
+ /**
559
+ * @license
560
+ * Copyright 2025 Autohand AI LLC
561
+ * SPDX-License-Identifier: Apache-2.0
562
+ *
563
+ * Shared utility: reset ANSI scroll region before Ink mounts.
564
+ *
565
+ * Terminal regions (split scroll/fixed areas for persistent input)
566
+ * prevent Ink from moving the cursor back up to overwrite previous
567
+ * renders, causing duplicated output on re-renders (e.g., arrow key
568
+ * navigation). Writing ESC[r resets the scroll region to the full
569
+ * terminal so Ink can render correctly.
570
+ *
571
+ * CONTRACT: After showing any Ink-based modal/component, the caller
572
+ * must ensure terminal regions are re-enabled (PersistentInput.resume()
573
+ * calls regions.enable() which re-sets the scroll region).
574
+ */
433
575
  /**
434
576
  * @license
435
577
  * Copyright 2025 Autohand AI LLC
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  showConfirm
3
- } from "./chunk-YZXUDM5X.js";
3
+ } from "./chunk-DLP436GI.js";
4
4
  import {
5
5
  AUTOHAND_PATHS,
6
6
  PROJECT_DIR_NAME
7
- } from "./chunk-EGFT4PGW.js";
7
+ } from "./chunk-TWQDAUZU.js";
8
8
  import {
9
9
  t
10
- } from "./chunk-APIXPPMT.js";
10
+ } from "./chunk-CBFH2J3O.js";
11
11
 
12
12
  // src/skills/communityInstaller.ts
13
13
  import crypto from "crypto";
@@ -3,10 +3,10 @@
3
3
  var _chunkJHGIWNHLcjs = require('./chunk-JHGIWNHL.cjs');
4
4
 
5
5
 
6
- var _chunkOLSBBZW6cjs = require('./chunk-OLSBBZW6.cjs');
6
+ var _chunk7MU7LWF3cjs = require('./chunk-7MU7LWF3.cjs');
7
7
 
8
8
 
9
- var _chunkSEKD5FH3cjs = require('./chunk-SEKD5FH3.cjs');
9
+ var _chunkE26KKI46cjs = require('./chunk-E26KKI46.cjs');
10
10
 
11
11
  // src/commands/skills-new.ts
12
12
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
@@ -25,7 +25,7 @@ async function createSkill(ctx) {
25
25
  console.log(_chalk2.default.red("Skills registry not available."));
26
26
  return null;
27
27
  }
28
- const answers = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, [
28
+ const answers = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, [
29
29
  {
30
30
  type: "input",
31
31
  name: "name",
@@ -65,7 +65,7 @@ async function createSkill(ctx) {
65
65
  console.log(_chalk2.default.gray("Canceled: no name provided."));
66
66
  return null;
67
67
  }
68
- const storageResult = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
68
+ const storageResult = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
69
69
  type: "select",
70
70
  name: "level",
71
71
  message: "Where should this skill be saved?",
@@ -81,7 +81,7 @@ async function createSkill(ctx) {
81
81
  const storageLevel = storageResult.level;
82
82
  if (skillsRegistry.hasSkill(name)) {
83
83
  console.log(_chalk2.default.yellow(`A skill named "${name}" already exists.`));
84
- const result = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
84
+ const result = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
85
85
  type: "confirm",
86
86
  name: "overwrite",
87
87
  message: "Do you want to overwrite it?",
@@ -100,7 +100,7 @@ async function createSkill(ctx) {
100
100
  console.log(_chalk2.default.gray(` Similarity: ${(match.score * 100).toFixed(0)}%`));
101
101
  }
102
102
  console.log();
103
- const result = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
103
+ const result = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
104
104
  type: "select",
105
105
  name: "proceed",
106
106
  message: "How would you like to proceed?",
@@ -150,7 +150,7 @@ Output only the raw markdown content, no code fences.`
150
150
  console.log(content.length > 800 ? content.slice(0, 800) + "\n...(truncated)" : content);
151
151
  console.log(_chalk2.default.gray("\u2500".repeat(50)));
152
152
  console.log();
153
- const confirmResult = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
153
+ const confirmResult = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
154
154
  type: "confirm",
155
155
  name: "confirm",
156
156
  message: "Save this skill?",
@@ -160,7 +160,7 @@ Output only the raw markdown content, no code fences.`
160
160
  console.log(_chalk2.default.gray("Canceled."));
161
161
  return null;
162
162
  }
163
- const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") : _chunkSEKD5FH3cjs.AUTOHAND_PATHS.skills;
163
+ const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") : _chunkE26KKI46cjs.AUTOHAND_PATHS.skills;
164
164
  const skillDir = _path2.default.join(baseDir, name);
165
165
  const skillPath = _path2.default.join(skillDir, "SKILL.md");
166
166
  try {
@@ -169,7 +169,7 @@ Output only the raw markdown content, no code fences.`
169
169
  console.log(_chalk2.default.green(`\u2713 Saved new skill to ${skillPath}`));
170
170
  const success = await skillsRegistry.saveSkill(name, content);
171
171
  if (success) {
172
- const activateResult = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
172
+ const activateResult = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
173
173
  type: "confirm",
174
174
  name: "activate",
175
175
  message: "Activate this skill now?",
@@ -3,7 +3,7 @@ var _os = require('os'); var _os2 = _interopRequireDefault(_os);
3
3
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
4
4
  var AUTOHAND_HOME = process.env.AUTOHAND_HOME || _path2.default.join(_os2.default.homedir(), ".autohand");
5
5
  var AUTOHAND_PATHS = {
6
- /** Configuration files (config.json, config.yaml, config.yml) */
6
+ /** Configuration files (config.toml, config.yaml, config.yml, config.json) */
7
7
  config: AUTOHAND_HOME,
8
8
  /** Session data storage */
9
9
  sessions: _path2.default.join(AUTOHAND_HOME, "sessions"),
@@ -33,6 +33,7 @@ var AUTOHAND_PATHS = {
33
33
  var AUTOHAND_FILES = {
34
34
  /** Main config file */
35
35
  configJson: _path2.default.join(AUTOHAND_HOME, "config.json"),
36
+ configToml: _path2.default.join(AUTOHAND_HOME, "config.toml"),
36
37
  configYaml: _path2.default.join(AUTOHAND_HOME, "config.yaml"),
37
38
  configYml: _path2.default.join(AUTOHAND_HOME, "config.yml"),
38
39
  /** Device ID for telemetry */
@@ -57,7 +58,9 @@ var AUTH_CONFIG = {
57
58
  },
58
59
  pollInterval: 2e3,
59
60
  authTimeout: 5 * 60 * 1e3,
60
- sessionExpiryDays: 30
61
+ sessionExpiryDays: 30,
62
+ /** Idle timeout in ms before forcing logout (30 minutes) */
63
+ idleTimeoutMs: 30 * 60 * 1e3
61
64
  };
62
65
  var SYNC_CONFIG = {
63
66
  /** Default sync interval in ms (5 minutes) */
@@ -3,13 +3,13 @@ import {
3
3
  showInput,
4
4
  showModal,
5
5
  showPassword
6
- } from "./chunk-YZXUDM5X.js";
6
+ } from "./chunk-DLP436GI.js";
7
7
  import {
8
8
  saveConfig
9
- } from "./chunk-ZYVS43MU.js";
9
+ } from "./chunk-3UT7R3XV.js";
10
10
  import {
11
11
  t
12
- } from "./chunk-APIXPPMT.js";
12
+ } from "./chunk-CBFH2J3O.js";
13
13
 
14
14
  // src/commands/settings.ts
15
15
  import chalk from "chalk";