autohand-cli 0.8.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (551) hide show
  1. package/README.md +173 -74
  2. package/dist/AgentRegistry-EGBDIUAK.cjs +10 -0
  3. package/dist/{AgentRegistry-7LDL5HJH.js → AgentRegistry-XPWSVO3Q.js} +3 -3
  4. package/dist/{AutomodeManager-MWLKGPZK.js → AutomodeManager-APLLPEYJ.js} +32 -18
  5. package/dist/{AutomodeManager-NYIZNODK.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
  6. package/dist/CommunitySkillsCache-2OIUV227.cjs +8 -0
  7. package/dist/CommunitySkillsCache-ZEQWP6YM.js +8 -0
  8. package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
  9. package/dist/{GitHubRegistryFetcher-6JQ5JEDZ.js → GitHubRegistryFetcher-J2BWPXJF.js} +2 -2
  10. package/dist/HookManager-CWLTFKWO.js +7 -0
  11. package/dist/HookManager-TMAJQU4S.cjs +7 -0
  12. package/dist/{ImportWizard-35YBJ4AM.cjs → ImportWizard-MQXEED2U.cjs} +41 -17
  13. package/dist/{ImportWizard-XH7CINCH.js → ImportWizard-QBKQEXDW.js} +35 -11
  14. package/dist/LearnAdvisor-46FG2XIP.js +9 -0
  15. package/dist/LearnAdvisor-XBRDNAGH.cjs +9 -0
  16. package/dist/McpClientManager-BNSKLHIN.cjs +8 -0
  17. package/dist/{McpClientManager-7RM6YT35.js → McpClientManager-SL35BR24.js} +2 -2
  18. package/dist/MemoryManager-34L4YOKA.cjs +8 -0
  19. package/dist/MemoryManager-WJMLPWGU.js +8 -0
  20. package/dist/NVIDIAProvider-2HR737UE.js +14 -0
  21. package/dist/NVIDIAProvider-MVTL62PR.cjs +14 -0
  22. package/dist/PermissionManager-5OOJ7FAT.cjs +11 -0
  23. package/dist/{PermissionManager-ATUV34LQ.js → PermissionManager-KMYILJ4Z.js} +4 -4
  24. package/dist/{ProjectProfiler-ZDWR2ODG.cjs → ProjectProfiler-CDAE7ECW.cjs} +2 -1
  25. package/dist/{ProjectProfiler-UMJJSOCE.js → ProjectProfiler-NZTJDRHD.js} +2 -1
  26. package/dist/ProviderFactory-C3YPXTDD.cjs +11 -0
  27. package/dist/ProviderFactory-HFPRVQ25.js +11 -0
  28. package/dist/SessionManager-PNBTJJTQ.js +10 -0
  29. package/dist/SessionManager-WAPTFMDO.cjs +10 -0
  30. package/dist/SkillsRegistry-4RRD5GMX.js +9 -0
  31. package/dist/SkillsRegistry-7AJP74GJ.cjs +9 -0
  32. package/dist/SubAgent-FDIH3DXB.js +11 -0
  33. package/dist/SubAgent-HVL2ICVZ.cjs +11 -0
  34. package/dist/{SyncApiClient-LVIO4C2S.js → SyncApiClient-LRPFNCKJ.js} +2 -2
  35. package/dist/SyncApiClient-VMBOLQ6H.cjs +11 -0
  36. package/dist/about-BW3PDZUU.js +14 -0
  37. package/dist/about-FCAX37YC.cjs +14 -0
  38. package/dist/acp-EOETGAHC.cjs +1517 -0
  39. package/dist/acp-VHEL7BOW.js +1517 -0
  40. package/dist/actionExecutor-33I47NZS.js +24 -0
  41. package/dist/actionExecutor-4YBMR3YH.cjs +24 -0
  42. package/dist/add-dir-7SS6KSH5.cjs +11 -0
  43. package/dist/add-dir-VFX7QT4E.js +11 -0
  44. package/dist/agent-DMRUFU4M.cjs +116 -0
  45. package/dist/agent-WCJEYQJT.js +116 -0
  46. package/dist/agents/builtin/code-cleaner.md +1 -1
  47. package/dist/agents/builtin/docs-writer.md +1 -1
  48. package/dist/agents/builtin/researcher.md +2 -2
  49. package/dist/agents/builtin/reviewer.md +1 -1
  50. package/dist/agents/builtin/tester.md +1 -1
  51. package/dist/agents/builtin/todo-resolver.md +1 -1
  52. package/dist/agents-CHROO3VU.cjs +17 -0
  53. package/dist/agents-UVDUL65K.js +17 -0
  54. package/dist/agents-new-AUBWSOXP.js +17 -0
  55. package/dist/agents-new-Y562WC47.cjs +17 -0
  56. package/dist/{autoSkill-6TGBTEQD.js → autoSkill-EFMK6WU6.js} +3 -3
  57. package/dist/autoSkill-YOLLFTP2.cjs +20 -0
  58. package/dist/automode-BMYSRM34.js +10 -0
  59. package/dist/automode-DBLKTTKD.cjs +10 -0
  60. package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
  61. package/dist/browserToolBridge-F5N66PE7.js +58 -0
  62. package/dist/{cc-7LEIJ3KF.js → cc-AYEP2CA3.js} +1 -1
  63. package/dist/{cc-Q5MM4AWC.cjs → cc-S2QLQFBR.cjs} +1 -1
  64. package/dist/chrome-ATC4OO5I.cjs +20 -0
  65. package/dist/chrome-NHJ44WUN.js +50 -0
  66. package/dist/chrome-O62WXV7F.js +20 -0
  67. package/dist/chrome-XHJLCO4M.cjs +50 -0
  68. package/dist/chromeSkill-53TH55PM.js +105 -0
  69. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  70. package/dist/{chunk-HOAHWIQ5.cjs → chunk-2CGE7ZV3.cjs} +26 -26
  71. package/dist/chunk-2H5O745H.js +63 -0
  72. package/dist/chunk-2HOLOHVK.js +2219 -0
  73. package/dist/{chunk-3PDTTAKJ.js → chunk-2QL6MNXG.js} +15 -8
  74. package/dist/{chunk-PGRH5Q77.cjs → chunk-2VHB43IX.cjs} +35 -6
  75. package/dist/{chunk-VG34MG2U.js → chunk-37M5UM6I.js} +9 -6
  76. package/dist/{chunk-6HYLHBQG.cjs → chunk-3DDL2E55.cjs} +20 -16
  77. package/dist/chunk-3EDDDZS2.cjs +5 -0
  78. package/dist/{chunk-6OYHF6MF.js → chunk-3GUEUCZK.js} +28 -4
  79. package/dist/{chunk-N254NRHT.cjs → chunk-3HT76LNN.cjs} +9 -2
  80. package/dist/{chunk-DVUHHH3B.cjs → chunk-3KLSNNRW.cjs} +4 -4
  81. package/dist/chunk-3LJJG5YY.cjs +387 -0
  82. package/dist/chunk-3OF56EMA.cjs +197 -0
  83. package/dist/chunk-3PXKRVCW.js +108 -0
  84. package/dist/{chunk-IKGWDOGU.cjs → chunk-3S563FNF.cjs} +160 -79
  85. package/dist/chunk-3UT7R3XV.js +663 -0
  86. package/dist/chunk-4256YRCO.cjs +80 -0
  87. package/dist/chunk-46C73ZKK.cjs +663 -0
  88. package/dist/chunk-46MTALKD.js +44 -0
  89. package/dist/{chunk-AEJH23FO.cjs → chunk-47PHDKNW.cjs} +6 -6
  90. package/dist/chunk-4LMUDS2K.js +124 -0
  91. package/dist/{chunk-HLHTG5ZU.cjs → chunk-5CMYEM3R.cjs} +14 -12
  92. package/dist/{chunk-MBBY4ZIK.js → chunk-5F6ZKSHO.js} +4 -1
  93. package/dist/chunk-5JFTY3VU.js +74 -0
  94. package/dist/chunk-5JTTM5SC.js +59 -0
  95. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  96. package/dist/{chunk-GJH7XMSK.js → chunk-5VHP6HDQ.js} +8 -6
  97. package/dist/{chunk-6ZCULLCA.js → chunk-62RTC3XX.js} +1 -1
  98. package/dist/{chunk-MSED7RH2.cjs → chunk-6GUODJKM.cjs} +112 -41
  99. package/dist/{chunk-47CKWKEX.cjs → chunk-6HH236FV.cjs} +9 -4
  100. package/dist/{chunk-WHE2SWHU.js → chunk-6NVAK6CK.js} +2 -2
  101. package/dist/chunk-6R25D2H5.js +121 -0
  102. package/dist/{chunk-3PCTTUNW.cjs → chunk-6XVVIY54.cjs} +55 -25
  103. package/dist/{chunk-3L53OA4E.cjs → chunk-75EDROHL.cjs} +10 -10
  104. package/dist/{chunk-G4CAKI3V.js → chunk-7HPWMALN.js} +7 -2
  105. package/dist/chunk-7JLT2VNW.cjs +18963 -0
  106. package/dist/chunk-7LWQCE4Y.cjs +987 -0
  107. package/dist/{chunk-OLSBBZW6.cjs → chunk-7MU7LWF3.cjs} +5 -5
  108. package/dist/{chunk-HLQV64Y5.js → chunk-7RFJB75Y.js} +140 -59
  109. package/dist/{chunk-X2MSVKDV.js → chunk-A7HHCIDQ.js} +2 -2
  110. package/dist/{chunk-SKYG33B2.cjs → chunk-AC7DZ6SK.cjs} +3 -3
  111. package/dist/{chunk-XX2ZO7DS.js → chunk-ACDQGA4Z.js} +90 -16
  112. package/dist/{chunk-CZXGCVTR.cjs → chunk-AOKCI722.cjs} +2 -2
  113. package/dist/chunk-ARBEHFCG.js +715 -0
  114. package/dist/{chunk-OOKY3HPZ.js → chunk-AT7OWLY5.js} +50 -9
  115. package/dist/chunk-AU6JAGZJ.cjs +231 -0
  116. package/dist/chunk-AUFNACED.js +18963 -0
  117. package/dist/{chunk-CDBPBM2K.cjs → chunk-AUYSIEVV.cjs} +3 -3
  118. package/dist/chunk-B4HSNOIH.cjs +354 -0
  119. package/dist/{chunk-EGMZDTSL.js → chunk-B5CGDNMR.js} +10 -2
  120. package/dist/{chunk-34M3HWLR.js → chunk-BFQDQRDE.js} +2 -2
  121. package/dist/{chunk-2AA5MFES.js → chunk-BL2UC7HC.js} +8 -5
  122. package/dist/{chunk-LNMYK2F5.cjs → chunk-BQ22N3TX.cjs} +56 -41
  123. package/dist/chunk-BQU3HAE7.js +21 -0
  124. package/dist/chunk-BWF4VDYE.js +3897 -0
  125. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  126. package/dist/{chunk-APIXPPMT.js → chunk-CBFH2J3O.js} +855 -33
  127. package/dist/chunk-CCVMREXI.js +420 -0
  128. package/dist/chunk-CFAWTLSC.js +13 -0
  129. package/dist/{chunk-G27PQQFD.js → chunk-CFFE4VA3.js} +1 -1
  130. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CH2J4PVE.cjs} +212 -70
  131. package/dist/{chunk-7BTSG4ME.cjs → chunk-CHI52KFR.cjs} +855 -33
  132. package/dist/{chunk-DJDE4DTT.cjs → chunk-CWINVFRI.cjs} +25 -19
  133. package/dist/{chunk-HXGBSJL5.cjs → chunk-D2OSPLYC.cjs} +2 -2
  134. package/dist/{chunk-GBHDROGL.js → chunk-D6GZBSOX.js} +16 -4
  135. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  136. package/dist/chunk-DEQVRSV5.cjs +866 -0
  137. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  138. package/dist/{chunk-WM5PAOTQ.cjs → chunk-DIZTWFVR.cjs} +1649 -484
  139. package/dist/{chunk-YZXUDM5X.js → chunk-DLP436GI.js} +204 -62
  140. package/dist/{chunk-OHUZKDGX.js → chunk-DMRXF5DU.js} +3 -3
  141. package/dist/{chunk-U46VYPLR.cjs → chunk-DPSIGY6L.cjs} +9 -9
  142. package/dist/{chunk-DN573ME7.cjs → chunk-DRWDEHE5.cjs} +4 -4
  143. package/dist/{chunk-SEKD5FH3.cjs → chunk-E26KKI46.cjs} +5 -2
  144. package/dist/{chunk-J4Q7XR3G.js → chunk-E46DJH5S.js} +3 -3
  145. package/dist/{chunk-Q7XSCYND.cjs → chunk-E6GFD7VR.cjs} +49 -26
  146. package/dist/chunk-ES2HJQ4N.js +37 -0
  147. package/dist/chunk-EZJHLOWP.js +80 -0
  148. package/dist/chunk-FFBDRUO5.cjs +59 -0
  149. package/dist/{chunk-AYSFIUFW.js → chunk-FGT6KK6T.js} +38 -15
  150. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  151. package/dist/{chunk-DSPQEHDT.js → chunk-FQAVGSPW.js} +2 -2
  152. package/dist/chunk-FQVG6ZHF.js +197 -0
  153. package/dist/chunk-GBMDFWJX.cjs +152 -0
  154. package/dist/{chunk-DRE2RXBZ.js → chunk-GGLKUENP.js} +1605 -440
  155. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  156. package/dist/{chunk-MYISNQH4.js → chunk-GWO66KBI.js} +1 -1
  157. package/dist/chunk-GWY26SUD.cjs +63 -0
  158. package/dist/{chunk-YGN4CQIP.js → chunk-GZ6DV2UG.js} +1 -1
  159. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  160. package/dist/chunk-HDK2EHVH.cjs +570 -0
  161. package/dist/chunk-HJIXWGQZ.js +139 -0
  162. package/dist/{chunk-6RF7UKUS.js → chunk-HKYZSUQ5.js} +48 -47
  163. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  164. package/dist/{chunk-HTLINWX6.cjs → chunk-HQWQZML5.cjs} +16 -13
  165. package/dist/{chunk-DVZOENQ7.cjs → chunk-HS4USDND.cjs} +9 -4
  166. package/dist/chunk-HSCUPEA4.cjs +3897 -0
  167. package/dist/{chunk-JCLYQ2JC.js → chunk-HXJEGMGB.js} +12 -6
  168. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  169. package/dist/{chunk-SCXX4LW5.js → chunk-I24CWKKK.js} +15 -8
  170. package/dist/chunk-IAGCRVJ3.js +355 -0
  171. package/dist/chunk-IEXKKKOF.cjs +92 -0
  172. package/dist/{chunk-5IXII4HX.cjs → chunk-IGMPWJ2I.cjs} +19 -12
  173. package/dist/chunk-IKUMVBCW.cjs +33 -0
  174. package/dist/{chunk-XTB6VJVQ.cjs → chunk-J2K57QM7.cjs} +6 -6
  175. package/dist/{chunk-O4IF4NJT.cjs → chunk-J5ADZN6V.cjs} +57 -56
  176. package/dist/chunk-J5HE6CUM.cjs +124 -0
  177. package/dist/{chunk-JS7IPR7P.js → chunk-JAQO6XDB.js} +31 -2
  178. package/dist/chunk-JIMSII7R.js +987 -0
  179. package/dist/chunk-JJ4KA7HK.cjs +2219 -0
  180. package/dist/chunk-JMN3GZU6.js +570 -0
  181. package/dist/{chunk-X5VSP65C.cjs → chunk-JP3YHTQ2.cjs} +4 -4
  182. package/dist/{chunk-SKV2F3NM.js → chunk-JYKPWK5O.js} +1 -1
  183. package/dist/{chunk-NNPAM4HC.cjs → chunk-KNTUI4TZ.cjs} +12 -6
  184. package/dist/{chunk-HIVRCQS2.js → chunk-L4F7SUYL.js} +56 -25
  185. package/dist/{chunk-C5IJIM2V.cjs → chunk-LDJQ5QHG.cjs} +68 -37
  186. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  187. package/dist/chunk-LJD7KR3L.cjs +44 -0
  188. package/dist/chunk-LN7D3EJZ.js +387 -0
  189. package/dist/{chunk-643VRA5S.cjs → chunk-LQBONA55.cjs} +32 -8
  190. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  191. package/dist/chunk-M4KNC5BQ.js +78 -0
  192. package/dist/chunk-MO4KP6XS.cjs +229 -0
  193. package/dist/{chunk-BVKXEQVG.cjs → chunk-MOJ7ADW4.cjs} +22 -10
  194. package/dist/chunk-MPULXVC4.cjs +715 -0
  195. package/dist/{chunk-X5YJ34FZ.cjs → chunk-MQESBFBZ.cjs} +46 -23
  196. package/dist/chunk-MUNUUFU7.cjs +21 -0
  197. package/dist/{chunk-X3WS5LDG.js → chunk-MX75JYIY.js} +7 -5
  198. package/dist/chunk-MXVIDIC6.cjs +139 -0
  199. package/dist/{chunk-3K2ESU53.cjs → chunk-N6O3XUZ2.cjs} +2 -2
  200. package/dist/{chunk-IVM5F2AE.js → chunk-NBGOIFKP.js} +265 -18
  201. package/dist/{chunk-SLQAYV3W.js → chunk-NMQ47RCG.js} +8 -2
  202. package/dist/{chunk-JYTDYJVW.js → chunk-O64I2GYI.js} +1 -1
  203. package/dist/{chunk-IFFXSTOM.cjs → chunk-O6TQP7U7.cjs} +3 -3
  204. package/dist/{chunk-AYS2ASM7.js → chunk-OHWMWKJQ.js} +1 -1
  205. package/dist/{chunk-N23UAW4I.js → chunk-OM24WXEE.js} +7 -2
  206. package/dist/{chunk-MAKMSQMQ.cjs → chunk-OPNI6O7F.cjs} +8 -6
  207. package/dist/chunk-OR67YXQK.cjs +13 -0
  208. package/dist/{chunk-QOXPOR5D.js → chunk-OV3PVUYN.js} +115 -44
  209. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  210. package/dist/chunk-PCM3N3CL.cjs +37 -0
  211. package/dist/{chunk-A4IJHHV7.cjs → chunk-PDHT7LQS.cjs} +52 -11
  212. package/dist/{chunk-LA7H35XM.cjs → chunk-PHJO5YAL.cjs} +9 -9
  213. package/dist/{chunk-KPELYZ6L.js → chunk-PQLKJCIE.js} +2 -2
  214. package/dist/chunk-PUD76XQT.cjs +78 -0
  215. package/dist/chunk-Q2IL4DDI.cjs +355 -0
  216. package/dist/{chunk-WPVWQSL7.cjs → chunk-Q6AC3PHY.cjs} +16 -13
  217. package/dist/{chunk-XRZEUWKF.js → chunk-QCHIDZBA.js} +1 -1
  218. package/dist/{chunk-IQ5RXU6O.js → chunk-QEGOB6QV.js} +1 -1
  219. package/dist/{chunk-JSBRDJBE.js → chunk-QGM4M3NI.js} +8 -1
  220. package/dist/chunk-QKP772OZ.js +4291 -0
  221. package/dist/chunk-QQ7PANOP.js +59 -0
  222. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  223. package/dist/chunk-RAKO7UN7.js +114 -0
  224. package/dist/chunk-RBHANOYY.js +33 -0
  225. package/dist/chunk-RBZ7AFX7.cjs +29 -0
  226. package/dist/{chunk-TXSDBGKX.cjs → chunk-REMGR23V.cjs} +46 -49
  227. package/dist/chunk-ROLA6EFO.cjs +85 -0
  228. package/dist/{chunk-TBEGGJNC.cjs → chunk-SOLBYSLY.cjs} +33 -16
  229. package/dist/{chunk-FKSDEWDH.js → chunk-SWCQM52V.js} +68 -25
  230. package/dist/{chunk-H5SWOLG6.js → chunk-TBOLJDUG.js} +39 -24
  231. package/dist/chunk-TH26BQJG.js +101 -0
  232. package/dist/{chunk-245KJE5Y.cjs → chunk-TJNBASFD.cjs} +14 -6
  233. package/dist/chunk-TKKN34TV.js +229 -0
  234. package/dist/chunk-TQ33WBY5.cjs +74 -0
  235. package/dist/{chunk-EGFT4PGW.js → chunk-TWQDAUZU.js} +5 -2
  236. package/dist/{chunk-OGV4WJ5L.cjs → chunk-TXPSTCG7.cjs} +74 -59
  237. package/dist/{chunk-CAMZTXV6.js → chunk-U4C3HW6P.js} +67 -52
  238. package/dist/{chunk-5P2NXKP3.js → chunk-UEIXJG45.js} +104 -76
  239. package/dist/{chunk-22D2CNTP.cjs → chunk-UGFVM77J.cjs} +5 -2
  240. package/dist/chunk-UOQECODR.js +34 -0
  241. package/dist/chunk-UR27UDTB.js +354 -0
  242. package/dist/chunk-UWFG2R2I.cjs +420 -0
  243. package/dist/{chunk-Y72HH2TF.cjs → chunk-UXLW45ZE.cjs} +102 -28
  244. package/dist/{chunk-FPHU2ES6.cjs → chunk-VBOFPU5M.cjs} +6 -0
  245. package/dist/{chunk-JX3DFKBI.js → chunk-VDWJMWDF.js} +54 -24
  246. package/dist/{chunk-LENHP55G.cjs → chunk-VGEV44V2.cjs} +1076 -158
  247. package/dist/{chunk-33RSHBDH.js → chunk-VKBIE6I6.js} +38 -7
  248. package/dist/{chunk-CWMZKFTT.js → chunk-VRMZO6TB.js} +31 -8
  249. package/dist/chunk-VUGOOGHB.js +400 -0
  250. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  251. package/dist/chunk-WGLBC5AY.cjs +59 -0
  252. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  253. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  254. package/dist/chunk-WRTXCQ3V.cjs +4291 -0
  255. package/dist/chunk-WTB7AFL6.cjs +101 -0
  256. package/dist/{chunk-NDMIPTV4.js → chunk-WZV6UVPY.js} +8 -3
  257. package/dist/chunk-XF2WIKHR.cjs +34 -0
  258. package/dist/{chunk-L3WAH3EM.cjs → chunk-XGMI6IYB.cjs} +46 -15
  259. package/dist/{chunk-FW774QXH.js → chunk-XIVFAD2L.js} +1048 -130
  260. package/dist/chunk-XV2HXRHX.js +85 -0
  261. package/dist/{chunk-72FKPBT5.js → chunk-Y3M2DABP.js} +16 -12
  262. package/dist/{chunk-QNGEW5TC.js → chunk-YV63VW4K.js} +1 -1
  263. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  264. package/dist/{chunk-RD5XAJR2.cjs → chunk-YWTIXHU6.cjs} +266 -19
  265. package/dist/chunk-YZWE7XSM.js +5 -0
  266. package/dist/{chunk-I5IW3T2Y.js → chunk-Z3XSSF7B.js} +32 -15
  267. package/dist/{chunk-6UJMCWRY.js → chunk-Z4LIPMPM.js} +6 -0
  268. package/dist/chunk-ZASDSY7P.cjs +114 -0
  269. package/dist/{chunk-R33VKSH5.cjs → chunk-ZHJ7JGME.cjs} +11 -11
  270. package/dist/chunk-ZPD2AO3U.js +866 -0
  271. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  272. package/dist/chunk-ZR46OJNZ.js +152 -0
  273. package/dist/{chunk-G3V4SFET.cjs → chunk-ZZ63NW7A.cjs} +78 -35
  274. package/dist/clear-33TWQ2ES.cjs +12 -0
  275. package/dist/clear-OFLFQ3MR.js +12 -0
  276. package/dist/{communityInstaller-6KCFN7YZ.js → communityInstaller-COB2KTOW.js} +9 -6
  277. package/dist/communityInstaller-TWMGPSYM.cjs +22 -0
  278. package/dist/completion-IIZMHXYP.cjs +17 -0
  279. package/dist/completion-PT4VM2H2.js +17 -0
  280. package/dist/config-KL6WU7R2.cjs +20 -0
  281. package/dist/{config-ZN66VXPS.js → config-R4O7GBTY.js} +7 -5
  282. package/dist/{constants-UFM5B232.js → constants-HVCHVQAF.js} +2 -2
  283. package/dist/constants-RLMJ5D5P.cjs +21 -0
  284. package/dist/{defaultHooks-RCXPHF4M.cjs → defaultHooks-2V2CQL63.cjs} +26 -11
  285. package/dist/{defaultHooks-RDRMER3Z.js → defaultHooks-TMHDU3FS.js} +26 -11
  286. package/dist/export-3PK3VFCE.js +15 -0
  287. package/dist/export-WLGNWEMJ.cjs +15 -0
  288. package/dist/{extractSessionMemories-V7K42ZHW.js → extractSessionMemories-A2JX5WJ2.js} +1 -1
  289. package/dist/{extractSessionMemories-SDW2MVBQ.cjs → extractSessionMemories-XL3MS37F.cjs} +1 -1
  290. package/dist/feedback-G635NCLJ.js +18 -0
  291. package/dist/feedback-LLMK3TZH.cjs +18 -0
  292. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  293. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  294. package/dist/filesystem-L6DQKGWK.js +11 -0
  295. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  296. package/dist/{formatters-6K7QVWQL.cjs → formatters-53XTCNGQ.cjs} +1 -1
  297. package/dist/{formatters-DQHO5I36.js → formatters-T6KV4BPP.js} +1 -1
  298. package/dist/help-BAXLP2M2.cjs +12 -0
  299. package/dist/{help-2BLR7L43.js → help-X3OAZ3CY.js} +3 -3
  300. package/dist/history-6HOJSEMT.cjs +14 -0
  301. package/dist/{history-5FZ3M2AK.js → history-YKFPHBJN.js} +3 -3
  302. package/dist/hooks-7TA4PIIB.js +18 -0
  303. package/dist/hooks-XVFU67T2.cjs +18 -0
  304. package/dist/{i18n-K7QOWIBH.js → i18n-2KBUU7XL.js} +2 -2
  305. package/dist/i18n-MUJMKTFM.cjs +33 -0
  306. package/dist/ide-CCQ33PGC.cjs +15 -0
  307. package/dist/ide-VLVFBZ5F.js +15 -0
  308. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  309. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  310. package/dist/{import-UXM3VK7B.js → import-4CHYLS4K.js} +4 -4
  311. package/dist/{import-QEME3E4T.cjs → import-I7T4ZHYL.cjs} +4 -4
  312. package/dist/import-J46F54JY.cjs +10 -0
  313. package/dist/import-JWPYKXCZ.js +10 -0
  314. package/dist/index.cjs +747 -22356
  315. package/dist/index.d.cts +93 -0
  316. package/dist/index.d.ts +93 -0
  317. package/dist/index.js +786 -22395
  318. package/dist/init-262MWZV4.js +10 -0
  319. package/dist/init-EE5Y7RBL.cjs +10 -0
  320. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  321. package/dist/inkMode-WBNFOSAT.js +7 -0
  322. package/dist/inputPrompt-IIFKCX5Q.cjs +90 -0
  323. package/dist/inputPrompt-YGBHDUEP.js +90 -0
  324. package/dist/language-CVLPB7OV.js +21 -0
  325. package/dist/language-ZTWFHUSV.cjs +21 -0
  326. package/dist/learn-PON7I5QS.js +23 -0
  327. package/dist/learn-XLRSVNA3.cjs +23 -0
  328. package/dist/{lint-D5UOJWIK.cjs → lint-4NDGCSCL.cjs} +1 -1
  329. package/dist/{lint-NJPZWVN2.js → lint-FZ7ZJUB3.js} +1 -1
  330. package/dist/login-223QTGBG.cjs +26 -0
  331. package/dist/login-6IKTBUBY.js +26 -0
  332. package/dist/logout-RN2AG6SI.js +23 -0
  333. package/dist/logout-U3M4FFX7.cjs +23 -0
  334. package/dist/mcp-5O6PUL4G.js +20 -0
  335. package/dist/mcp-NUQ76QQB.cjs +20 -0
  336. package/dist/{mcp-install-VESN42PI.js → mcp-install-6XWXLFVY.js} +18 -11
  337. package/dist/{mcp-install-G27HSS3Z.cjs → mcp-install-P6DHES7V.cjs} +22 -15
  338. package/dist/memory-CYMDQ2YC.cjs +10 -0
  339. package/dist/memory-Q54CESNM.js +10 -0
  340. package/dist/{message-ZJ5AYAMT.cjs → message-4OKO775J.cjs} +1 -1
  341. package/dist/{message-JUBOK2VU.js → message-X3LOAAM7.js} +1 -1
  342. package/dist/model-6AJ77PJG.js +10 -0
  343. package/dist/model-IDRCKDML.cjs +10 -0
  344. package/dist/new-7LEWOUF2.cjs +12 -0
  345. package/dist/new-ZXHEWC2S.js +12 -0
  346. package/dist/onboarding-FXX7YHSJ.cjs +35 -0
  347. package/dist/onboarding-JYNMK6NI.js +35 -0
  348. package/dist/{patch-MOD7QC3D.cjs → patch-DJ2GPFST.cjs} +1 -1
  349. package/dist/{patch-5F6VBIT3.js → patch-NIJWIRHS.js} +1 -1
  350. package/dist/permissions-YBNSANIA.cjs +10 -0
  351. package/dist/permissions-YHJMVA6L.js +10 -0
  352. package/dist/plan-XEJMOT55.cjs +13 -0
  353. package/dist/plan-YYUAXPTL.js +13 -0
  354. package/dist/pr-review-CW6J7P62.cjs +9 -0
  355. package/dist/pr-review-YZSBQVT2.js +9 -0
  356. package/dist/quit-B43SJ6E4.cjs +10 -0
  357. package/dist/quit-GWTNHQSP.js +10 -0
  358. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  359. package/dist/rawMode-GFNLXQPU.js +7 -0
  360. package/dist/{registry-KWZGYJC2.js → registry-34GL6BNJ.js} +30 -45
  361. package/dist/{registry-YN4FQPOO.cjs → registry-V24W7YK6.cjs} +66 -81
  362. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  363. package/dist/repeat-RALE6AUO.js +17 -0
  364. package/dist/resume-DYVOQN5L.cjs +16 -0
  365. package/dist/resume-M25UQKOX.js +16 -0
  366. package/dist/review-QHP2KP4Q.js +9 -0
  367. package/dist/review-UWHWQHCB.cjs +9 -0
  368. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  369. package/dist/ripgrep-VHJQQ55W.js +9 -0
  370. package/dist/rpc-NPS3PU4O.cjs +3730 -0
  371. package/dist/rpc-S3DGW6KV.js +3730 -0
  372. package/dist/search-CPX4PWHP.js +20 -0
  373. package/dist/search-VUF3M4N3.cjs +20 -0
  374. package/dist/{session-BSU2L5UI.cjs → session-LXKC4X5Q.cjs} +1 -1
  375. package/dist/{session-SZMRN5KG.js → session-NMMO4QOL.js} +1 -1
  376. package/dist/sessions-IYAXMK23.js +10 -0
  377. package/dist/sessions-JODKER5D.cjs +10 -0
  378. package/dist/settings-55BNW6BF.js +33 -0
  379. package/dist/settings-BKTS7OMC.cjs +33 -0
  380. package/dist/setup-IRC5HQG2.js +29 -0
  381. package/dist/setup-MMQ7TWOP.cjs +29 -0
  382. package/dist/share-6JRQECAH.cjs +17 -0
  383. package/dist/share-YM5MJKMO.js +17 -0
  384. package/dist/{skills-FYY6F2WV.cjs → skills-GGMZOVIE.cjs} +14 -11
  385. package/dist/skills-LWSOKOSH.cjs +29 -0
  386. package/dist/{skills-6OL4OSGA.js → skills-MVIZNHT4.js} +13 -10
  387. package/dist/skills-VWOMV3CR.js +29 -0
  388. package/dist/{skills-install-6CSWC24P.js → skills-install-QBA5RCV6.js} +22 -71
  389. package/dist/{skills-install-O3LZ2ETC.cjs → skills-install-VTAMCNNY.cjs} +35 -84
  390. package/dist/skills-new-GPL46YV2.js +18 -0
  391. package/dist/skills-new-L5BEZN5V.cjs +18 -0
  392. package/dist/slashCommands-FBPCIWM5.cjs +95 -0
  393. package/dist/slashCommands-FCWY5DXW.js +95 -0
  394. package/dist/status-3B5SDZPL.js +17 -0
  395. package/dist/status-TTGRF6NC.cjs +17 -0
  396. package/dist/summarizer-DGPHE5IQ.js +17 -0
  397. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  398. package/dist/sync-77CXVVTK.cjs +21 -0
  399. package/dist/{sync-KWX67OUN.js → sync-7BILIQHP.js} +4 -4
  400. package/dist/sync-7OKF6636.js +21 -0
  401. package/dist/sync-EH4K5U3N.cjs +40 -0
  402. package/dist/{tasks-5FPBIFLC.js → tasks-R5MBGAQ6.js} +1 -1
  403. package/dist/{tasks-TXGKGNH6.cjs → tasks-V4WB3MFR.cjs} +1 -1
  404. package/dist/{team-5YXP3JGR.js → team-JESCHGWB.js} +1 -1
  405. package/dist/{team-IIWEZKNR.cjs → team-VQQKWGZB.cjs} +1 -1
  406. package/dist/{teammate-L6EZQ3I2.js → teammate-GZQSCIMS.js} +29 -8
  407. package/dist/{teammate-2KMKJXAM.cjs → teammate-J6PHGL23.cjs} +30 -9
  408. package/dist/theme-64BYGJ57.cjs +21 -0
  409. package/dist/theme-YJE6HEON.js +21 -0
  410. package/dist/tools-3PPTTKFV.js +9 -0
  411. package/dist/tools-THIQA7WC.cjs +9 -0
  412. package/dist/ui/questionModal.cjs +9 -6
  413. package/dist/ui/questionModal.js +8 -5
  414. package/dist/undo-PRTEGL2J.cjs +10 -0
  415. package/dist/undo-SZEHLX7X.js +10 -0
  416. package/dist/{update-TVAJMMBC.js → update-53WMKYVS.js} +1 -1
  417. package/dist/{update-Z6BIIQDC.cjs → update-NV6QRYY7.cjs} +1 -1
  418. package/dist/web-3BA2WV37.cjs +37 -0
  419. package/dist/web-6FYGBX5K.js +37 -0
  420. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  421. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  422. package/dist/yolo-GF2YD7ZI.js +9 -0
  423. package/dist/yolo-OGDA7HNC.cjs +9 -0
  424. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  425. package/dist/yoloMode-4JOOSU26.js +17 -0
  426. package/package.json +46 -49
  427. package/dist/AgentRegistry-NQCLWABO.cjs +0 -10
  428. package/dist/CommunitySkillsCache-6QPRMTJO.js +0 -8
  429. package/dist/CommunitySkillsCache-GTQMOCCO.cjs +0 -8
  430. package/dist/GitHubRegistryFetcher-S7QFUEKV.cjs +0 -7
  431. package/dist/HookManager-Q2KYMCP4.cjs +0 -7
  432. package/dist/HookManager-TTP4Y6DC.js +0 -7
  433. package/dist/LearnAdvisor-A4Q5PPBI.js +0 -9
  434. package/dist/LearnAdvisor-GASQD7HT.cjs +0 -9
  435. package/dist/McpClientManager-RKD7C6OY.cjs +0 -8
  436. package/dist/MemoryManager-GUNLRP5S.js +0 -8
  437. package/dist/MemoryManager-TNSGKDKX.cjs +0 -8
  438. package/dist/PermissionManager-KMN53FJP.cjs +0 -11
  439. package/dist/ProviderFactory-MR5B23QJ.js +0 -9
  440. package/dist/ProviderFactory-VFGCJJX6.cjs +0 -9
  441. package/dist/SessionManager-FEUAU3ZJ.cjs +0 -10
  442. package/dist/SessionManager-IKWAK2PI.js +0 -10
  443. package/dist/SkillsRegistry-KPQFTRIT.cjs +0 -9
  444. package/dist/SkillsRegistry-XJSKPDF2.js +0 -9
  445. package/dist/SubAgent-NYH6GWQ3.js +0 -11
  446. package/dist/SubAgent-PZKBDUBA.cjs +0 -11
  447. package/dist/SyncApiClient-ZNYMT36M.cjs +0 -11
  448. package/dist/about-HHTF2YFL.js +0 -12
  449. package/dist/about-JGRVNNQC.cjs +0 -12
  450. package/dist/actionExecutor-U6IBN2TU.cjs +0 -19
  451. package/dist/actionExecutor-XT5FW3W6.js +0 -19
  452. package/dist/add-dir-247K3XRY.js +0 -10
  453. package/dist/add-dir-GS4DXKKH.cjs +0 -10
  454. package/dist/agents-R6ZEFTVR.cjs +0 -12
  455. package/dist/agents-WJPQWQF2.js +0 -12
  456. package/dist/agents-new-HKVEIBDJ.js +0 -14
  457. package/dist/agents-new-X6GTHIO6.cjs +0 -14
  458. package/dist/autoSkill-H4T6VVDA.cjs +0 -20
  459. package/dist/automode-BC6NVECO.js +0 -10
  460. package/dist/automode-WN2RSOGW.cjs +0 -10
  461. package/dist/chunk-33A755XB.cjs +0 -168
  462. package/dist/chunk-3OTU3RS3.cjs +0 -1607
  463. package/dist/chunk-4PKF7WPD.js +0 -100
  464. package/dist/chunk-ALYU6VTM.js +0 -105
  465. package/dist/chunk-AS6RTLN7.cjs +0 -203
  466. package/dist/chunk-BWN2CLLM.cjs +0 -298
  467. package/dist/chunk-HQ7YZKXE.js +0 -168
  468. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  469. package/dist/chunk-J6QET7EF.cjs +0 -454
  470. package/dist/chunk-LWUJFGOZ.js +0 -115
  471. package/dist/chunk-P47WPOXN.js +0 -298
  472. package/dist/chunk-PRRCJFU3.cjs +0 -85
  473. package/dist/chunk-RO6WYEWH.js +0 -454
  474. package/dist/chunk-SYVYLZZF.cjs +0 -24
  475. package/dist/chunk-T73IDKDF.js +0 -111
  476. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  477. package/dist/chunk-ZQE72E6W.cjs +0 -100
  478. package/dist/chunk-ZVY2XD6T.js +0 -1607
  479. package/dist/clear-UO4MNWZW.cjs +0 -12
  480. package/dist/clear-ZJ5NYP6E.js +0 -12
  481. package/dist/communityInstaller-PVSOFDZD.cjs +0 -19
  482. package/dist/completion-MMF2PN2H.js +0 -14
  483. package/dist/completion-UI5WKHXI.cjs +0 -14
  484. package/dist/config-E7RINK4R.cjs +0 -18
  485. package/dist/constants-6CPCJ3DY.cjs +0 -21
  486. package/dist/export-N4XIVDSL.cjs +0 -12
  487. package/dist/export-W22L4D5C.js +0 -12
  488. package/dist/feedback-DR6ADSNE.cjs +0 -15
  489. package/dist/feedback-FEEAP4QW.js +0 -15
  490. package/dist/filesystem-3SGCW2BF.js +0 -10
  491. package/dist/filesystem-MCFXJQ6R.cjs +0 -10
  492. package/dist/help-AQHGTS7P.cjs +0 -12
  493. package/dist/history-NIUDRMKA.cjs +0 -14
  494. package/dist/hooks-2EY4IPKV.js +0 -13
  495. package/dist/hooks-LJVORRIG.cjs +0 -13
  496. package/dist/i18n-ARDG2SMC.cjs +0 -33
  497. package/dist/ide-GFW6IJHD.js +0 -12
  498. package/dist/ide-N2ZNSSB3.cjs +0 -12
  499. package/dist/import-DFVN3KNZ.js +0 -10
  500. package/dist/import-ZS6DPGU5.cjs +0 -10
  501. package/dist/init-PY75HA3S.cjs +0 -10
  502. package/dist/init-QNMWLAVY.js +0 -10
  503. package/dist/language-5UE4G2BT.cjs +0 -18
  504. package/dist/language-UXMHEZUJ.js +0 -18
  505. package/dist/learn-HJ3FLNZC.cjs +0 -20
  506. package/dist/learn-MVYS3RU5.js +0 -20
  507. package/dist/localProjectPermissions-N77HA3XK.js +0 -18
  508. package/dist/localProjectPermissions-UFSMNTBJ.cjs +0 -18
  509. package/dist/login-DSE7H63A.js +0 -20
  510. package/dist/login-V3MEWPKN.cjs +0 -20
  511. package/dist/logout-BMVCLKKW.js +0 -18
  512. package/dist/logout-XEG7FHOZ.cjs +0 -18
  513. package/dist/mcp-PYUR4PHO.js +0 -18
  514. package/dist/mcp-SG6JFLGC.cjs +0 -18
  515. package/dist/memory-4ZMMEZ2Z.js +0 -10
  516. package/dist/memory-QSGMVVGH.cjs +0 -10
  517. package/dist/model-NANLBZ4Z.cjs +0 -10
  518. package/dist/model-ZXNV4AF7.js +0 -10
  519. package/dist/new-5QJY5JP2.js +0 -12
  520. package/dist/new-PMMG55UX.cjs +0 -12
  521. package/dist/permissions-LECTCJ4H.cjs +0 -13
  522. package/dist/permissions-VP5VGIBL.js +0 -13
  523. package/dist/plan-G5CEKJI4.js +0 -11
  524. package/dist/plan-QKOHE3LH.cjs +0 -11
  525. package/dist/quit-BKOOPHU5.cjs +0 -10
  526. package/dist/quit-FVFNYACP.js +0 -10
  527. package/dist/resume-EXFQSQPH.js +0 -13
  528. package/dist/resume-PP2IQM5S.cjs +0 -13
  529. package/dist/search-C56FBN67.cjs +0 -17
  530. package/dist/search-XGZDYBF4.js +0 -17
  531. package/dist/sessions-54KI3F2Q.js +0 -10
  532. package/dist/sessions-DDTSPNVW.cjs +0 -10
  533. package/dist/settings-BDO37TTO.cjs +0 -30
  534. package/dist/settings-FHRDFPLK.js +0 -30
  535. package/dist/share-IERCTBGN.cjs +0 -14
  536. package/dist/share-TGROUE6R.js +0 -14
  537. package/dist/skills-OM4IGBAA.cjs +0 -26
  538. package/dist/skills-S3GRN323.js +0 -26
  539. package/dist/skills-new-ALD2PTHN.js +0 -15
  540. package/dist/skills-new-PWLKK7GW.cjs +0 -15
  541. package/dist/slashCommands-L4ZD33LJ.js +0 -75
  542. package/dist/slashCommands-YY2VUUDF.cjs +0 -75
  543. package/dist/status-3PC5XWSS.cjs +0 -11
  544. package/dist/status-KCLVOYPD.js +0 -11
  545. package/dist/sync-6SDWG5RK.js +0 -18
  546. package/dist/sync-7JMZVEQD.cjs +0 -40
  547. package/dist/sync-WHURZL3U.cjs +0 -18
  548. package/dist/theme-BE5A4FPN.cjs +0 -18
  549. package/dist/theme-YMFCQP7J.js +0 -18
  550. package/dist/undo-KZHUUZTD.cjs +0 -10
  551. package/dist/undo-NEIEHQVX.js +0 -10
