autohand-cli 0.8.3 → 0.9.1

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 (546) hide show
  1. package/README.md +191 -74
  2. package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-GOV7FN2O.js} +2 -2
  3. package/dist/AgentRegistry-J2C6JBZ3.cjs +10 -0
  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-22BB3J6H.cjs +8 -0
  7. package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZACDPD4J.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-2S6AHOC3.js} +1 -1
  11. package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TVEQI5ZU.cjs} +2 -2
  12. package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-AEBMAKXE.js} +33 -9
  13. package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-AF2XL6DS.cjs} +37 -13
  14. package/dist/LearnAdvisor-KKEQ5QCV.js +9 -0
  15. package/dist/LearnAdvisor-Q7RAYLPF.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-PMNAEZMB.cjs +8 -0
  19. package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-QZRLTUB5.js} +2 -2
  20. package/dist/NVIDIAProvider-C3FWQOBZ.cjs +14 -0
  21. package/dist/NVIDIAProvider-SJPY3ONR.js +14 -0
  22. package/dist/{PermissionManager-7NQHRCHY.js → PermissionManager-MT7KBNNR.js} +3 -3
  23. package/dist/PermissionManager-URCNP5EC.cjs +11 -0
  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-56N3ECE4.cjs +12 -0
  27. package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-RB4RVAF6.js} +4 -1
  28. package/dist/SessionManager-2IZGWASQ.cjs +10 -0
  29. package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-554PHVPC.js} +2 -2
  30. package/dist/SkillsRegistry-GMRVONOQ.cjs +9 -0
  31. package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-NHHMIUYJ.js} +2 -2
  32. package/dist/SubAgent-4GOR2FIJ.js +13 -0
  33. package/dist/SubAgent-ZJMDH4FI.cjs +13 -0
  34. package/dist/{SyncApiClient-B5RT2ECG.js → SyncApiClient-G3FM65IV.js} +1 -1
  35. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  36. package/dist/about-3USFSGOH.js +15 -0
  37. package/dist/about-QR52U5DD.cjs +15 -0
  38. package/dist/acp-5Y2W6OZP.js +1556 -0
  39. package/dist/acp-GSYE75OB.cjs +1556 -0
  40. package/dist/actionExecutor-KHUU3Z3Q.cjs +28 -0
  41. package/dist/actionExecutor-PLQJZLZV.js +28 -0
  42. package/dist/add-dir-BTAD5OZS.cjs +11 -0
  43. package/dist/{add-dir-TUJM3PG5.js → add-dir-HCERJDBR.js} +3 -2
  44. package/dist/agent-B3EVT7NN.cjs +126 -0
  45. package/dist/agent-SATQ3WZ3.js +126 -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-44CRJGM7.cjs +18 -0
  53. package/dist/agents-NN4ZAJ7R.js +18 -0
  54. package/dist/agents-new-6D6G4QS6.cjs +17 -0
  55. package/dist/agents-new-7GAQ25EK.js +17 -0
  56. package/dist/{autoSkill-LQEVQFIH.js → autoSkill-66PKCYTW.js} +2 -2
  57. package/dist/autoSkill-VQLGBELN.cjs +20 -0
  58. package/dist/automode-45DWV4TN.cjs +10 -0
  59. package/dist/{automode-R6P3VHLS.js → automode-BUF3VGXU.js} +2 -2
  60. package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
  61. package/dist/browserToolBridge-F5N66PE7.js +58 -0
  62. package/dist/chrome-Q2U73HZB.cjs +50 -0
  63. package/dist/chrome-Q54OALOK.cjs +21 -0
  64. package/dist/chrome-Y3T7EIHG.js +50 -0
  65. package/dist/chrome-ZNJ46OYW.js +21 -0
  66. package/dist/chromeSkill-53TH55PM.js +105 -0
  67. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  68. package/dist/{chunk-HXGBSJL5.cjs → chunk-22SCR3EV.cjs} +2 -2
  69. package/dist/chunk-26G7YGOW.js +367 -0
  70. package/dist/{chunk-3L53OA4E.cjs → chunk-2ESQR35E.cjs} +10 -10
  71. package/dist/chunk-2H5O745H.js +63 -0
  72. package/dist/{chunk-ULDM2SNB.js → chunk-2IW5YFJ4.js} +48 -47
  73. package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
  74. package/dist/chunk-3EDDDZS2.cjs +5 -0
  75. package/dist/{chunk-X5VSP65C.cjs → chunk-3ICORF7M.cjs} +4 -4
  76. package/dist/chunk-3OF56EMA.cjs +197 -0
  77. package/dist/chunk-3UC6DMFI.cjs +93 -0
  78. package/dist/{chunk-64H4FRM3.cjs → chunk-3UHRCHKB.cjs} +32 -34
  79. package/dist/{chunk-JCLYQ2JC.js → chunk-3ZOOH44N.js} +12 -6
  80. package/dist/{chunk-TUD3Z3BD.js → chunk-44ZWOBTI.js} +136 -55
  81. package/dist/chunk-4567QNRB.js +444 -0
  82. package/dist/chunk-45CHNQM6.cjs +517 -0
  83. package/dist/chunk-46MTALKD.js +44 -0
  84. package/dist/{chunk-WHE2SWHU.js → chunk-4E7SHPNQ.js} +2 -2
  85. package/dist/chunk-4LMUDS2K.js +124 -0
  86. package/dist/{chunk-W7RYQJLO.cjs → chunk-4XFHP2SN.cjs} +46 -15
  87. package/dist/chunk-4XVLNOFA.js +360 -0
  88. package/dist/{chunk-GBHDROGL.js → chunk-575PXZX7.js} +16 -4
  89. package/dist/chunk-5A7ZL64N.js +139 -0
  90. package/dist/chunk-5GCQ5UMV.cjs +85 -0
  91. package/dist/chunk-5JTTM5SC.js +59 -0
  92. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  93. package/dist/{chunk-KLWJIPU2.cjs → chunk-5SFV2NCY.cjs} +20 -16
  94. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  95. package/dist/{chunk-A4IJHHV7.cjs → chunk-63ANVAOJ.cjs} +52 -11
  96. package/dist/{chunk-MYISNQH4.js → chunk-65LRPW5W.js} +1 -1
  97. package/dist/chunk-6AYJCDTA.js +360 -0
  98. package/dist/{chunk-X2MSVKDV.js → chunk-6HF6XSCC.js} +2 -2
  99. package/dist/{chunk-AEJH23FO.cjs → chunk-6JWCGQJU.cjs} +6 -6
  100. package/dist/chunk-6OECOAK5.cjs +360 -0
  101. package/dist/chunk-6R25D2H5.js +121 -0
  102. package/dist/chunk-7DJJGKM6.js +77 -0
  103. package/dist/{chunk-VG34MG2U.js → chunk-7IRQ7JEH.js} +9 -6
  104. package/dist/chunk-7MY4JHER.js +27 -0
  105. package/dist/chunk-7PJKTSRN.js +152 -0
  106. package/dist/{chunk-SKYG33B2.cjs → chunk-7PT646AL.cjs} +3 -3
  107. package/dist/chunk-7WAUCLLQ.js +229 -0
  108. package/dist/{chunk-U46VYPLR.cjs → chunk-7XTUL7ZD.cjs} +9 -9
  109. package/dist/chunk-AE2ILW25.cjs +152 -0
  110. package/dist/{chunk-T2M64VHA.cjs → chunk-AOKXYGBQ.cjs} +61 -41
  111. package/dist/chunk-AQ5PVHOC.cjs +113 -0
  112. package/dist/{chunk-N2BLVUPM.cjs → chunk-AZ47LKD5.cjs} +3 -3
  113. package/dist/chunk-B4HSNOIH.cjs +354 -0
  114. package/dist/chunk-B76FJKEJ.cjs +184 -0
  115. package/dist/chunk-BP37FVBM.js +85 -0
  116. package/dist/chunk-BQU3HAE7.js +21 -0
  117. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  118. package/dist/chunk-C46B72VK.js +1034 -0
  119. package/dist/{chunk-HIVRCQS2.js → chunk-C5QIQQ37.js} +56 -25
  120. package/dist/chunk-CCIDL4SA.js +19931 -0
  121. package/dist/{chunk-XVUHNWMX.js → chunk-CECH6QQP.js} +17 -19
  122. package/dist/chunk-CFAWTLSC.js +13 -0
  123. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CK4HAHVY.cjs} +212 -70
  124. package/dist/chunk-CO2AADYU.cjs +360 -0
  125. package/dist/chunk-CRTCZ4WL.cjs +19931 -0
  126. package/dist/chunk-CSTUTDTH.js +75 -0
  127. package/dist/{chunk-K2C56QGS.cjs → chunk-D546G7DA.cjs} +1650 -479
  128. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  129. package/dist/{chunk-G4CAKI3V.js → chunk-DGBPWODD.js} +7 -2
  130. package/dist/chunk-DHUQZ53B.cjs +29 -0
  131. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  132. package/dist/{chunk-5K6NGAVM.js → chunk-DNSD7DVJ.js} +67 -52
  133. package/dist/{chunk-RDF37HKB.cjs → chunk-DSSCERHI.cjs} +3 -2
  134. package/dist/{chunk-NAJ4IZKD.cjs → chunk-EA2MS25U.cjs} +8 -6
  135. package/dist/{chunk-SJAVBCOA.js → chunk-EEHWALXA.js} +94 -3
  136. package/dist/chunk-ES2HJQ4N.js +37 -0
  137. package/dist/{chunk-G27PQQFD.js → chunk-EYHKL4QC.js} +1 -1
  138. package/dist/{chunk-SV2WA57F.js → chunk-FBQJZKFX.js} +38 -15
  139. package/dist/chunk-FFBDRUO5.cjs +59 -0
  140. package/dist/{chunk-N7LI55V4.js → chunk-FFHSCM5M.js} +15 -8
  141. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  142. package/dist/chunk-FQVG6ZHF.js +197 -0
  143. package/dist/{chunk-J2GSFVUV.cjs → chunk-GAOPJ5S3.cjs} +74 -59
  144. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  145. package/dist/chunk-GSDV75A5.js +715 -0
  146. package/dist/chunk-GWY26SUD.cjs +63 -0
  147. package/dist/{chunk-TUAITHWL.js → chunk-H426KOGY.js} +2 -1
  148. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  149. package/dist/chunk-HC2Q6A3E.cjs +4967 -0
  150. package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
  151. package/dist/{chunk-5IXII4HX.cjs → chunk-HG3ZASBH.cjs} +23 -16
  152. package/dist/chunk-HK5A54AV.cjs +280 -0
  153. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  154. package/dist/chunk-HSWWM6AM.js +2340 -0
  155. package/dist/chunk-HTU4W3GB.js +183 -0
  156. package/dist/{chunk-HLHTG5ZU.cjs → chunk-HVCIB4SW.cjs} +14 -12
  157. package/dist/chunk-HXHE2KAO.js +385 -0
  158. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  159. package/dist/{chunk-SLQAYV3W.js → chunk-HZWU6IO3.js} +11 -2
  160. package/dist/chunk-I2ZK3AOD.js +866 -0
  161. package/dist/chunk-IEPLQ47J.js +719 -0
  162. package/dist/chunk-J5HE6CUM.cjs +124 -0
  163. package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
  164. package/dist/chunk-JB3JCYBJ.js +113 -0
  165. package/dist/chunk-JCUHCH37.cjs +247 -0
  166. package/dist/{chunk-FPHU2ES6.cjs → chunk-JM3ZTQUK.cjs} +19 -9
  167. package/dist/{chunk-NDMIPTV4.js → chunk-JMJRFSNJ.js} +8 -3
  168. package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
  169. package/dist/chunk-JPFRI4L4.js +4967 -0
  170. package/dist/{chunk-BVKXEQVG.cjs → chunk-JV5HVCHU.cjs} +22 -10
  171. package/dist/chunk-KA2U6MY2.js +388 -0
  172. package/dist/{chunk-SEKD5FH3.cjs → chunk-KASXKDF2.cjs} +8 -3
  173. package/dist/chunk-KJ26T7GM.cjs +367 -0
  174. package/dist/chunk-KM7R5YPS.cjs +385 -0
  175. package/dist/{chunk-MBBY4ZIK.js → chunk-KMP6Y3LJ.js} +4 -1
  176. package/dist/chunk-KWXGDSYT.js +184 -0
  177. package/dist/{chunk-C5IJIM2V.cjs → chunk-L46OUKW5.cjs} +68 -37
  178. package/dist/{chunk-6UJMCWRY.js → chunk-L6OH44HL.js} +19 -9
  179. package/dist/chunk-LANGD5CO.js +280 -0
  180. package/dist/{chunk-APIXPPMT.js → chunk-LEZEWKPA.js} +1004 -39
  181. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  182. package/dist/chunk-LJD7KR3L.cjs +44 -0
  183. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  184. package/dist/{chunk-QXH5RCFI.js → chunk-M5DK524Z.js} +2 -2
  185. package/dist/chunk-M7B7RRBK.cjs +1034 -0
  186. package/dist/chunk-MANJ67D3.js +3897 -0
  187. package/dist/{chunk-HPHJ73GU.cjs → chunk-MGNXABSU.cjs} +9 -9
  188. package/dist/{chunk-6ZCULLCA.js → chunk-MMKZSJUN.js} +1 -1
  189. package/dist/{chunk-DVUHHH3B.cjs → chunk-MQQH4XQH.cjs} +4 -4
  190. package/dist/chunk-MUNUUFU7.cjs +21 -0
  191. package/dist/{chunk-DVZOENQ7.cjs → chunk-MZN6JBRZ.cjs} +9 -4
  192. package/dist/{chunk-OOKY3HPZ.js → chunk-NB6M6ESM.js} +50 -9
  193. package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
  194. package/dist/chunk-NHWHEW7M.cjs +75 -0
  195. package/dist/chunk-NQZH5CR2.cjs +468 -0
  196. package/dist/{chunk-EGPXJERY.cjs → chunk-NV6LCD2I.cjs} +119 -28
  197. package/dist/chunk-NVATU4V6.cjs +44 -0
  198. package/dist/{chunk-YZXUDM5X.js → chunk-NZ3ZWLUW.js} +204 -62
  199. package/dist/chunk-NZ7GCK7Y.cjs +92 -0
  200. package/dist/{chunk-VEKDGU2Q.cjs → chunk-NZQFKXM3.cjs} +49 -25
  201. package/dist/chunk-O5GI6SR3.js +59 -0
  202. package/dist/{chunk-56SWIDEL.cjs → chunk-OCATAKXV.cjs} +57 -56
  203. package/dist/{chunk-SKV2F3NM.js → chunk-OIGYWOL6.js} +1 -1
  204. package/dist/{chunk-IFFXSTOM.cjs → chunk-ONVYXTUT.cjs} +3 -3
  205. package/dist/chunk-OR67YXQK.cjs +13 -0
  206. package/dist/chunk-OV3T5MUH.cjs +715 -0
  207. package/dist/{chunk-OHUZKDGX.js → chunk-P4FUTSVK.js} +3 -3
  208. package/dist/chunk-P6SLT2F4.cjs +139 -0
  209. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  210. package/dist/chunk-PCM3N3CL.cjs +37 -0
  211. package/dist/{chunk-2AA5MFES.js → chunk-PGFLPURU.js} +8 -5
  212. package/dist/{chunk-DJDE4DTT.cjs → chunk-PIXQ2AVM.cjs} +25 -19
  213. package/dist/chunk-PNIAIOMZ.cjs +229 -0
  214. package/dist/{chunk-HTLINWX6.cjs → chunk-PQBYFEBL.cjs} +16 -13
  215. package/dist/{chunk-22D2CNTP.cjs → chunk-PSAH4ZQB.cjs} +5 -2
  216. package/dist/{chunk-3VTAFAL2.js → chunk-PTTZI4QZ.js} +16 -12
  217. package/dist/{chunk-WPVWQSL7.cjs → chunk-PY73W5MQ.cjs} +16 -13
  218. package/dist/{chunk-EGMZDTSL.js → chunk-PZZMIYII.js} +10 -2
  219. package/dist/{chunk-HBZU3RBZ.js → chunk-Q3BS6FPM.js} +34 -10
  220. package/dist/chunk-QBYGMMDD.js +517 -0
  221. package/dist/chunk-QLZOMZO5.cjs +388 -0
  222. package/dist/{chunk-ADUFCS4Q.cjs → chunk-QQ64HEHP.cjs} +160 -79
  223. package/dist/{chunk-L3TWPROA.js → chunk-QRQF3556.js} +44 -24
  224. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  225. package/dist/chunk-RAKO7UN7.js +114 -0
  226. package/dist/{chunk-7TQH3CL4.cjs → chunk-RBXBH6EB.cjs} +78 -35
  227. package/dist/chunk-RFUKZIJF.cjs +78 -0
  228. package/dist/chunk-RS2E32YB.js +71 -0
  229. package/dist/{chunk-OLSBBZW6.cjs → chunk-S5JNQIGL.cjs} +5 -5
  230. package/dist/{chunk-FTYY5JJD.js → chunk-S5QKRA2V.js} +2 -2
  231. package/dist/chunk-SD3NTC7D.cjs +77 -0
  232. package/dist/{chunk-KPELYZ6L.js → chunk-SDLY4X3G.js} +2 -2
  233. package/dist/{chunk-IDFF5J2E.js → chunk-SFFEKZGC.js} +38 -7
  234. package/dist/{chunk-EGFT4PGW.js → chunk-SHRLFX6F.js} +8 -3
  235. package/dist/{chunk-3WICOC33.js → chunk-SNDDZG5H.js} +124 -84
  236. package/dist/{chunk-CZXGCVTR.cjs → chunk-SOVR7S3T.cjs} +2 -2
  237. package/dist/chunk-SPQ7QIQ6.js +78 -0
  238. package/dist/{chunk-XRZEUWKF.js → chunk-SRMGWMQO.js} +1 -1
  239. package/dist/{chunk-R33VKSH5.cjs → chunk-SVVP4UUZ.cjs} +11 -11
  240. package/dist/{chunk-7BTSG4ME.cjs → chunk-SY2P3Z5W.cjs} +1004 -39
  241. package/dist/chunk-SZD45IDG.js +468 -0
  242. package/dist/{chunk-3O3MOK5C.cjs → chunk-TE4SYTWR.cjs} +1114 -142
  243. package/dist/chunk-TH26BQJG.js +101 -0
  244. package/dist/{chunk-QNGEW5TC.js → chunk-TR6NECEZ.js} +1 -1
  245. package/dist/{chunk-YGN4CQIP.js → chunk-TYBPTKFT.js} +1 -1
  246. package/dist/{chunk-GJH7XMSK.js → chunk-U2QUMKCB.js} +8 -6
  247. package/dist/{chunk-47CKWKEX.cjs → chunk-U6PLSPMD.cjs} +9 -4
  248. package/dist/chunk-UOQECODR.js +34 -0
  249. package/dist/chunk-UR27UDTB.js +354 -0
  250. package/dist/chunk-UWZ4G3SQ.js +93 -0
  251. package/dist/{chunk-Y72HH2TF.cjs → chunk-V3SZLWEQ.cjs} +33 -24
  252. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  253. package/dist/{chunk-3PDTTAKJ.js → chunk-V5ELP2XE.js} +19 -12
  254. package/dist/{chunk-3K2ESU53.cjs → chunk-VKOXFT4L.cjs} +2 -2
  255. package/dist/{chunk-XTB6VJVQ.cjs → chunk-VLGGMQUN.cjs} +6 -6
  256. package/dist/chunk-VQHSYAPZ.cjs +3897 -0
  257. package/dist/chunk-VUGOOGHB.js +400 -0
  258. package/dist/chunk-W5QLA6WP.cjs +866 -0
  259. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  260. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  261. package/dist/chunk-WJYFLQ7G.cjs +27 -0
  262. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  263. package/dist/{chunk-ZSPXQYG2.js → chunk-WNJXIACY.js} +7 -5
  264. package/dist/{chunk-AYS2ASM7.js → chunk-WPE2XHVX.js} +1 -1
  265. package/dist/chunk-WTB7AFL6.cjs +101 -0
  266. package/dist/{chunk-JYTDYJVW.js → chunk-X3TI5TJJ.js} +1 -1
  267. package/dist/chunk-X5P6QQOB.cjs +719 -0
  268. package/dist/{chunk-245KJE5Y.cjs → chunk-X7XMITIL.cjs} +14 -6
  269. package/dist/chunk-XF2WIKHR.cjs +34 -0
  270. package/dist/{chunk-DV2ZHK7B.cjs → chunk-XNIMSVS6.cjs} +49 -26
  271. package/dist/chunk-XW3XCK4E.cjs +59 -0
  272. package/dist/{chunk-N23UAW4I.js → chunk-XZVDYC5U.js} +7 -2
  273. package/dist/chunk-Y5BDE24P.cjs +444 -0
  274. package/dist/{chunk-NAGQ2PDC.js → chunk-YC5OBZQU.js} +1604 -433
  275. package/dist/chunk-YISPVAXO.cjs +2340 -0
  276. package/dist/{chunk-KQGPTCQJ.js → chunk-YQDI753V.js} +68 -25
  277. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  278. package/dist/{chunk-NNPAM4HC.cjs → chunk-YWH55BWK.cjs} +15 -6
  279. package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
  280. package/dist/{chunk-XX2ZO7DS.js → chunk-YXM6SA7P.js} +25 -16
  281. package/dist/chunk-YZWE7XSM.js +5 -0
  282. package/dist/chunk-ZASDSY7P.cjs +114 -0
  283. package/dist/{chunk-2UC22DJU.js → chunk-ZNGRLCFQ.js} +30 -4
  284. package/dist/{chunk-KANW6OYC.cjs → chunk-ZNYZB7XY.cjs} +34 -8
  285. package/dist/{chunk-NA6WQDYW.js → chunk-ZPLCAXJW.js} +1088 -116
  286. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  287. package/dist/chunk-ZUYYHKQA.js +44 -0
  288. package/dist/clear-QJXU25IF.cjs +12 -0
  289. package/dist/{clear-A3N4GK2S.js → clear-Y5TO3RZA.js} +3 -3
  290. package/dist/communityInstaller-LXMVKVAV.cjs +22 -0
  291. package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-RVL4STPS.js} +8 -5
  292. package/dist/completion-JX4T2ONW.cjs +17 -0
  293. package/dist/completion-SE3XYG74.js +17 -0
  294. package/dist/config-3224PRW4.cjs +21 -0
  295. package/dist/{config-HPJPKTO6.js → config-7KPHKFTP.js} +7 -4
  296. package/dist/{constants-LISJW3DD.js → constants-EJFAWJQI.js} +1 -1
  297. package/dist/constants-MCCGUU5F.cjs +21 -0
  298. package/dist/{defaultHooks-IHSJR2AX.cjs → defaultHooks-2V2CQL63.cjs} +25 -10
  299. package/dist/{defaultHooks-KUKHK3AG.js → defaultHooks-TMHDU3FS.js} +25 -10
  300. package/dist/export-BJVIDZC4.js +15 -0
  301. package/dist/export-KU4557HK.cjs +15 -0
  302. package/dist/feature-K3LG5IJP.cjs +14 -0
  303. package/dist/feature-V4JF5TNJ.js +14 -0
  304. package/dist/features-5OJTLKS7.js +23 -0
  305. package/dist/features-VCBJQXCX.cjs +23 -0
  306. package/dist/feedback-D4437VE4.js +18 -0
  307. package/dist/feedback-VZPEHGFY.cjs +18 -0
  308. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  309. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  310. package/dist/{filesystem-Z7BWAWMZ.js → filesystem-L6DQKGWK.js} +3 -2
  311. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  312. package/dist/go-X4E6BCD6.js +12 -0
  313. package/dist/go-XREVFS5I.cjs +12 -0
  314. package/dist/goal-4M3J6JS2.cjs +16 -0
  315. package/dist/goal-EI66BV7W.js +16 -0
  316. package/dist/help-GGFS7WHY.cjs +12 -0
  317. package/dist/{help-GFQXNZOK.js → help-MLIROWKM.js} +2 -2
  318. package/dist/{history-E3N6BJP7.js → history-GQJ6RZD6.js} +2 -2
  319. package/dist/history-J4LUIOSI.cjs +14 -0
  320. package/dist/hooks-FSRIUS6A.cjs +18 -0
  321. package/dist/hooks-PPFHCF7T.js +18 -0
  322. package/dist/i18n-CI6VFXL5.cjs +33 -0
  323. package/dist/{i18n-SY7QRM22.js → i18n-Q7UZJRPL.js} +1 -1
  324. package/dist/ide-BUSVE54P.js +15 -0
  325. package/dist/ide-YR27BPGM.cjs +15 -0
  326. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  327. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  328. package/dist/{import-W7SVLSTC.js → import-3VBKI6BN.js} +3 -3
  329. package/dist/{import-ADI37ZUR.cjs → import-C7S6UJMW.cjs} +3 -3
  330. package/dist/import-DBK4OCDF.cjs +10 -0
  331. package/dist/{import-KGKKZ3B7.js → import-U47DXCA7.js} +2 -2
  332. package/dist/index.cjs +837 -23011
  333. package/dist/index.d.cts +95 -0
  334. package/dist/index.d.ts +95 -0
  335. package/dist/index.js +864 -23038
  336. package/dist/init-OXTYS72D.cjs +10 -0
  337. package/dist/{init-7MFK626E.js → init-Q2O4R42R.js} +2 -2
  338. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  339. package/dist/inkMode-WBNFOSAT.js +7 -0
  340. package/dist/inputPrompt-3CFZDUBH.js +90 -0
  341. package/dist/inputPrompt-JMACL4EB.cjs +90 -0
  342. package/dist/language-EK3M6UBV.cjs +22 -0
  343. package/dist/language-Q3RUGGOW.js +22 -0
  344. package/dist/learn-3DSX7DYG.cjs +23 -0
  345. package/dist/learn-OPOH5L43.js +23 -0
  346. package/dist/login-GST7MWXJ.cjs +27 -0
  347. package/dist/login-Q7DZKAX4.js +27 -0
  348. package/dist/logout-2G7OUK7I.cjs +24 -0
  349. package/dist/logout-FNBBL2UI.js +24 -0
  350. package/dist/mcp-AH3MMUBU.js +21 -0
  351. package/dist/mcp-DW7R63IB.cjs +21 -0
  352. package/dist/{mcp-install-2FEROZTL.js → mcp-install-222PCKSW.js} +18 -10
  353. package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-IA4ZS2SV.cjs} +22 -14
  354. package/dist/memory-6NX3DAIY.cjs +10 -0
  355. package/dist/{memory-J73WZH2I.js → memory-VB46T5H3.js} +2 -2
  356. package/dist/model-64NAELFS.cjs +10 -0
  357. package/dist/{model-AES267IN.js → model-SJJG64AM.js} +2 -2
  358. package/dist/new-DU5SOOOY.cjs +12 -0
  359. package/dist/{new-5CLF3MKH.js → new-ERZ5C6CN.js} +3 -3
  360. package/dist/onboarding-2U2BV2KE.cjs +36 -0
  361. package/dist/onboarding-ZQXMPSMJ.js +36 -0
  362. package/dist/permissions-7ACNFK7A.js +10 -0
  363. package/dist/permissions-GSNNV7RJ.cjs +10 -0
  364. package/dist/plan-XEJMOT55.cjs +13 -0
  365. package/dist/{plan-65HMS5HQ.js → plan-YYUAXPTL.js} +3 -1
  366. package/dist/pr-review-CW6J7P62.cjs +9 -0
  367. package/dist/pr-review-YZSBQVT2.js +9 -0
  368. package/dist/{quit-XDZYRSPU.js → quit-WY6T267G.js} +2 -2
  369. package/dist/quit-XIRE2KRE.cjs +10 -0
  370. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  371. package/dist/rawMode-GFNLXQPU.js +7 -0
  372. package/dist/{registry-PTHWERKC.js → registry-4DXUDKJN.js} +29 -44
  373. package/dist/{registry-IVT4G2RT.cjs → registry-UEO3ETZ7.cjs} +65 -80
  374. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  375. package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
  376. package/dist/resume-RQZ3WXBP.cjs +17 -0
  377. package/dist/resume-XSXZMDMD.js +17 -0
  378. package/dist/review-QHP2KP4Q.js +9 -0
  379. package/dist/review-UWHWQHCB.cjs +9 -0
  380. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  381. package/dist/ripgrep-VHJQQ55W.js +9 -0
  382. package/dist/rpc-XH7QLN4H.js +3874 -0
  383. package/dist/rpc-YF54T7JU.cjs +3874 -0
  384. package/dist/search-VXXFGZWU.cjs +21 -0
  385. package/dist/search-YAWGX7P7.js +21 -0
  386. package/dist/{sessions-6GWEBMKS.js → sessions-NJYHJOEL.js} +2 -2
  387. package/dist/sessions-OSG3UJEZ.cjs +10 -0
  388. package/dist/settings-SO2UIGWV.cjs +42 -0
  389. package/dist/settings-ZXUQH3DO.js +42 -0
  390. package/dist/setup-KG7EGKF5.js +30 -0
  391. package/dist/setup-RSOPCQ57.cjs +30 -0
  392. package/dist/share-WFAGZ5PY.js +17 -0
  393. package/dist/share-ZU3SGACF.cjs +17 -0
  394. package/dist/skills-KBVAQAD2.cjs +29 -0
  395. package/dist/skills-NBTNDVAY.js +29 -0
  396. package/dist/{skills-ZZCIAS7C.js → skills-OB6RDW7D.js} +10 -7
  397. package/dist/{skills-PG542VEB.cjs → skills-ZROBG3RZ.cjs} +13 -10
  398. package/dist/{skills-install-SRC3Z2MS.js → skills-install-BHTIEMKH.js} +21 -70
  399. package/dist/{skills-install-67DOBPJC.cjs → skills-install-ILX6QVEF.cjs} +34 -83
  400. package/dist/skills-new-B45VQ2PP.cjs +18 -0
  401. package/dist/skills-new-YMRP2HNO.js +18 -0
  402. package/dist/slashCommands-53VYIBJU.js +105 -0
  403. package/dist/slashCommands-BG2RGGZ6.cjs +105 -0
  404. package/dist/status-CQ2IUOVK.cjs +24 -0
  405. package/dist/status-E7IGNVPC.js +24 -0
  406. package/dist/summarizer-DGPHE5IQ.js +17 -0
  407. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  408. package/dist/sync-7C25MOT2.js +22 -0
  409. package/dist/{sync-VU2NSJ4O.js → sync-OCJN4ZSO.js} +3 -3
  410. package/dist/sync-XRP46IVG.cjs +40 -0
  411. package/dist/sync-ZMFVE7T4.cjs +22 -0
  412. package/dist/{teammate-SXRVXNQV.cjs → teammate-D77B6QRT.cjs} +31 -9
  413. package/dist/{teammate-SD26GR37.js → teammate-EZCMHOIL.js} +30 -8
  414. package/dist/templates-ARG2VRWW.cjs +11 -0
  415. package/dist/templates-UGVZV3KJ.js +11 -0
  416. package/dist/theme-KKRDE6P7.cjs +22 -0
  417. package/dist/theme-XF7XIWBQ.js +22 -0
  418. package/dist/tools-3PPTTKFV.js +9 -0
  419. package/dist/tools-THIQA7WC.cjs +9 -0
  420. package/dist/ui/questionModal.cjs +8 -5
  421. package/dist/ui/questionModal.js +7 -4
  422. package/dist/{undo-OL2EDBRY.js → undo-GNUTFXCW.js} +2 -2
  423. package/dist/undo-U4KN7QQM.cjs +10 -0
  424. package/dist/usage-QSTNSDAO.js +24 -0
  425. package/dist/usage-YDEMQBNQ.cjs +24 -0
  426. package/dist/web-3BA2WV37.cjs +37 -0
  427. package/dist/web-6FYGBX5K.js +37 -0
  428. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  429. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  430. package/dist/yolo-GF2YD7ZI.js +9 -0
  431. package/dist/yolo-OGDA7HNC.cjs +9 -0
  432. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  433. package/dist/yoloMode-4JOOSU26.js +17 -0
  434. package/package.json +51 -49
  435. package/dist/AgentRegistry-HRPN6ZOF.cjs +0 -10
  436. package/dist/CommunitySkillsCache-KE435RAR.cjs +0 -8
  437. package/dist/GitHubRegistryFetcher-I45SESIL.cjs +0 -7
  438. package/dist/LearnAdvisor-FLBA6FDD.js +0 -9
  439. package/dist/LearnAdvisor-GG3CXQF3.cjs +0 -9
  440. package/dist/MemoryManager-2LQPIYVE.cjs +0 -8
  441. package/dist/PermissionManager-X57BXHJ6.cjs +0 -11
  442. package/dist/ProviderFactory-KPJOGQWF.cjs +0 -9
  443. package/dist/SessionManager-YBJAZXNO.cjs +0 -10
  444. package/dist/SkillsRegistry-7O72A6TZ.cjs +0 -9
  445. package/dist/SubAgent-JT4HZHN7.js +0 -11
  446. package/dist/SubAgent-VPNYDWAU.cjs +0 -11
  447. package/dist/SyncApiClient-HQXJL5BT.cjs +0 -11
  448. package/dist/about-4DB5KTHW.js +0 -12
  449. package/dist/about-LXAOXZFT.cjs +0 -12
  450. package/dist/actionExecutor-23JB2WUC.js +0 -19
  451. package/dist/actionExecutor-X5UEZSKH.cjs +0 -19
  452. package/dist/add-dir-YC37DMSF.cjs +0 -10
  453. package/dist/agents-YF3BSUU5.js +0 -12
  454. package/dist/agents-ZOUHPMYR.cjs +0 -12
  455. package/dist/agents-new-HSH4GQPG.js +0 -14
  456. package/dist/agents-new-VYUDOCE7.cjs +0 -14
  457. package/dist/autoSkill-X5W52WOE.cjs +0 -20
  458. package/dist/automode-SJGM7VEI.cjs +0 -10
  459. package/dist/chunk-ALYU6VTM.js +0 -105
  460. package/dist/chunk-B53A2NM2.js +0 -2030
  461. package/dist/chunk-BJXSNT46.js +0 -100
  462. package/dist/chunk-CB4E2T5N.cjs +0 -312
  463. package/dist/chunk-DNUOXBHL.js +0 -539
  464. package/dist/chunk-EFX2QSZX.cjs +0 -33
  465. package/dist/chunk-GCXYXLRA.cjs +0 -111
  466. package/dist/chunk-H2ZRHQQV.js +0 -33
  467. package/dist/chunk-HNRPK5MY.cjs +0 -85
  468. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  469. package/dist/chunk-JJLYWH5Y.cjs +0 -100
  470. package/dist/chunk-LWUJFGOZ.js +0 -115
  471. package/dist/chunk-MERYP6AM.cjs +0 -539
  472. package/dist/chunk-MZAPWNAC.cjs +0 -207
  473. package/dist/chunk-NTSDP2WB.js +0 -226
  474. package/dist/chunk-OUZQXMHL.cjs +0 -226
  475. package/dist/chunk-PGESAU2W.cjs +0 -2030
  476. package/dist/chunk-SYVYLZZF.cjs +0 -24
  477. package/dist/chunk-SZOLA6FR.js +0 -111
  478. package/dist/chunk-VWDHR4HV.js +0 -168
  479. package/dist/chunk-Y45G6ZO5.cjs +0 -168
  480. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  481. package/dist/chunk-ZYVS43MU.js +0 -312
  482. package/dist/clear-GK4IEUUS.cjs +0 -12
  483. package/dist/communityInstaller-XXC7RLE4.cjs +0 -19
  484. package/dist/completion-HWABSAEL.js +0 -14
  485. package/dist/completion-IUUVQG4D.cjs +0 -14
  486. package/dist/config-HF7WOLZF.cjs +0 -18
  487. package/dist/constants-PEO3P2SJ.cjs +0 -21
  488. package/dist/export-QJAV2FCZ.js +0 -12
  489. package/dist/export-XSRFXGWU.cjs +0 -12
  490. package/dist/feedback-4TCIL3ML.cjs +0 -15
  491. package/dist/feedback-SJ6VVEY3.js +0 -15
  492. package/dist/filesystem-W56QZUJF.cjs +0 -10
  493. package/dist/help-ISBVQL3S.cjs +0 -12
  494. package/dist/history-XQ4GTSFU.cjs +0 -14
  495. package/dist/hooks-CJNKJ5PF.js +0 -13
  496. package/dist/hooks-UTMBTAXT.cjs +0 -13
  497. package/dist/i18n-N7QQ7A5M.cjs +0 -33
  498. package/dist/ide-RTA4UJV4.js +0 -12
  499. package/dist/ide-VWVOLIFF.cjs +0 -12
  500. package/dist/immediateCommandRouter-BW34JNXL.js +0 -9
  501. package/dist/immediateCommandRouter-SHOVNB5X.cjs +0 -9
  502. package/dist/import-ZLJVONXH.cjs +0 -10
  503. package/dist/init-TBKAB4LZ.cjs +0 -10
  504. package/dist/language-MDSHEXHB.cjs +0 -18
  505. package/dist/language-PXTQSHIG.js +0 -18
  506. package/dist/learn-623TW5EK.cjs +0 -20
  507. package/dist/learn-BCPV7GM2.js +0 -20
  508. package/dist/localProjectPermissions-BHQXEWZJ.cjs +0 -18
  509. package/dist/localProjectPermissions-GMOUYQM6.js +0 -18
  510. package/dist/login-QMVEETWJ.js +0 -20
  511. package/dist/login-QYMXAL3K.cjs +0 -20
  512. package/dist/logout-2CMTDAOJ.js +0 -18
  513. package/dist/logout-ZOHVZAUK.cjs +0 -18
  514. package/dist/mcp-IUVKK65S.js +0 -18
  515. package/dist/mcp-TXC7PYG3.cjs +0 -18
  516. package/dist/memory-WRIHDEPK.cjs +0 -10
  517. package/dist/model-RLP75SF5.cjs +0 -10
  518. package/dist/new-HLSFL6A4.cjs +0 -12
  519. package/dist/permissions-GP6FTGZ2.js +0 -13
  520. package/dist/permissions-O6EKKPOG.cjs +0 -13
  521. package/dist/plan-MCAXDIM2.cjs +0 -11
  522. package/dist/quit-TQX6GXA5.cjs +0 -10
  523. package/dist/repeat-BSPS5TWD.cjs +0 -13
  524. package/dist/resume-2GOPDLL4.cjs +0 -13
  525. package/dist/resume-37IUVDA6.js +0 -13
  526. package/dist/search-7KUSHIBL.cjs +0 -17
  527. package/dist/search-OJGDRIMA.js +0 -17
  528. package/dist/sessions-CYYCHSQG.cjs +0 -10
  529. package/dist/settings-2D7CAO66.cjs +0 -30
  530. package/dist/settings-BXR6SBJP.js +0 -30
  531. package/dist/share-BXQY5IQU.js +0 -14
  532. package/dist/share-OSFXZBGS.cjs +0 -14
  533. package/dist/skills-FL6O6AOM.cjs +0 -26
  534. package/dist/skills-PNKQZRNK.js +0 -26
  535. package/dist/skills-new-XFMEHHIF.cjs +0 -15
  536. package/dist/skills-new-ZNZPHUKS.js +0 -15
  537. package/dist/slashCommands-LLCNPK3X.js +0 -76
  538. package/dist/slashCommands-RXZZS6RE.cjs +0 -76
  539. package/dist/status-BCECUJXT.cjs +0 -11
  540. package/dist/status-EFO7MQU3.js +0 -11
  541. package/dist/sync-IJYJ6KKM.js +0 -18
  542. package/dist/sync-LFT6SBPF.cjs +0 -18
  543. package/dist/sync-U7SDPBNZ.cjs +0 -40
  544. package/dist/theme-AWBHSG7J.cjs +0 -18
  545. package/dist/theme-TQLBPJ2E.js +0 -18
  546. 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-HZWU6IO3.js";
