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,31 +1,31 @@
1
- import {
2
- computeProjectHash,
3
- fetchRegistryWithFallback,
4
- injectGeneratedMetadata
5
- } from "./chunk-OHUZKDGX.js";
6
1
  import {
7
2
  LearnAdvisor
8
- } from "./chunk-TUAITHWL.js";
3
+ } from "./chunk-H426KOGY.js";
9
4
  import {
10
5
  ProjectAnalyzer
11
- } from "./chunk-ZSPXQYG2.js";
6
+ } from "./chunk-WNJXIACY.js";
7
+ import {
8
+ computeProjectHash,
9
+ fetchRegistryWithFallback,
10
+ injectGeneratedMetadata
11
+ } from "./chunk-P4FUTSVK.js";
12
12
  import {
13
13
  CommunitySkillsCache
14
- } from "./chunk-MBBY4ZIK.js";
14
+ } from "./chunk-KMP6Y3LJ.js";
15
15
  import {
16
16
  GitHubRegistryFetcher
17
- } from "./chunk-UJ2JSM6H.js";
17
+ } from "./chunk-YVQI26H4.js";
18
18
  import {
19
19
  showConfirm,
20
20
  showModal
21
- } from "./chunk-YZXUDM5X.js";
21
+ } from "./chunk-NZ3ZWLUW.js";
22
22
  import {
23
23
  AUTOHAND_PATHS,
24
24
  PROJECT_DIR_NAME
25
- } from "./chunk-EGFT4PGW.js";
25
+ } from "./chunk-SHRLFX6F.js";
26
26
  import {
27
27
  t
28
- } from "./chunk-APIXPPMT.js";
28
+ } from "./chunk-LEZEWKPA.js";
29
29
 
30
30
  // src/commands/learn.ts
31
31
  import path from "path";
@@ -37,10 +37,8 @@ import chalk from "chalk";
37
37
  var BLINK_ON = "\x1B[5m";
38
38
  var BLINK_OFF = "\x1B[25m";
39
39
  var StepProgress = class {
40
- constructor() {
41
- this.currentLabel = "";
42
- this.stepCount = 0;
43
- }
40
+ currentLabel = "";
41
+ stepCount = 0;
44
42
  /**
45
43
  * Start the progress display with the first step.
46
44
  */
@@ -82,11 +80,11 @@ function logProgress(ctx, message, progress) {
82
80
  }
83
81
  }
84
82
  async function withModalPause(ctx, fn) {
85
- ctx.onBeforeModal?.();
83
+ await ctx.onBeforeModal?.();
86
84
  try {
87
85
  return await fn();
88
86
  } finally {
89
- ctx.onAfterModal?.();
87
+ await ctx.onAfterModal?.();
90
88
  }
91
89
  }