@@ -1,13 +1,33 @@
1
1
  import {
2
2
  I18nProvider,
3
+ inkRenderOptions,
3
4
  useTranslation
4
- } from "./chunk-SLQAYV3W.js";
5
+ } from "./chunk-NMQ47RCG.js";
6
+ import {
7
+ disableBracketedPaste,
8
+ enableBracketedPaste
9
+ } from "./chunk-5JFTY3VU.js";
10
+ import {
11
+ ThemeProvider,
12
+ useTheme
13
+ } from "./chunk-NBGOIFKP.js";
5
14
 
6
15
  // src/ui/ink/components/Modal.tsx
7
16
  import { useState, useMemo, useCallback } from "react";
8
17
  import { Box, Text, useInput, render } from "ink";
18
+
19
+ // src/ui/resetScrollRegion.ts
20
+ function resetScrollRegion() {
21
+ if (process.stdout.isTTY) {
22
+ process.stdout.write("\x1B[r");
23
+ }
24
+ }
25
+
26
+ // src/ui/ink/components/Modal.tsx
9
27
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
28
  var OTHER_VALUE = "__other__";
29
+ var ENTER_ALTERNATE_SCREEN = "\x1B[?1049h\x1B[2J\x1B[H";
30
+ var EXIT_ALTERNATE_SCREEN = "\x1B[?1049l";
11
31
  function resolveInitialCursor(mode, optionsLength, initialIndex, defaultValue) {
12
32
  if (mode === "confirm") {
13
33
  return defaultValue === false ? 1 : 0;
@@ -17,13 +37,42 @@ function resolveInitialCursor(mode, optionsLength, initialIndex, defaultValue) {
17
37
  }
18
38
  return Math.max(0, Math.min(optionsLength - 1, Math.floor(initialIndex)));
19
39
  }
40
+ function isModalCancelInput(char, key) {
41
+ if (key.escape) {
42
+ return true;
43
+ }
44
+ if (char === "\x1B" || char === "\x1B") {
45
+ return true;
46
+ }
47
+ if (char === "c" && key.ctrl) {
48
+ return true;
49
+ }
50
+ return /^\x1b\[27(?:;\d+)?[u~]$/.test(char);
51
+ }
20
52
  function unmountAndResolve(instance, value, resolve) {
21
- instance.unmount();
22
- process.nextTick(() => resolve(value));
53
+ void (async () => {
54
+ instance.unmount();
55
+ try {
56
+ await instance.waitUntilExit();
57
+ } finally {
58
+ cleanupModalRender(process.stdout);
59
+ resolve(value);
60
+ }
61
+ })();
62
+ }
63
+ function prepareModalRender(output = process.stdout) {
64
+ disableBracketedPaste(output);
65
+ resetScrollRegion();
66
+ output.write(ENTER_ALTERNATE_SCREEN);
67
+ }
68
+ function cleanupModalRender(output = process.stdout) {
69
+ output.write(EXIT_ALTERNATE_SCREEN);
70
+ enableBracketedPaste(output);
23
71
  }
24
72
  function Modal(props) {
25
73
  const { t } = useTranslation();
26
- const { title, onCancel } = props;
74
+ const { theme } = useTheme();
75
+ const { title, logo, onCancel } = props;
27
76
  const mode = "mode" in props ? props.mode : "select";
28
77
  const selectOptionCount = mode === "select" && "options" in props ? props.options.length + ("allowCustomInput" in props && props.allowCustomInput ? 1 : 0) : 0;
29
78
  const confirmDefaultValue = mode === "confirm" && typeof props.defaultValue === "boolean" ? props.defaultValue : void 0;
@@ -47,12 +96,25 @@ function Modal(props) {
47
96
  });
48
97
  const [customInput, setCustomInput] = useState("");
49
98
  const [isCustomMode, setIsCustomMode] = useState(false);
99
+ const isMultiSelect = mode === "select" && "multiSelect" in props && props.multiSelect;
100
+ const [checkedSet, setCheckedSet] = useState(() => {
101
+ if (!isMultiSelect || !("options" in props)) return /* @__PURE__ */ new Set();
102
+ return new Set(
103
+ props.options.filter((o) => o.checked).map((o) => o.value)
104
+ );
105
+ });
50
106
  const [inputValue, setInputValue] = useState(() => {
51
107
  if (mode === "input" && "defaultValue" in props && typeof props.defaultValue === "string") {
52
108
  return props.defaultValue;
53
109
  }
54
110
  return "";
55
111
  });
112
+ const [inputCursor, setInputCursor] = useState(() => {
113
+ if (mode === "input" && "defaultValue" in props && typeof props.defaultValue === "string") {
114
+ return props.defaultValue.length;
115
+ }
116
+ return 0;
117
+ });
56
118
  const [validationError, setValidationError] = useState(null);
57
119
  const choices = useMemo(() => {
58
120
  if (mode === "select" && "options" in props) {
@@ -92,7 +154,7 @@ function Modal(props) {
92
154
  [choices]
93
155
  );
94
156
  useInput((char, key) => {
95
- if (key.escape) {
157
+ if (isModalCancelInput(char, key)) {
96
158
  if (mode === "select" && isCustomMode) {
97
159
  setIsCustomMode(false);
98
160
  setCustomInput("");
@@ -117,13 +179,37 @@ function Modal(props) {
117
179
  }
118
180
  return;
119
181
  }
120
- if (key.backspace || key.delete) {
121
- setInputValue((prev) => prev.slice(0, -1));
122
- setValidationError(null);
182
+ if (key.leftArrow) {
183
+ setInputCursor((prev) => Math.max(0, prev - 1));
184
+ return;
185
+ }
186
+ if (key.rightArrow) {
187
+ setInputCursor((prev) => Math.min(inputValue.length, prev + 1));
188
+ return;
189
+ }
190
+ if (char === "a" && key.ctrl || key.meta && key.leftArrow) {
191
+ setInputCursor(0);
192
+ return;
193
+ }
194
+ if (char === "e" && key.ctrl || key.meta && key.rightArrow) {
195
+ setInputCursor(inputValue.length);
196
+ return;
197
+ }
198
+ if (key.backspace) {
199
+ if (inputCursor > 0) {
200
+ setInputValue(
201
+ (prev) => prev.slice(0, inputCursor - 1) + prev.slice(inputCursor)
202
+ );
203
+ setInputCursor((prev) => prev - 1);
204
+ setValidationError(null);
205
+ }
123
206
  return;
124
207
  }
125
208
  if (char && !key.ctrl && !key.meta) {
126
- setInputValue((prev) => prev + char);
209
+ setInputValue(
210
+ (prev) => prev.slice(0, inputCursor) + char + prev.slice(inputCursor)
211
+ );
212
+ setInputCursor((prev) => prev + char.length);
127
213
  setValidationError(null);
128
214
  }
129
215
  return;
@@ -138,7 +224,7 @@ function Modal(props) {
138
224
  }
139
225
  return;
140
226
  }
141
- if (key.backspace || key.delete) {
227
+ if (key.backspace) {
142
228
  setCustomInput((prev) => prev.slice(0, -1));
143
229
  return;
144
230
  }
@@ -147,6 +233,23 @@ function Modal(props) {
147
233
  }
148
234
  return;
149
235
  }
236
+ if (isMultiSelect && char === " " && "onToggle" in props) {
237
+ const selected = choices[cursor];
238
+ if (selected && !selected.disabled) {
239
+ setCheckedSet((prev) => {
240
+ const next = new Set(prev);
241
+ const nowChecked = !next.has(selected.value);
242
+ if (nowChecked) {
243
+ next.add(selected.value);
244
+ } else {
245
+ next.delete(selected.value);
246
+ }
247
+ props.onToggle?.(selected, nowChecked);
248
+ return next;
249
+ });
250
+ }
251
+ return;
252
+ }
150
253
  if (key.return) {
151
254
  const selected = choices[cursor];
152
255
  if (selected?.disabled) {
@@ -211,27 +314,33 @@ function Modal(props) {
211
314
  if (mode === "input" || mode === "password") {
212
315
  const displayValue = mode === "password" ? "\u2022".repeat(inputValue.length) : inputValue;
213
316
  const placeholderText = "placeholder" in props && props.placeholder || (mode === "password" ? t("ui.passwordPlaceholder") : t("ui.inputPlaceholder"));
317
+ const beforeCursor = displayValue.slice(0, inputCursor);
318
+ const atCursor = displayValue[inputCursor] ?? " ";
319
+ const afterCursor = displayValue.slice(inputCursor + 1);
214
320
  return /* @__PURE__ */ jsxs(Fragment, { children: [
215
321
  /* @__PURE__ */ jsxs(Box, { children: [
216
- /* @__PURE__ */ jsx(Text, { color: "yellow", children: "> " }),
217
- /* @__PURE__ */ jsx(Text, { children: displayValue || /* @__PURE__ */ jsx(Text, { color: "gray", children: placeholderText }) }),
218
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "\u2588" })
322
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("warning", "> ") }),
323
+ displayValue ? /* @__PURE__ */ jsxs(Text, { children: [
324
+ beforeCursor,
325
+ /* @__PURE__ */ jsx(Text, { inverse: true, children: atCursor }),
326
+ afterCursor
327
+ ] }) : /* @__PURE__ */ jsxs(Text, { children: [
328
+ theme.fg("muted", placeholderText),
329
+ /* @__PURE__ */ jsx(Text, { inverse: true, children: " " })
330
+ ] })
219
331
  ] }),
220
- validationError && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Text, { color: "red", children: validationError }) })
332
+ validationError && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Text, { children: theme.fg("error", validationError) }) })
221
333
  ] });
222
334
  }
223
335
  if (mode === "select" && isCustomMode) {
224
336
  return /* @__PURE__ */ jsxs(Box, { children: [
225
- /* @__PURE__ */ jsxs(Text, { color: "yellow", children: [
226
- t("ui.questionYourAnswer"),
227
- ": "
228
- ] }),
337
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("warning", `${t("ui.questionYourAnswer")}: `) }),
229
338
  /* @__PURE__ */ jsx(Text, { children: customInput }),
230
- /* @__PURE__ */ jsx(Text, { color: "gray", children: "\u2588" })
339
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", "\u2588") })
231
340
  ] });
232
341
  }