6
+ import {
7
+ disableBracketedPaste,
8
+ enableBracketedPaste
9
+ } from "./chunk-CSTUTDTH.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
@@ -0,0 +1,92 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
4
+
5
+
6
+ var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
7
+
8
+
9
+
10
+
11
+
12
+
13
+ var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
14
+
15
+ // src/commands/language.ts
16
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
17
+ async function language(ctx) {
18
+ const currentLocale = _chunkSY2P3Z5Wcjs.getCurrentLocale.call(void 0, );
19
+ const currentDisplayName = _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
20
+ console.log(_chalk2.default.cyan(`
21
+ \u{1F310} ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.title")}
22
+ `));
23
+ console.log(_chalk2.default.gray(`${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
24
+ console.log();
25
+ const options = _chunkSY2P3Z5Wcjs.SUPPORTED_LOCALES.map((locale) => ({
26
+ label: locale === currentLocale ? `${_chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[locale]} (${_chunkSY2P3Z5Wcjs.t.call(void 0, "common.current")})` : _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[locale],
27
+ value: locale
28
+ }));
29
+ await _optionalChain([ctx, 'access', _ => _.onBeforeModal, 'optionalCall', _2 => _2()]);
30
+ const result = await (async () => {
31
+ try {
32
+ return await _chunkCK4HAHVYcjs.showModal.call(void 0, {
33
+ title: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.selectPrompt"),
34
+ options,
35
+ initialIndex: _chunkSY2P3Z5Wcjs.SUPPORTED_LOCALES.indexOf(currentLocale)
36
+ });
37
+ } finally {
38
+ await _optionalChain([ctx, 'access', _3 => _3.onAfterModal, 'optionalCall', _4 => _4()]);
39
+ }
40
+ })();
41
+ if (!result) {
42
+ console.log(_chalk2.default.gray("\nLanguage selection cancelled."));
43
+ return null;
44
+ }
45
+ const selected = result.value;
46
+ if (selected === currentLocale) {
47
+ console.log(_chalk2.default.gray(`
48
+ ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.noChange")}`));
49
+ return null;
50
+ }
51
+ await _chunkSY2P3Z5Wcjs.changeLanguage.call(void 0, selected);
52
+ ctx.config.ui = { ...ctx.config.ui, locale: selected };
53
+ await _chunkX5P6QQOBcjs.saveConfig.call(void 0, ctx.config);
54
+ const newDisplayName = _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[selected];
55
+ console.log(_chalk2.default.green(`
56
+ \u2713 ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.changed", { language: newDisplayName })}`));
57
+ console.log();
58
+ return null;
59
+ }
60
+ async function languageInfo() {
61
+ const currentLocale = _chunkSY2P3Z5Wcjs.getCurrentLocale.call(void 0, );
62
+ const currentDisplayName = _chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
63
+ console.log(_chalk2.default.cyan(`
64
+ \u{1F310} ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.title")}
65
+ `));
66
+ console.log(_chalk2.default.gray(`${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
67
+ console.log(_chalk2.default.gray(`Locale code: ${_chalk2.default.white(currentLocale)}`));
68
+ console.log();
69
+ console.log(_chalk2.default.gray("Supported languages:"));
70
+ for (const locale of _chunkSY2P3Z5Wcjs.SUPPORTED_LOCALES) {
71
+ const marker = locale === currentLocale ? _chalk2.default.green("\u25CF") : _chalk2.default.gray("\u25CB");
72
+ console.log(` ${marker} ${_chunkSY2P3Z5Wcjs.LANGUAGE_DISPLAY_NAMES[locale]}`);
73
+ }
74
+ console.log();
75
+ return null;
76
+ }
77
+ var metadata = {
78
+ command: "/language",
79
+ description: "change display language",
80
+ implemented: true
81
+ };
82
+
83
+
84
+
85
+
86
+
87
+ exports.language = language; exports.languageInfo = languageInfo; exports.metadata = metadata;
88
+ /**
89
+ * @license
90
+ * Copyright 2025 Autohand AI LLC
91
+ * SPDX-License-Identifier: Apache-2.0
92
+ */