92
90
  function parseLearnArgs(args) {
@@ -164,7 +162,7 @@ async function handleLearnRecommend(ctx, deep) {
164
162
  if (goodMatches.length === 0 && !isNonInteractive) {
165
163
  const gapDesc = result.gapAnalysis ? `Based on gap analysis: ${result.gapAnalysis}` : `A custom skill tailored for your ${analysis.frameworks.join("/") || analysis.languages.join("/")} project.`;
166
164
  lines.push(chalk2.cyan(gapDesc));
167
- const { renderTerminalMarkdown } = await import("./immediateCommandRouter-BW34JNXL.js");
165
+ const { renderTerminalMarkdown } = await import("./immediateCommandRouter-MTEHZXQX.js");
168
166
  console.log(renderTerminalMarkdown(lines.join("\n")));
169
167
  const wantGenerate = await withModalPause(
170
168
  ctx,
@@ -0,0 +1,13 @@
1
+ // src/ui/inkMode.ts
2
+ function shouldUseInkRenderer(env = process.env) {
3
+ return env.AUTOHAND_LEGACY_UI !== "1" && env.AUTOHAND_NO_INK !== "1";
4
+ }
5
+
6
+ export {
7
+ shouldUseInkRenderer
8
+ };
9
+ /**
10
+ * @license
11
+ * Copyright 2025 Autohand AI LLC
12
+ * SPDX-License-Identifier: Apache-2.0
13
+ */
@@ -1,13 +1,33 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkNNPAM4HCcjs = require('./chunk-NNPAM4HC.cjs');
4
+
5
+ var _chunkYWH55BWKcjs = require('./chunk-YWH55BWK.cjs');
6
+
7
+
8
+
9
+ var _chunkNHWHEW7Mcjs = require('./chunk-NHWHEW7M.cjs');
10
+
11
+
12
+
13
+ var _chunkYWTIXHU6cjs = require('./chunk-YWTIXHU6.cjs');
5
14
 
6
15
  // src/ui/ink/components/Modal.tsx
7
16
  var _react = require('react');
8
17
  var _ink = require('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
  var _jsxruntime = require('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
+ _chunkNHWHEW7Mcjs.disableBracketedPaste.call(void 0, output);
65
+ resetScrollRegion();
66
+ output.write(ENTER_ALTERNATE_SCREEN);
67
+ }
68
+ function cleanupModalRender(output = process.stdout) {
69
+ output.write(EXIT_ALTERNATE_SCREEN);
70
+ _chunkNHWHEW7Mcjs.enableBracketedPaste.call(void 0, output);
23
71
  }
24
72
  function Modal(props) {
25
- const { t } = _chunkNNPAM4HCcjs.useTranslation.call(void 0, );
26
- const { title, onCancel } = props;
73
+ const { t } = _chunkYWH55BWKcjs.useTranslation.call(void 0, );
74
+ const { theme } = _chunkYWTIXHU6cjs.useTheme.call(void 0, );
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] = _react.useState.call(void 0, "");
49
98
  const [isCustomMode, setIsCustomMode] = _react.useState.call(void 0, false);
99
+ const isMultiSelect = mode === "select" && "multiSelect" in props && props.multiSelect;
100
+ const [checkedSet, setCheckedSet] = _react.useState.call(void 0, () => {
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] = _react.useState.call(void 0, () => {
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] = _react.useState.call(void 0, () => {
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] = _react.useState.call(void 0, null);
57
119
  const choices = _react.useMemo.call(void 0, () => {
58
120
  if (mode === "select" && "options" in props) {
@@ -92,7 +154,7 @@ function Modal(props) {
92
154
  [choices]
93
155
  );
94
156
  _ink.useInput.call(void 0, (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,19 +233,36 @@ 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
+ _optionalChain([props, 'access', _4 => _4.onToggle, 'optionalCall', _5 => _5(selected, nowChecked)]);
248
+ return next;
249
+ });
250
+ }
251
+ return;
252
+ }
150
253
  if (key.return) {
151
254
  const selected = choices[cursor];
152
- if (_optionalChain([selected, 'optionalAccess', _4 => _4.disabled])) {
255
+ if (_optionalChain([selected, 'optionalAccess', _6 => _6.disabled])) {
153
256
  return;
154
257
  }
155
258
  if (mode === "select" && "onSelect" in props) {
156
- if (_optionalChain([selected, 'optionalAccess', _5 => _5.value]) === OTHER_VALUE) {
259
+ if (_optionalChain([selected, 'optionalAccess', _7 => _7.value]) === OTHER_VALUE) {
157
260
  setIsCustomMode(true);
158
261
  } else if (selected) {
159
262
  props.onSelect(selected);
160
263
  }
161
264
  } else if (mode === "confirm" && "onConfirm" in props) {
162
- props.onConfirm(_optionalChain([selected, 'optionalAccess', _6 => _6.value]) === "yes");
265
+ props.onConfirm(_optionalChain([selected, 'optionalAccess', _8 => _8.value]) === "yes");
163
266
  }
164
267
  return;
165
268
  }
@@ -191,17 +294,17 @@ function Modal(props) {
191
294
  const index = parseInt(char, 10) - 1;
192
295
  if (index < choices.length) {
193
296
  const selected = choices[index];
194
- if (_optionalChain([selected, 'optionalAccess', _7 => _7.disabled])) {
297
+ if (_optionalChain([selected, 'optionalAccess', _9 => _9.disabled])) {
195
298
  return;
196
299
  }
197
300
  if (mode === "select" && "onSelect" in props) {
198
- if (_optionalChain([selected, 'optionalAccess', _8 => _8.value]) === OTHER_VALUE) {
301
+ if (_optionalChain([selected, 'optionalAccess', _10 => _10.value]) === OTHER_VALUE) {
199
302
  setIsCustomMode(true);
200
303
  } else if (selected) {
201
304
  props.onSelect(selected);
202
305
  }
203
306
  } else if (mode === "confirm" && "onConfirm" in props) {
204
- props.onConfirm(_optionalChain([selected, 'optionalAccess', _9 => _9.value]) === "yes");
307
+ props.onConfirm(_optionalChain([selected, 'optionalAccess', _11 => _11.value]) === "yes");
205
308
  }
206
309
  }
207
310
  return;
@@ -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 = _nullishCoalesce(displayValue[inputCursor], () => ( " "));
319
+ const afterCursor = displayValue.slice(inputCursor + 1);
214
320
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
215
321
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { children: [
216
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "yellow", children: "> " }),
217
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: displayValue || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: placeholderText }) }),
218
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: "\u2588" })
322
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg("warning", "> ") }),
323
+ displayValue ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { children: [
324
+ beforeCursor,
325
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { inverse: true, children: atCursor }),
326
+ afterCursor
327
+ ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { children: [
328
+ theme.fg("muted", placeholderText),
329
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { inverse: true, children: " " })
330
+ ] })
219
331
  ] }),
220
- validationError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { marginTop: 1, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "red", children: validationError }) })
332
+ validationError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { marginTop: 1, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg("error", validationError) }) })
221
333
  ] });