233
342
  if (hasNoChoices) {
234
- return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { color: "gray", children: t("ui.noOptionsAvailable") }) });
343
+ return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", t("ui.noOptionsAvailable")) }) });
235
344
  }
236
345
  const needsScroll = choices.length > maxVisible;
237
346
  const windowEnd = Math.min(windowStart + maxVisible, choices.length);
@@ -242,40 +351,20 @@ function Modal(props) {
242
351
  const isDisabled = choice.disabled;
243
352
  let color;
244
353
  if (isDisabled) {
245
- color = "gray";
354
+ color = "dim";
246
355
  } else if (isSelected) {
247
- color = "green";
356
+ color = "accent";
248
357
  }
358
+ const checkbox = isMultiSelect ? checkedSet.has(choice.value) ? "\u2611 " : "\u2610 " : "";
249
359
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
250
- /* @__PURE__ */ jsxs(Text, { color, children: [
251
- isSelected ? "\u25B8 " : " ",
252
- i + 1,
253
- ". ",
254
- choice.label,
255
- isDisabled ? " (disabled)" : ""
256
- ] }),
257
- choice.description && /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
258
- " ",
259
- choice.description
260
- ] })
360
+ /* @__PURE__ */ jsx(Text, { children: theme.fg(color ?? "text", `${isSelected ? "\u25B8 " : " "}${checkbox}${i + 1}. ${choice.label}${isDisabled ? " (disabled)" : ""}`) }),
361
+ choice.description && /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", ` ${choice.description}`) })
261
362
  ] }, `${choice.value}-${i}`);
262
363
  });
263
364
  return /* @__PURE__ */ jsxs(Fragment, { children: [
264
- needsScroll && windowStart > 0 && /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
265
- " ",
266
- "\u2191",
267
- " ",
268
- windowStart,
269
- " more above"
270
- ] }),
365
+ needsScroll && windowStart > 0 && /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", ` \u2191 ${windowStart} more above`) }),
271
366
  items,
272
- needsScroll && windowEnd < choices.length && /* @__PURE__ */ jsxs(Text, { color: "gray", children: [
273
- " ",
274
- "\u2193",
275
- " ",
276
- choices.length - windowEnd,
277
- " more below"
278
- ] })
367
+ needsScroll && windowEnd < choices.length && /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", ` \u2193 ${choices.length - windowEnd} more below`) })
279
368
  ] });
280
369
  };
281
370
  const renderHint = () => {
@@ -288,32 +377,40 @@ function Modal(props) {
288
377
  if (mode === "select" && isCustomMode) {
289
378
  return t("ui.questionCustomHint");
290
379
  }
380
+ if (isMultiSelect) {
381
+ return "Space toggle \xB7 Enter confirm \xB7 ESC cancel";
382
+ }
291
383
  return t("ui.questionSelectHint");
292
384
  };
293
385
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
294
- /* @__PURE__ */ jsx(Text, { color: "cyan", children: title }),
386
+ logo && /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: logo.split("\n").map((line, i) => /* @__PURE__ */ jsx(Text, { children: line }, i)) }),
387
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("accent", title) }),
295
388
  /* @__PURE__ */ jsx(Text, { children: " " }),