222
334
  }
223
335
  if (mode === "select" && isCustomMode) {
224
336
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { children: [
225
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "yellow", children: [
226
- t("ui.questionYourAnswer"),
227
- ": "
228
- ] }),
337
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg("warning", `${t("ui.questionYourAnswer")}: `) }),
229
338
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: customInput }),
230
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: "\u2588" })
339
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg("muted", "\u2588") })
231
340
  ] });
232
341
  }
233
342
  if (hasNoChoices) {
234
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: t("ui.noOptionsAvailable") }) });
343
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.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__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { flexDirection: "column", children: [
250
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color, children: [
251
- isSelected ? "\u25B8 " : " ",
252
- i + 1,
253
- ". ",
254
- choice.label,
255
- isDisabled ? " (disabled)" : ""
256
- ] }),
257
- choice.description && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
258
- " ",
259
- choice.description
260
- ] })
360
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg(_nullishCoalesce(color, () => ( "text")), `${isSelected ? "\u25B8 " : " "}${checkbox}${i + 1}. ${choice.label}${isDisabled ? " (disabled)" : ""}`) }),
361
+ choice.description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg("muted", ` ${choice.description}`) })
261
362
  ] }, `${choice.value}-${i}`);
262
363
  });
263
364
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
264
- needsScroll && windowStart > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
265
- " ",
266
- "\u2191",
267
- " ",
268
- windowStart,
269
- " more above"
270
- ] }),
365
+ needsScroll && windowStart > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg("muted", ` \u2191 ${windowStart} more above`) }),
271
366
  items,
272
- needsScroll && windowEnd < choices.length && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
273
- " ",
274
- "\u2193",
275
- " ",
276
- choices.length - windowEnd,
277
- " more below"
278
- ] })
367
+ needsScroll && windowEnd < choices.length && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.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__ */ _jsxruntime.jsxs.call(void 0, _ink.Box, { flexDirection: "column", paddingX: 1, children: [
294
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "cyan", children: title }),
386
+ logo && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { flexDirection: "column", children: logo.split("\n").map((line, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: line }, i)) }),
387
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: theme.fg("accent", title) }),
295
388
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: " " }),
296
389
  renderContent(),
297
390
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { children: " " }),
298
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: renderHint() })
391
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.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 = _ink.render.call(void 0,
309
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNPAM4HCcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
404
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWH55BWKcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWTIXHU6cjs.ThemeProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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
+ _chunkYWH55BWKcjs.inkRenderOptions.call(void 0, {
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 = _ink.render.call(void 0,
340
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNPAM4HCcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
444
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWH55BWKcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWTIXHU6cjs.ThemeProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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
+ _chunkYWH55BWKcjs.inkRenderOptions.call(void 0, {
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 = _ink.render.call(void 0,
371
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNPAM4HCcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
482
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWH55BWKcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWTIXHU6cjs.ThemeProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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
+ _chunkYWH55BWKcjs.inkRenderOptions.call(void 0, {
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 = _ink.render.call(void 0,
402
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNNPAM4HCcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
520
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWH55BWKcjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYWTIXHU6cjs.ThemeProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
403
521
  Modal,
404
522
  {
405
523
  mode: "password",
@@ -417,8 +535,13 @@ async function showPassword(options) {
417
535
  unmountAndResolve(instance, null, resolve);
418
536
  }
419
537
  }
420
- ) }),
421
- { exitOnCtrlC: false }
538
+ ) }) }),
539
+ _chunkYWH55BWKcjs.inkRenderOptions.call(void 0, {
540
+ stdin: process.stdin,
541
+ stdout: process.stdout,
542
+ stderr: process.stderr,
543
+ exitOnCtrlC: false
544
+ })
422
545
  );
423
546
  });
424
547
  }
@@ -429,7 +552,26 @@ async function showPassword(options) {
429
552
 
430
553
 
431
554
 
432
- exports.Modal = Modal; exports.showModal = showModal; exports.showConfirm = showConfirm; exports.showInput = showInput; exports.showPassword = showPassword;
555
+
556
+
557
+ exports.prepareModalRender = prepareModalRender; exports.cleanupModalRender = cleanupModalRender; exports.Modal = Modal; exports.showModal = showModal; exports.showConfirm = showConfirm; exports.showInput = showInput; exports.showPassword = showPassword;
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