296
389
  renderContent(),
297
390
  /* @__PURE__ */ jsx(Text, { children: " " }),
298
- /* @__PURE__ */ jsx(Text, { color: "gray", children: renderHint() })
391
+ /* @__PURE__ */ jsx(Text, { children: theme.fg("muted", renderHint()) })
299
392
  ] });
300
393
  }
301
394
  async function showModal(options) {
302
- const { title, options: modalOptions, allowCustomInput, multiSelect, maxVisible } = options;
395
+ const { title, logo, options: modalOptions, allowCustomInput, multiSelect, maxVisible, onToggle } = options;
303
396
  if (!process.stdout.isTTY) {
304
397
  return null;
305
398
  }
399
+ prepareModalRender(process.stdout);
400
+ await new Promise((resolve) => setImmediate(resolve));
306
401
  return new Promise((resolve) => {
307
402
  let completed = false;
308
403
  const instance = render(
309
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
404
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
310
405
  Modal,
311
406
  {
312
407
  title,
408
+ logo,
313
409
  options: modalOptions,
314
410
  allowCustomInput,
315
411
  multiSelect,
316
412
  maxVisible,
413
+ onToggle,
317
414
  onSelect: (option) => {
318
415
  if (completed) return;
319
416
  completed = true;
@@ -325,8 +422,13 @@ async function showModal(options) {
325
422
  unmountAndResolve(instance, null, resolve);
326
423
  }
327
424
  }
328
- ) }),
329
- { exitOnCtrlC: false }
425
+ ) }) }),
426
+ inkRenderOptions({
427
+ stdin: process.stdin,
428
+ stdout: process.stdout,
429
+ stderr: process.stderr,
430
+ exitOnCtrlC: false
431
+ })
330
432
  );
331
433
  });
332
434
  }
@@ -334,10 +436,12 @@ async function showConfirm(options) {
334
436
  if (!process.stdout.isTTY) {
335
437
  return false;
336
438
  }
439
+ prepareModalRender(process.stdout);
440
+ await new Promise((resolve) => setImmediate(resolve));
337
441
  return new Promise((resolve) => {
338
442
  let completed = false;
339
443
  const instance = render(
340
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
444
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
341
445
  Modal,
342
446
  {
343
447
  mode: "confirm",
@@ -356,8 +460,13 @@ async function showConfirm(options) {
356
460
  unmountAndResolve(instance, false, resolve);
357
461
  }
358
462
  }
359
- ) }),
360
- { exitOnCtrlC: false }
463
+ ) }) }),
464
+ inkRenderOptions({
465
+ stdin: process.stdin,
466
+ stdout: process.stdout,
467
+ stderr: process.stderr,
468
+ exitOnCtrlC: false
469
+ })
361
470
  );
362
471
  });
363
472
  }
@@ -365,10 +474,12 @@ async function showInput(options) {
365
474
  if (!process.stdout.isTTY) {
366
475
  return null;
367
476
  }
477
+ prepareModalRender(process.stdout);
478
+ await new Promise((resolve) => setImmediate(resolve));
368
479
  return new Promise((resolve) => {
369
480
  let completed = false;
370
481
  const instance = render(
371
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
482
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
372
483
  Modal,
373
484
  {
374
485
  mode: "input",
@@ -387,8 +498,13 @@ async function showInput(options) {
387
498
  unmountAndResolve(instance, null, resolve);
388
499
  }
389
500
  }
390
- ) }),
391
- { exitOnCtrlC: false }
501
+ ) }) }),
502
+ inkRenderOptions({
503
+ stdin: process.stdin,
504
+ stdout: process.stdout,
505
+ stderr: process.stderr,
506
+ exitOnCtrlC: false
507
+ })
392
508
  );
393
509
  });
394
510
  }
@@ -396,10 +512,12 @@ async function showPassword(options) {
396
512
  if (!process.stdout.isTTY) {
397
513
  return null;
398
514
  }
515
+ prepareModalRender(process.stdout);
516
+ await new Promise((resolve) => setImmediate(resolve));
399
517
  return new Promise((resolve) => {
400
518
  let completed = false;
401
519
  const instance = render(
402
- /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(
520
+ /* @__PURE__ */ jsx(I18nProvider, { children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(
403
521
  Modal,
404
522
  {
405
523
  mode: "password",
@@ -417,19 +535,43 @@ async function showPassword(options) {
417
535
  unmountAndResolve(instance, null, resolve);
418
536
  }
419
537
  }
420
- ) }),
421
- { exitOnCtrlC: false }
538
+ ) }) }),
539
+ inkRenderOptions({
540
+ stdin: process.stdin,
541
+ stdout: process.stdout,
542
+ stderr: process.stderr,
543
+ exitOnCtrlC: false
544
+ })
422
545
  );
423
546
  });
424
547
  }
425
548
 
426
549
  export {
550
+ prepareModalRender,
551
+ cleanupModalRender,
427
552
  Modal,
428
553
  showModal,
429
554
  showConfirm,
430
555
  showInput,
431
556
  showPassword
432
557
  };
558
+ /**
559
+ * @license
560
+ * Copyright 2025 Autohand AI LLC
561
+ * SPDX-License-Identifier: Apache-2.0
562
+ *
563
+ * Shared utility: reset ANSI scroll region before Ink mounts.
564
+ *
565
+ * Terminal regions (split scroll/fixed areas for persistent input)
566
+ * prevent Ink from moving the cursor back up to overwrite previous
567
+ * renders, causing duplicated output on re-renders (e.g., arrow key
568
+ * navigation). Writing ESC[r resets the scroll region to the full
569
+ * terminal so Ink can render correctly.
570
+ *
571
+ * CONTRACT: After showing any Ink-based modal/component, the caller
572
+ * must ensure terminal regions are re-enabled (PersistentInput.resume()
573
+ * calls regions.enable() which re-sets the scroll region).
574
+ */
433
575
  /**
434
576
  * @license
435
577
  * Copyright 2025 Autohand AI LLC
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  showConfirm
3
- } from "./chunk-YZXUDM5X.js";
3
+ } from "./chunk-DLP436GI.js";
4
4
  import {
5
5
  AUTOHAND_PATHS,
6
6
  PROJECT_DIR_NAME
7
- } from "./chunk-EGFT4PGW.js";
7
+ } from "./chunk-TWQDAUZU.js";
8
8
  import {
9
9
  t
10
- } from "./chunk-APIXPPMT.js";
10
+ } from "./chunk-CBFH2J3O.js";
11
11
 
12
12
  // src/skills/communityInstaller.ts
13
13
  import crypto from "crypto";
@@ -3,10 +3,10 @@
3
3
  var _chunkJHGIWNHLcjs = require('./chunk-JHGIWNHL.cjs');
4
4
 
5
5
 
6
- var _chunkOLSBBZW6cjs = require('./chunk-OLSBBZW6.cjs');
6
+ var _chunk7MU7LWF3cjs = require('./chunk-7MU7LWF3.cjs');
7
7
 
8
8
 
9
- var _chunkSEKD5FH3cjs = require('./chunk-SEKD5FH3.cjs');
9
+ var _chunkE26KKI46cjs = require('./chunk-E26KKI46.cjs');
10
10
 
11
11
  // src/commands/skills-new.ts
12
12
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
@@ -25,7 +25,7 @@ async function createSkill(ctx) {
25
25
  console.log(_chalk2.default.red("Skills registry not available."));
26
26
  return null;
27
27
  }
28
- const answers = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, [
28
+ const answers = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, [
29
29
  {
30
30
  type: "input",
31
31
  name: "name",
@@ -65,7 +65,7 @@ async function createSkill(ctx) {
65
65
  console.log(_chalk2.default.gray("Canceled: no name provided."));
66
66
  return null;
67
67
  }
68
- const storageResult = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
68
+ const storageResult = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
69
69
  type: "select",
70
70
  name: "level",
71
71
  message: "Where should this skill be saved?",
@@ -81,7 +81,7 @@ async function createSkill(ctx) {
81
81
  const storageLevel = storageResult.level;
82
82
  if (skillsRegistry.hasSkill(name)) {
83
83
  console.log(_chalk2.default.yellow(`A skill named "${name}" already exists.`));
84
- const result = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
84
+ const result = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
85
85
  type: "confirm",
86
86
  name: "overwrite",
87
87
  message: "Do you want to overwrite it?",
@@ -100,7 +100,7 @@ async function createSkill(ctx) {
100
100
  console.log(_chalk2.default.gray(` Similarity: ${(match.score * 100).toFixed(0)}%`));
101
101
  }
102
102
  console.log();
103
- const result = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
103
+ const result = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
104
104
  type: "select",
105
105
  name: "proceed",
106
106
  message: "How would you like to proceed?",
@@ -150,7 +150,7 @@ Output only the raw markdown content, no code fences.`
150
150
  console.log(content.length > 800 ? content.slice(0, 800) + "\n...(truncated)" : content);
151
151
  console.log(_chalk2.default.gray("\u2500".repeat(50)));
152
152
  console.log();
153
- const confirmResult = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
153
+ const confirmResult = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
154
154
  type: "confirm",
155
155
  name: "confirm",
156
156
  message: "Save this skill?",
@@ -160,7 +160,7 @@ Output only the raw markdown content, no code fences.`
160
160
  console.log(_chalk2.default.gray("Canceled."));
161
161
  return null;
162
162
  }
163
- const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") : _chunkSEKD5FH3cjs.AUTOHAND_PATHS.skills;
163
+ const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") : _chunkE26KKI46cjs.AUTOHAND_PATHS.skills;
164
164
  const skillDir = _path2.default.join(baseDir, name);
165
165
  const skillPath = _path2.default.join(skillDir, "SKILL.md");
166
166
  try {
@@ -169,7 +169,7 @@ Output only the raw markdown content, no code fences.`
169
169
  console.log(_chalk2.default.green(`\u2713 Saved new skill to ${skillPath}`));
170
170
  const success = await skillsRegistry.saveSkill(name, content);
171
171
  if (success) {
172
- const activateResult = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
172
+ const activateResult = await _chunk7MU7LWF3cjs.safePrompt.call(void 0, {
173
173
  type: "confirm",
174
174
  name: "activate",
175
175
  message: "Activate this skill now?",
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
3
 
4
- var _chunkN254NRHTcjs = require('./chunk-N254NRHT.cjs');
4
+ var _chunk3HT76LNNcjs = require('./chunk-3HT76LNN.cjs');
5
5
 
6
6
  // node_modules/cli-spinners/spinners.json
7
- var require_spinners = _chunkN254NRHTcjs.__commonJS.call(void 0, {
7
+ var require_spinners = _chunk3HT76LNNcjs.__commonJS.call(void 0, {
8
8
  "node_modules/cli-spinners/spinners.json"(exports, module) {
9
9
  module.exports = {
10
10
  dots: {
@@ -1632,7 +1632,7 @@ var require_spinners = _chunkN254NRHTcjs.__commonJS.call(void 0, {
1632
1632
  });
1633
1633
 
1634
1634
  // node_modules/cli-spinners/index.js
1635
- var require_cli_spinners = _chunkN254NRHTcjs.__commonJS.call(void 0, {
1635
+ var require_cli_spinners = _chunk3HT76LNNcjs.__commonJS.call(void 0, {
1636
1636
  "node_modules/cli-spinners/index.js"(exports, module) {
1637
1637
  "use strict";
1638
1638
  var spinners2 = Object.assign({}, require_spinners());
@@ -1649,7 +1649,7 @@ var require_cli_spinners = _chunkN254NRHTcjs.__commonJS.call(void 0, {
1649
1649
  });
1650
1650
 
1651
1651
  // node_modules/ink-spinner/build/index.js
1652
- var import_cli_spinners = _chunkN254NRHTcjs.__toESM.call(void 0, require_cli_spinners(), 1);
1652
+ var import_cli_spinners = _chunk3HT76LNNcjs.__toESM.call(void 0, require_cli_spinners(), 1);
1653
1653
  var _react = require('react'); var _react2 = _interopRequireDefault(_react);
1654
1654
  var _ink = require('ink');
1655
1655
  function Spinner({ type = "dots" }) {
@@ -3,7 +3,7 @@ var _os = require('os'); var _os2 = _interopRequireDefault(_os);
3
3
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
4
4
  var AUTOHAND_HOME = process.env.AUTOHAND_HOME || _path2.default.join(_os2.default.homedir(), ".autohand");
5
5
  var AUTOHAND_PATHS = {
6
- /** Configuration files (config.json, config.yaml, config.yml) */
6
+ /** Configuration files (config.toml, config.yaml, config.yml, config.json) */
7
7
  config: AUTOHAND_HOME,
8
8
  /** Session data storage */
9
9
  sessions: _path2.default.join(AUTOHAND_HOME, "sessions"),
@@ -33,6 +33,7 @@ var AUTOHAND_PATHS = {
33
33
  var AUTOHAND_FILES = {
34
34
  /** Main config file */
35
35
  configJson: _path2.default.join(AUTOHAND_HOME, "config.json"),
36
+ configToml: _path2.default.join(AUTOHAND_HOME, "config.toml"),
36
37
  configYaml: _path2.default.join(AUTOHAND_HOME, "config.yaml"),
37
38
  configYml: _path2.default.join(AUTOHAND_HOME, "config.yml"),
38
39
  /** Device ID for telemetry */
@@ -57,7 +58,9 @@ var AUTH_CONFIG = {
57
58
  },
58
59
  pollInterval: 2e3,
59
60
  authTimeout: 5 * 60 * 1e3,
60
- sessionExpiryDays: 30
61
+ sessionExpiryDays: 30,
62
+ /** Idle timeout in ms before forcing logout (30 minutes) */
63
+ idleTimeoutMs: 30 * 60 * 1e3
61
64
  };
62
65
  var SYNC_CONFIG = {
63
66
  /** Default sync interval in ms (5 minutes) */
@@ -3,13 +3,13 @@ import {
3
3
  showInput,
4
4
  showModal,
5
5
  showPassword
6
- } from "./chunk-YZXUDM5X.js";
6
+ } from "./chunk-DLP436GI.js";
7
7
  import {
8
8
  saveConfig
9
- } from "./chunk-P47WPOXN.js";
9
+ } from "./chunk-3UT7R3XV.js";
10
10
  import {
11
11
  t
12
- } from "./chunk-APIXPPMT.js";
12
+ } from "./chunk-CBFH2J3O.js";
13
13
 
14
14
  // src/commands/settings.ts
15
15
  import chalk from "chalk";