autohand-cli 0.8.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +173 -74
  2. package/dist/AgentRegistry-EGBDIUAK.cjs +10 -0
  3. package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-XPWSVO3Q.js} +2 -2
  4. package/dist/{AutomodeManager-EOVHGRPP.js → AutomodeManager-APLLPEYJ.js} +31 -17
  5. package/dist/{AutomodeManager-6ATBE7Q5.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
  6. package/dist/CommunitySkillsCache-2OIUV227.cjs +8 -0
  7. package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZEQWP6YM.js} +2 -2
  8. package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
  9. package/dist/{GitHubRegistryFetcher-NT5GFZXS.js → GitHubRegistryFetcher-J2BWPXJF.js} +1 -1
  10. package/dist/{HookManager-B2F35M27.js → HookManager-CWLTFKWO.js} +1 -1
  11. package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TMAJQU4S.cjs} +2 -2
  12. package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-MQXEED2U.cjs} +37 -13
  13. package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-QBKQEXDW.js} +33 -9
  14. package/dist/LearnAdvisor-46FG2XIP.js +9 -0
  15. package/dist/LearnAdvisor-XBRDNAGH.cjs +9 -0
  16. package/dist/{McpClientManager-NQ3EW2IF.cjs → McpClientManager-BNSKLHIN.cjs} +2 -2
  17. package/dist/{McpClientManager-VBIMGKXU.js → McpClientManager-SL35BR24.js} +1 -1
  18. package/dist/MemoryManager-34L4YOKA.cjs +8 -0
  19. package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-WJMLPWGU.js} +2 -2
  20. package/dist/NVIDIAProvider-2HR737UE.js +14 -0
  21. package/dist/NVIDIAProvider-MVTL62PR.cjs +14 -0
  22. package/dist/PermissionManager-5OOJ7FAT.cjs +11 -0
  23. package/dist/{PermissionManager-7NQHRCHY.js → PermissionManager-KMYILJ4Z.js} +3 -3
  24. package/dist/{ProjectProfiler-UG42W6WD.cjs → ProjectProfiler-CDAE7ECW.cjs} +1 -0
  25. package/dist/{ProjectProfiler-P4QJQWWA.js → ProjectProfiler-NZTJDRHD.js} +1 -0
  26. package/dist/ProviderFactory-C3YPXTDD.cjs +11 -0
  27. package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-HFPRVQ25.js} +3 -1
  28. package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-PNBTJJTQ.js} +2 -2
  29. package/dist/SessionManager-WAPTFMDO.cjs +10 -0
  30. package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-4RRD5GMX.js} +2 -2
  31. package/dist/SkillsRegistry-7AJP74GJ.cjs +9 -0
  32. package/dist/SubAgent-FDIH3DXB.js +11 -0
  33. package/dist/SubAgent-HVL2ICVZ.cjs +11 -0
  34. package/dist/{SyncApiClient-B5RT2ECG.js → SyncApiClient-LRPFNCKJ.js} +1 -1
  35. package/dist/SyncApiClient-VMBOLQ6H.cjs +11 -0
  36. package/dist/about-BW3PDZUU.js +14 -0
  37. package/dist/about-FCAX37YC.cjs +14 -0
  38. package/dist/acp-EOETGAHC.cjs +1517 -0
  39. package/dist/acp-VHEL7BOW.js +1517 -0
  40. package/dist/actionExecutor-33I47NZS.js +24 -0
  41. package/dist/actionExecutor-4YBMR3YH.cjs +24 -0
  42. package/dist/add-dir-7SS6KSH5.cjs +11 -0
  43. package/dist/{add-dir-TUJM3PG5.js → add-dir-VFX7QT4E.js} +3 -2
  44. package/dist/agent-DMRUFU4M.cjs +116 -0
  45. package/dist/agent-WCJEYQJT.js +116 -0
  46. package/dist/agents/builtin/code-cleaner.md +1 -1
  47. package/dist/agents/builtin/docs-writer.md +1 -1
  48. package/dist/agents/builtin/researcher.md +2 -2
  49. package/dist/agents/builtin/reviewer.md +1 -1
  50. package/dist/agents/builtin/tester.md +1 -1
  51. package/dist/agents/builtin/todo-resolver.md +1 -1
  52. package/dist/agents-CHROO3VU.cjs +17 -0
  53. package/dist/agents-UVDUL65K.js +17 -0
  54. package/dist/agents-new-AUBWSOXP.js +17 -0
  55. package/dist/agents-new-Y562WC47.cjs +17 -0
  56. package/dist/{autoSkill-LQEVQFIH.js → autoSkill-EFMK6WU6.js} +2 -2
  57. package/dist/autoSkill-YOLLFTP2.cjs +20 -0
  58. package/dist/{automode-R6P3VHLS.js → automode-BMYSRM34.js} +2 -2
  59. package/dist/automode-DBLKTTKD.cjs +10 -0
  60. package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
  61. package/dist/browserToolBridge-F5N66PE7.js +58 -0
  62. package/dist/chrome-ATC4OO5I.cjs +20 -0
  63. package/dist/chrome-NHJ44WUN.js +50 -0
  64. package/dist/chrome-O62WXV7F.js +20 -0
  65. package/dist/chrome-XHJLCO4M.cjs +50 -0
  66. package/dist/chromeSkill-53TH55PM.js +105 -0
  67. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  68. package/dist/{chunk-EGPXJERY.cjs → chunk-2CGE7ZV3.cjs} +26 -26
  69. package/dist/chunk-2H5O745H.js +63 -0
  70. package/dist/chunk-2HOLOHVK.js +2219 -0
  71. package/dist/{chunk-3PDTTAKJ.js → chunk-2QL6MNXG.js} +15 -8
  72. package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
  73. package/dist/{chunk-VG34MG2U.js → chunk-37M5UM6I.js} +9 -6
  74. package/dist/{chunk-KLWJIPU2.cjs → chunk-3DDL2E55.cjs} +20 -16
  75. package/dist/chunk-3EDDDZS2.cjs +5 -0
  76. package/dist/{chunk-2UC22DJU.js → chunk-3GUEUCZK.js} +28 -4
  77. package/dist/{chunk-DVUHHH3B.cjs → chunk-3KLSNNRW.cjs} +4 -4
  78. package/dist/chunk-3LJJG5YY.cjs +387 -0
  79. package/dist/chunk-3OF56EMA.cjs +197 -0
  80. package/dist/chunk-3PXKRVCW.js +108 -0
  81. package/dist/{chunk-ADUFCS4Q.cjs → chunk-3S563FNF.cjs} +160 -79
  82. package/dist/chunk-3UT7R3XV.js +663 -0
  83. package/dist/chunk-4256YRCO.cjs +80 -0
  84. package/dist/chunk-46C73ZKK.cjs +663 -0
  85. package/dist/chunk-46MTALKD.js +44 -0
  86. package/dist/{chunk-AEJH23FO.cjs → chunk-47PHDKNW.cjs} +6 -6
  87. package/dist/chunk-4LMUDS2K.js +124 -0
  88. package/dist/{chunk-HLHTG5ZU.cjs → chunk-5CMYEM3R.cjs} +14 -12
  89. package/dist/{chunk-MBBY4ZIK.js → chunk-5F6ZKSHO.js} +4 -1
  90. package/dist/chunk-5JFTY3VU.js +74 -0
  91. package/dist/chunk-5JTTM5SC.js +59 -0
  92. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  93. package/dist/{chunk-GJH7XMSK.js → chunk-5VHP6HDQ.js} +8 -6
  94. package/dist/{chunk-6ZCULLCA.js → chunk-62RTC3XX.js} +1 -1
  95. package/dist/{chunk-64H4FRM3.cjs → chunk-6GUODJKM.cjs} +32 -34
  96. package/dist/{chunk-47CKWKEX.cjs → chunk-6HH236FV.cjs} +9 -4
  97. package/dist/{chunk-WHE2SWHU.js → chunk-6NVAK6CK.js} +2 -2
  98. package/dist/chunk-6R25D2H5.js +121 -0
  99. package/dist/{chunk-OUZQXMHL.cjs → chunk-6XVVIY54.cjs} +55 -25
  100. package/dist/{chunk-3L53OA4E.cjs → chunk-75EDROHL.cjs} +10 -10
  101. package/dist/{chunk-G4CAKI3V.js → chunk-7HPWMALN.js} +7 -2
  102. package/dist/chunk-7JLT2VNW.cjs +18963 -0
  103. package/dist/chunk-7LWQCE4Y.cjs +987 -0
  104. package/dist/{chunk-OLSBBZW6.cjs → chunk-7MU7LWF3.cjs} +5 -5
  105. package/dist/{chunk-TUD3Z3BD.js → chunk-7RFJB75Y.js} +140 -59
  106. package/dist/{chunk-X2MSVKDV.js → chunk-A7HHCIDQ.js} +2 -2
  107. package/dist/{chunk-SKYG33B2.cjs → chunk-AC7DZ6SK.cjs} +3 -3
  108. package/dist/{chunk-XX2ZO7DS.js → chunk-ACDQGA4Z.js} +90 -16
  109. package/dist/{chunk-CZXGCVTR.cjs → chunk-AOKCI722.cjs} +2 -2
  110. package/dist/chunk-ARBEHFCG.js +715 -0
  111. package/dist/{chunk-OOKY3HPZ.js → chunk-AT7OWLY5.js} +50 -9
  112. package/dist/chunk-AU6JAGZJ.cjs +231 -0
  113. package/dist/chunk-AUFNACED.js +18963 -0
  114. package/dist/{chunk-N2BLVUPM.cjs → chunk-AUYSIEVV.cjs} +3 -3
  115. package/dist/chunk-B4HSNOIH.cjs +354 -0
  116. package/dist/{chunk-EGMZDTSL.js → chunk-B5CGDNMR.js} +10 -2
  117. package/dist/{chunk-FTYY5JJD.js → chunk-BFQDQRDE.js} +2 -2
  118. package/dist/{chunk-2AA5MFES.js → chunk-BL2UC7HC.js} +8 -5
  119. package/dist/{chunk-T2M64VHA.cjs → chunk-BQ22N3TX.cjs} +56 -41
  120. package/dist/chunk-BQU3HAE7.js +21 -0
  121. package/dist/chunk-BWF4VDYE.js +3897 -0
  122. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  123. package/dist/{chunk-APIXPPMT.js → chunk-CBFH2J3O.js} +855 -33
  124. package/dist/chunk-CCVMREXI.js +420 -0
  125. package/dist/chunk-CFAWTLSC.js +13 -0
  126. package/dist/{chunk-G27PQQFD.js → chunk-CFFE4VA3.js} +1 -1
  127. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CH2J4PVE.cjs} +212 -70
  128. package/dist/{chunk-7BTSG4ME.cjs → chunk-CHI52KFR.cjs} +855 -33
  129. package/dist/{chunk-DJDE4DTT.cjs → chunk-CWINVFRI.cjs} +25 -19
  130. package/dist/{chunk-HXGBSJL5.cjs → chunk-D2OSPLYC.cjs} +2 -2
  131. package/dist/{chunk-GBHDROGL.js → chunk-D6GZBSOX.js} +16 -4
  132. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  133. package/dist/chunk-DEQVRSV5.cjs +866 -0
  134. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  135. package/dist/{chunk-K2C56QGS.cjs → chunk-DIZTWFVR.cjs} +1499 -482
  136. package/dist/{chunk-YZXUDM5X.js → chunk-DLP436GI.js} +204 -62
  137. package/dist/{chunk-OHUZKDGX.js → chunk-DMRXF5DU.js} +3 -3
  138. package/dist/{chunk-U46VYPLR.cjs → chunk-DPSIGY6L.cjs} +9 -9
  139. package/dist/{chunk-SEKD5FH3.cjs → chunk-E26KKI46.cjs} +5 -2
  140. package/dist/{chunk-SJAVBCOA.js → chunk-E46DJH5S.js} +3 -3
  141. package/dist/{chunk-DV2ZHK7B.cjs → chunk-E6GFD7VR.cjs} +49 -26
  142. package/dist/chunk-ES2HJQ4N.js +37 -0
  143. package/dist/chunk-EZJHLOWP.js +80 -0
  144. package/dist/chunk-FFBDRUO5.cjs +59 -0
  145. package/dist/{chunk-SV2WA57F.js → chunk-FGT6KK6T.js} +38 -15
  146. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  147. package/dist/{chunk-QXH5RCFI.js → chunk-FQAVGSPW.js} +2 -2
  148. package/dist/chunk-FQVG6ZHF.js +197 -0
  149. package/dist/chunk-GBMDFWJX.cjs +152 -0
  150. package/dist/{chunk-NAGQ2PDC.js → chunk-GGLKUENP.js} +1453 -436
  151. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  152. package/dist/{chunk-MYISNQH4.js → chunk-GWO66KBI.js} +1 -1
  153. package/dist/chunk-GWY26SUD.cjs +63 -0
  154. package/dist/{chunk-YGN4CQIP.js → chunk-GZ6DV2UG.js} +1 -1
  155. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  156. package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
  157. package/dist/chunk-HJIXWGQZ.js +139 -0
  158. package/dist/{chunk-ULDM2SNB.js → chunk-HKYZSUQ5.js} +48 -47
  159. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  160. package/dist/{chunk-HTLINWX6.cjs → chunk-HQWQZML5.cjs} +16 -13
  161. package/dist/{chunk-DVZOENQ7.cjs → chunk-HS4USDND.cjs} +9 -4
  162. package/dist/chunk-HSCUPEA4.cjs +3897 -0
  163. package/dist/{chunk-JCLYQ2JC.js → chunk-HXJEGMGB.js} +12 -6
  164. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  165. package/dist/{chunk-N7LI55V4.js → chunk-I24CWKKK.js} +15 -8
  166. package/dist/chunk-IAGCRVJ3.js +355 -0
  167. package/dist/chunk-IEXKKKOF.cjs +92 -0
  168. package/dist/{chunk-5IXII4HX.cjs → chunk-IGMPWJ2I.cjs} +19 -12
  169. package/dist/chunk-IKUMVBCW.cjs +33 -0
  170. package/dist/{chunk-XTB6VJVQ.cjs → chunk-J2K57QM7.cjs} +6 -6
  171. package/dist/{chunk-56SWIDEL.cjs → chunk-J5ADZN6V.cjs} +57 -56
  172. package/dist/chunk-J5HE6CUM.cjs +124 -0
  173. package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
  174. package/dist/chunk-JIMSII7R.js +987 -0
  175. package/dist/chunk-JJ4KA7HK.cjs +2219 -0
  176. package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
  177. package/dist/{chunk-X5VSP65C.cjs → chunk-JP3YHTQ2.cjs} +4 -4
  178. package/dist/{chunk-SKV2F3NM.js → chunk-JYKPWK5O.js} +1 -1
  179. package/dist/{chunk-NNPAM4HC.cjs → chunk-KNTUI4TZ.cjs} +12 -6
  180. package/dist/{chunk-HIVRCQS2.js → chunk-L4F7SUYL.js} +56 -25
  181. package/dist/{chunk-C5IJIM2V.cjs → chunk-LDJQ5QHG.cjs} +68 -37
  182. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  183. package/dist/chunk-LJD7KR3L.cjs +44 -0
  184. package/dist/chunk-LN7D3EJZ.js +387 -0
  185. package/dist/{chunk-KANW6OYC.cjs → chunk-LQBONA55.cjs} +32 -8
  186. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  187. package/dist/chunk-M4KNC5BQ.js +78 -0
  188. package/dist/chunk-MO4KP6XS.cjs +229 -0
  189. package/dist/{chunk-BVKXEQVG.cjs → chunk-MOJ7ADW4.cjs} +22 -10
  190. package/dist/chunk-MPULXVC4.cjs +715 -0
  191. package/dist/{chunk-VEKDGU2Q.cjs → chunk-MQESBFBZ.cjs} +46 -23
  192. package/dist/chunk-MUNUUFU7.cjs +21 -0
  193. package/dist/{chunk-ZSPXQYG2.js → chunk-MX75JYIY.js} +7 -5
  194. package/dist/chunk-MXVIDIC6.cjs +139 -0
  195. package/dist/{chunk-3K2ESU53.cjs → chunk-N6O3XUZ2.cjs} +2 -2
  196. package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
  197. package/dist/{chunk-SLQAYV3W.js → chunk-NMQ47RCG.js} +8 -2
  198. package/dist/{chunk-JYTDYJVW.js → chunk-O64I2GYI.js} +1 -1
  199. package/dist/{chunk-IFFXSTOM.cjs → chunk-O6TQP7U7.cjs} +3 -3
  200. package/dist/{chunk-AYS2ASM7.js → chunk-OHWMWKJQ.js} +1 -1
  201. package/dist/{chunk-N23UAW4I.js → chunk-OM24WXEE.js} +7 -2
  202. package/dist/{chunk-NAJ4IZKD.cjs → chunk-OPNI6O7F.cjs} +8 -6
  203. package/dist/chunk-OR67YXQK.cjs +13 -0
  204. package/dist/{chunk-XVUHNWMX.js → chunk-OV3PVUYN.js} +17 -19
  205. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  206. package/dist/chunk-PCM3N3CL.cjs +37 -0
  207. package/dist/{chunk-A4IJHHV7.cjs → chunk-PDHT7LQS.cjs} +52 -11
  208. package/dist/{chunk-HPHJ73GU.cjs → chunk-PHJO5YAL.cjs} +9 -9
  209. package/dist/{chunk-KPELYZ6L.js → chunk-PQLKJCIE.js} +2 -2
  210. package/dist/chunk-PUD76XQT.cjs +78 -0
  211. package/dist/chunk-Q2IL4DDI.cjs +355 -0
  212. package/dist/{chunk-WPVWQSL7.cjs → chunk-Q6AC3PHY.cjs} +16 -13
  213. package/dist/{chunk-XRZEUWKF.js → chunk-QCHIDZBA.js} +1 -1
  214. package/dist/chunk-QKP772OZ.js +4291 -0
  215. package/dist/chunk-QQ7PANOP.js +59 -0
  216. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  217. package/dist/chunk-RAKO7UN7.js +114 -0
  218. package/dist/chunk-RBHANOYY.js +33 -0
  219. package/dist/chunk-RBZ7AFX7.cjs +29 -0
  220. package/dist/{chunk-GCXYXLRA.cjs → chunk-REMGR23V.cjs} +46 -49
  221. package/dist/chunk-ROLA6EFO.cjs +85 -0
  222. package/dist/{chunk-RDF37HKB.cjs → chunk-SOLBYSLY.cjs} +3 -2
  223. package/dist/{chunk-KQGPTCQJ.js → chunk-SWCQM52V.js} +68 -25
  224. package/dist/{chunk-L3TWPROA.js → chunk-TBOLJDUG.js} +39 -24
  225. package/dist/chunk-TH26BQJG.js +101 -0
  226. package/dist/{chunk-245KJE5Y.cjs → chunk-TJNBASFD.cjs} +14 -6
  227. package/dist/chunk-TKKN34TV.js +229 -0
  228. package/dist/chunk-TQ33WBY5.cjs +74 -0
  229. package/dist/{chunk-EGFT4PGW.js → chunk-TWQDAUZU.js} +5 -2
  230. package/dist/{chunk-J2GSFVUV.cjs → chunk-TXPSTCG7.cjs} +74 -59
  231. package/dist/{chunk-5K6NGAVM.js → chunk-U4C3HW6P.js} +67 -52
  232. package/dist/{chunk-3WICOC33.js → chunk-UEIXJG45.js} +105 -81
  233. package/dist/{chunk-22D2CNTP.cjs → chunk-UGFVM77J.cjs} +5 -2
  234. package/dist/chunk-UOQECODR.js +34 -0
  235. package/dist/chunk-UR27UDTB.js +354 -0
  236. package/dist/chunk-UWFG2R2I.cjs +420 -0
  237. package/dist/{chunk-Y72HH2TF.cjs → chunk-UXLW45ZE.cjs} +102 -28
  238. package/dist/{chunk-FPHU2ES6.cjs → chunk-VBOFPU5M.cjs} +6 -0
  239. package/dist/{chunk-NTSDP2WB.js → chunk-VDWJMWDF.js} +54 -24
  240. package/dist/{chunk-3O3MOK5C.cjs → chunk-VGEV44V2.cjs} +944 -133
  241. package/dist/{chunk-IDFF5J2E.js → chunk-VKBIE6I6.js} +38 -7
  242. package/dist/{chunk-HBZU3RBZ.js → chunk-VRMZO6TB.js} +31 -8
  243. package/dist/chunk-VUGOOGHB.js +400 -0
  244. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  245. package/dist/chunk-WGLBC5AY.cjs +59 -0
  246. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  247. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  248. package/dist/chunk-WRTXCQ3V.cjs +4291 -0
  249. package/dist/chunk-WTB7AFL6.cjs +101 -0
  250. package/dist/{chunk-NDMIPTV4.js → chunk-WZV6UVPY.js} +8 -3
  251. package/dist/chunk-XF2WIKHR.cjs +34 -0
  252. package/dist/{chunk-W7RYQJLO.cjs → chunk-XGMI6IYB.cjs} +46 -15
  253. package/dist/{chunk-NA6WQDYW.js → chunk-XIVFAD2L.js} +918 -107
  254. package/dist/chunk-XV2HXRHX.js +85 -0
  255. package/dist/{chunk-3VTAFAL2.js → chunk-Y3M2DABP.js} +16 -12
  256. package/dist/{chunk-QNGEW5TC.js → chunk-YV63VW4K.js} +1 -1
  257. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  258. package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
  259. package/dist/chunk-YZWE7XSM.js +5 -0
  260. package/dist/{chunk-TUAITHWL.js → chunk-Z3XSSF7B.js} +2 -1
  261. package/dist/{chunk-6UJMCWRY.js → chunk-Z4LIPMPM.js} +6 -0
  262. package/dist/chunk-ZASDSY7P.cjs +114 -0
  263. package/dist/{chunk-R33VKSH5.cjs → chunk-ZHJ7JGME.cjs} +11 -11
  264. package/dist/chunk-ZPD2AO3U.js +866 -0
  265. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  266. package/dist/chunk-ZR46OJNZ.js +152 -0
  267. package/dist/{chunk-7TQH3CL4.cjs → chunk-ZZ63NW7A.cjs} +78 -35
  268. package/dist/clear-33TWQ2ES.cjs +12 -0
  269. package/dist/{clear-A3N4GK2S.js → clear-OFLFQ3MR.js} +3 -3
  270. package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-COB2KTOW.js} +8 -5
  271. package/dist/communityInstaller-TWMGPSYM.cjs +22 -0
  272. package/dist/completion-IIZMHXYP.cjs +17 -0
  273. package/dist/completion-PT4VM2H2.js +17 -0
  274. package/dist/config-KL6WU7R2.cjs +20 -0
  275. package/dist/{config-HPJPKTO6.js → config-R4O7GBTY.js} +6 -4
  276. package/dist/{constants-LISJW3DD.js → constants-HVCHVQAF.js} +1 -1
  277. package/dist/constants-RLMJ5D5P.cjs +21 -0
  278. package/dist/{defaultHooks-IHSJR2AX.cjs → defaultHooks-2V2CQL63.cjs} +25 -10
  279. package/dist/{defaultHooks-KUKHK3AG.js → defaultHooks-TMHDU3FS.js} +25 -10
  280. package/dist/export-3PK3VFCE.js +15 -0
  281. package/dist/export-WLGNWEMJ.cjs +15 -0
  282. package/dist/feedback-G635NCLJ.js +18 -0
  283. package/dist/feedback-LLMK3TZH.cjs +18 -0
  284. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  285. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  286. package/dist/{filesystem-Z7BWAWMZ.js → filesystem-L6DQKGWK.js} +3 -2
  287. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  288. package/dist/help-BAXLP2M2.cjs +12 -0
  289. package/dist/{help-GFQXNZOK.js → help-X3OAZ3CY.js} +2 -2
  290. package/dist/history-6HOJSEMT.cjs +14 -0
  291. package/dist/{history-E3N6BJP7.js → history-YKFPHBJN.js} +2 -2
  292. package/dist/hooks-7TA4PIIB.js +18 -0
  293. package/dist/hooks-XVFU67T2.cjs +18 -0
  294. package/dist/{i18n-SY7QRM22.js → i18n-2KBUU7XL.js} +1 -1
  295. package/dist/i18n-MUJMKTFM.cjs +33 -0
  296. package/dist/ide-CCQ33PGC.cjs +15 -0
  297. package/dist/ide-VLVFBZ5F.js +15 -0
  298. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  299. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  300. package/dist/{import-W7SVLSTC.js → import-4CHYLS4K.js} +3 -3
  301. package/dist/{import-ADI37ZUR.cjs → import-I7T4ZHYL.cjs} +3 -3
  302. package/dist/import-J46F54JY.cjs +10 -0
  303. package/dist/{import-KGKKZ3B7.js → import-JWPYKXCZ.js} +2 -2
  304. package/dist/index.cjs +744 -23015
  305. package/dist/index.d.cts +93 -0
  306. package/dist/index.d.ts +93 -0
  307. package/dist/index.js +780 -23051
  308. package/dist/{init-7MFK626E.js → init-262MWZV4.js} +2 -2
  309. package/dist/init-EE5Y7RBL.cjs +10 -0
  310. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  311. package/dist/inkMode-WBNFOSAT.js +7 -0
  312. package/dist/inputPrompt-IIFKCX5Q.cjs +90 -0
  313. package/dist/inputPrompt-YGBHDUEP.js +90 -0
  314. package/dist/language-CVLPB7OV.js +21 -0
  315. package/dist/language-ZTWFHUSV.cjs +21 -0
  316. package/dist/learn-PON7I5QS.js +23 -0
  317. package/dist/learn-XLRSVNA3.cjs +23 -0
  318. package/dist/login-223QTGBG.cjs +26 -0
  319. package/dist/login-6IKTBUBY.js +26 -0
  320. package/dist/logout-RN2AG6SI.js +23 -0
  321. package/dist/logout-U3M4FFX7.cjs +23 -0
  322. package/dist/mcp-5O6PUL4G.js +20 -0
  323. package/dist/mcp-NUQ76QQB.cjs +20 -0
  324. package/dist/{mcp-install-2FEROZTL.js → mcp-install-6XWXLFVY.js} +17 -10
  325. package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-P6DHES7V.cjs} +21 -14
  326. package/dist/memory-CYMDQ2YC.cjs +10 -0
  327. package/dist/{memory-J73WZH2I.js → memory-Q54CESNM.js} +2 -2
  328. package/dist/{model-AES267IN.js → model-6AJ77PJG.js} +2 -2
  329. package/dist/model-IDRCKDML.cjs +10 -0
  330. package/dist/new-7LEWOUF2.cjs +12 -0
  331. package/dist/{new-5CLF3MKH.js → new-ZXHEWC2S.js} +3 -3
  332. package/dist/onboarding-FXX7YHSJ.cjs +35 -0
  333. package/dist/onboarding-JYNMK6NI.js +35 -0
  334. package/dist/permissions-YBNSANIA.cjs +10 -0
  335. package/dist/permissions-YHJMVA6L.js +10 -0
  336. package/dist/plan-XEJMOT55.cjs +13 -0
  337. package/dist/{plan-65HMS5HQ.js → plan-YYUAXPTL.js} +3 -1
  338. package/dist/pr-review-CW6J7P62.cjs +9 -0
  339. package/dist/pr-review-YZSBQVT2.js +9 -0
  340. package/dist/quit-B43SJ6E4.cjs +10 -0
  341. package/dist/{quit-XDZYRSPU.js → quit-GWTNHQSP.js} +2 -2
  342. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  343. package/dist/rawMode-GFNLXQPU.js +7 -0
  344. package/dist/{registry-PTHWERKC.js → registry-34GL6BNJ.js} +29 -44
  345. package/dist/{registry-IVT4G2RT.cjs → registry-V24W7YK6.cjs} +65 -80
  346. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  347. package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
  348. package/dist/resume-DYVOQN5L.cjs +16 -0
  349. package/dist/resume-M25UQKOX.js +16 -0
  350. package/dist/review-QHP2KP4Q.js +9 -0
  351. package/dist/review-UWHWQHCB.cjs +9 -0
  352. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  353. package/dist/ripgrep-VHJQQ55W.js +9 -0
  354. package/dist/rpc-NPS3PU4O.cjs +3730 -0
  355. package/dist/rpc-S3DGW6KV.js +3730 -0
  356. package/dist/search-CPX4PWHP.js +20 -0
  357. package/dist/search-VUF3M4N3.cjs +20 -0
  358. package/dist/{sessions-6GWEBMKS.js → sessions-IYAXMK23.js} +2 -2
  359. package/dist/sessions-JODKER5D.cjs +10 -0
  360. package/dist/{settings-BXR6SBJP.js → settings-55BNW6BF.js} +11 -8
  361. package/dist/settings-BKTS7OMC.cjs +33 -0
  362. package/dist/setup-IRC5HQG2.js +29 -0
  363. package/dist/setup-MMQ7TWOP.cjs +29 -0
  364. package/dist/share-6JRQECAH.cjs +17 -0
  365. package/dist/share-YM5MJKMO.js +17 -0
  366. package/dist/{skills-PG542VEB.cjs → skills-GGMZOVIE.cjs} +13 -10
  367. package/dist/skills-LWSOKOSH.cjs +29 -0
  368. package/dist/{skills-ZZCIAS7C.js → skills-MVIZNHT4.js} +12 -9
  369. package/dist/skills-VWOMV3CR.js +29 -0
  370. package/dist/{skills-install-SRC3Z2MS.js → skills-install-QBA5RCV6.js} +21 -70
  371. package/dist/{skills-install-67DOBPJC.cjs → skills-install-VTAMCNNY.cjs} +34 -83
  372. package/dist/skills-new-GPL46YV2.js +18 -0
  373. package/dist/skills-new-L5BEZN5V.cjs +18 -0
  374. package/dist/slashCommands-FBPCIWM5.cjs +95 -0
  375. package/dist/slashCommands-FCWY5DXW.js +95 -0
  376. package/dist/status-3B5SDZPL.js +17 -0
  377. package/dist/status-TTGRF6NC.cjs +17 -0
  378. package/dist/summarizer-DGPHE5IQ.js +17 -0
  379. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  380. package/dist/sync-77CXVVTK.cjs +21 -0
  381. package/dist/{sync-VU2NSJ4O.js → sync-7BILIQHP.js} +3 -3
  382. package/dist/sync-7OKF6636.js +21 -0
  383. package/dist/sync-EH4K5U3N.cjs +40 -0
  384. package/dist/{teammate-SD26GR37.js → teammate-GZQSCIMS.js} +28 -7
  385. package/dist/{teammate-SXRVXNQV.cjs → teammate-J6PHGL23.cjs} +29 -8
  386. package/dist/theme-64BYGJ57.cjs +21 -0
  387. package/dist/theme-YJE6HEON.js +21 -0
  388. package/dist/tools-3PPTTKFV.js +9 -0
  389. package/dist/tools-THIQA7WC.cjs +9 -0
  390. package/dist/ui/questionModal.cjs +8 -5
  391. package/dist/ui/questionModal.js +7 -4
  392. package/dist/undo-PRTEGL2J.cjs +10 -0
  393. package/dist/{undo-OL2EDBRY.js → undo-SZEHLX7X.js} +2 -2
  394. package/dist/web-3BA2WV37.cjs +37 -0
  395. package/dist/web-6FYGBX5K.js +37 -0
  396. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  397. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  398. package/dist/yolo-GF2YD7ZI.js +9 -0
  399. package/dist/yolo-OGDA7HNC.cjs +9 -0
  400. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  401. package/dist/yoloMode-4JOOSU26.js +17 -0
  402. package/package.json +46 -49
  403. package/dist/AgentRegistry-HRPN6ZOF.cjs +0 -10
  404. package/dist/CommunitySkillsCache-KE435RAR.cjs +0 -8
  405. package/dist/GitHubRegistryFetcher-I45SESIL.cjs +0 -7
  406. package/dist/LearnAdvisor-FLBA6FDD.js +0 -9
  407. package/dist/LearnAdvisor-GG3CXQF3.cjs +0 -9
  408. package/dist/MemoryManager-2LQPIYVE.cjs +0 -8
  409. package/dist/PermissionManager-X57BXHJ6.cjs +0 -11
  410. package/dist/ProviderFactory-KPJOGQWF.cjs +0 -9
  411. package/dist/SessionManager-YBJAZXNO.cjs +0 -10
  412. package/dist/SkillsRegistry-7O72A6TZ.cjs +0 -9
  413. package/dist/SubAgent-JT4HZHN7.js +0 -11
  414. package/dist/SubAgent-VPNYDWAU.cjs +0 -11
  415. package/dist/SyncApiClient-HQXJL5BT.cjs +0 -11
  416. package/dist/about-4DB5KTHW.js +0 -12
  417. package/dist/about-LXAOXZFT.cjs +0 -12
  418. package/dist/actionExecutor-23JB2WUC.js +0 -19
  419. package/dist/actionExecutor-X5UEZSKH.cjs +0 -19
  420. package/dist/add-dir-YC37DMSF.cjs +0 -10
  421. package/dist/agents-YF3BSUU5.js +0 -12
  422. package/dist/agents-ZOUHPMYR.cjs +0 -12
  423. package/dist/agents-new-HSH4GQPG.js +0 -14
  424. package/dist/agents-new-VYUDOCE7.cjs +0 -14
  425. package/dist/autoSkill-X5W52WOE.cjs +0 -20
  426. package/dist/automode-SJGM7VEI.cjs +0 -10
  427. package/dist/chunk-ALYU6VTM.js +0 -105
  428. package/dist/chunk-B53A2NM2.js +0 -2030
  429. package/dist/chunk-BJXSNT46.js +0 -100
  430. package/dist/chunk-CB4E2T5N.cjs +0 -312
  431. package/dist/chunk-DNUOXBHL.js +0 -539
  432. package/dist/chunk-EFX2QSZX.cjs +0 -33
  433. package/dist/chunk-H2ZRHQQV.js +0 -33
  434. package/dist/chunk-HNRPK5MY.cjs +0 -85
  435. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  436. package/dist/chunk-JJLYWH5Y.cjs +0 -100
  437. package/dist/chunk-LWUJFGOZ.js +0 -115
  438. package/dist/chunk-MERYP6AM.cjs +0 -539
  439. package/dist/chunk-MZAPWNAC.cjs +0 -207
  440. package/dist/chunk-PGESAU2W.cjs +0 -2030
  441. package/dist/chunk-SYVYLZZF.cjs +0 -24
  442. package/dist/chunk-SZOLA6FR.js +0 -111
  443. package/dist/chunk-VWDHR4HV.js +0 -168
  444. package/dist/chunk-Y45G6ZO5.cjs +0 -168
  445. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  446. package/dist/chunk-ZYVS43MU.js +0 -312
  447. package/dist/clear-GK4IEUUS.cjs +0 -12
  448. package/dist/communityInstaller-XXC7RLE4.cjs +0 -19
  449. package/dist/completion-HWABSAEL.js +0 -14
  450. package/dist/completion-IUUVQG4D.cjs +0 -14
  451. package/dist/config-HF7WOLZF.cjs +0 -18
  452. package/dist/constants-PEO3P2SJ.cjs +0 -21
  453. package/dist/export-QJAV2FCZ.js +0 -12
  454. package/dist/export-XSRFXGWU.cjs +0 -12
  455. package/dist/feedback-4TCIL3ML.cjs +0 -15
  456. package/dist/feedback-SJ6VVEY3.js +0 -15
  457. package/dist/filesystem-W56QZUJF.cjs +0 -10
  458. package/dist/help-ISBVQL3S.cjs +0 -12
  459. package/dist/history-XQ4GTSFU.cjs +0 -14
  460. package/dist/hooks-CJNKJ5PF.js +0 -13
  461. package/dist/hooks-UTMBTAXT.cjs +0 -13
  462. package/dist/i18n-N7QQ7A5M.cjs +0 -33
  463. package/dist/ide-RTA4UJV4.js +0 -12
  464. package/dist/ide-VWVOLIFF.cjs +0 -12
  465. package/dist/immediateCommandRouter-BW34JNXL.js +0 -9
  466. package/dist/immediateCommandRouter-SHOVNB5X.cjs +0 -9
  467. package/dist/import-ZLJVONXH.cjs +0 -10
  468. package/dist/init-TBKAB4LZ.cjs +0 -10
  469. package/dist/language-MDSHEXHB.cjs +0 -18
  470. package/dist/language-PXTQSHIG.js +0 -18
  471. package/dist/learn-623TW5EK.cjs +0 -20
  472. package/dist/learn-BCPV7GM2.js +0 -20
  473. package/dist/localProjectPermissions-BHQXEWZJ.cjs +0 -18
  474. package/dist/localProjectPermissions-GMOUYQM6.js +0 -18
  475. package/dist/login-QMVEETWJ.js +0 -20
  476. package/dist/login-QYMXAL3K.cjs +0 -20
  477. package/dist/logout-2CMTDAOJ.js +0 -18
  478. package/dist/logout-ZOHVZAUK.cjs +0 -18
  479. package/dist/mcp-IUVKK65S.js +0 -18
  480. package/dist/mcp-TXC7PYG3.cjs +0 -18
  481. package/dist/memory-WRIHDEPK.cjs +0 -10
  482. package/dist/model-RLP75SF5.cjs +0 -10
  483. package/dist/new-HLSFL6A4.cjs +0 -12
  484. package/dist/permissions-GP6FTGZ2.js +0 -13
  485. package/dist/permissions-O6EKKPOG.cjs +0 -13
  486. package/dist/plan-MCAXDIM2.cjs +0 -11
  487. package/dist/quit-TQX6GXA5.cjs +0 -10
  488. package/dist/repeat-BSPS5TWD.cjs +0 -13
  489. package/dist/resume-2GOPDLL4.cjs +0 -13
  490. package/dist/resume-37IUVDA6.js +0 -13
  491. package/dist/search-7KUSHIBL.cjs +0 -17
  492. package/dist/search-OJGDRIMA.js +0 -17
  493. package/dist/sessions-CYYCHSQG.cjs +0 -10
  494. package/dist/settings-2D7CAO66.cjs +0 -30
  495. package/dist/share-BXQY5IQU.js +0 -14
  496. package/dist/share-OSFXZBGS.cjs +0 -14
  497. package/dist/skills-FL6O6AOM.cjs +0 -26
  498. package/dist/skills-PNKQZRNK.js +0 -26
  499. package/dist/skills-new-XFMEHHIF.cjs +0 -15
  500. package/dist/skills-new-ZNZPHUKS.js +0 -15
  501. package/dist/slashCommands-LLCNPK3X.js +0 -76
  502. package/dist/slashCommands-RXZZS6RE.cjs +0 -76
  503. package/dist/status-BCECUJXT.cjs +0 -11
  504. package/dist/status-EFO7MQU3.js +0 -11
  505. package/dist/sync-IJYJ6KKM.js +0 -18
  506. package/dist/sync-LFT6SBPF.cjs +0 -18
  507. package/dist/sync-U7SDPBNZ.cjs +0 -40
  508. package/dist/theme-AWBHSG7J.cjs +0 -18
  509. package/dist/theme-TQLBPJ2E.js +0 -18
  510. package/dist/undo-IBBGP7A2.cjs +0 -10
@@ -0,0 +1,59 @@
1
+ import {
2
+ t
3
+ } from "./chunk-CBFH2J3O.js";
4
+
5
+ // src/commands/permissions.ts
6
+ import chalk from "chalk";
7
+ function renderBold(text) {
8
+ return typeof chalk.bold === "function" ? chalk.bold(text) : text;
9
+ }
10
+ function renderSection(title, section) {
11
+ console.log(renderBold(title));
12
+ console.log(chalk.gray(section.path));
13
+ if (section.allowList.length === 0) {
14
+ console.log(chalk.gray(" No AllowList entries"));
15
+ } else {
16
+ console.log(chalk.green(" AllowList"));
17
+ section.allowList.forEach((pattern, index) => {
18
+ console.log(chalk.green(` ${index + 1}. ${pattern}`));
19
+ });
20
+ }
21
+ if (section.denyList.length === 0) {
22
+ console.log(chalk.gray(" No DenyList entries"));
23
+ } else {
24
+ console.log(chalk.red(" DenyList"));
25
+ section.denyList.forEach((pattern, index) => {
26
+ console.log(chalk.red(` ${index + 1}. ${pattern}`));
27
+ });
28
+ }
29
+ console.log();
30
+ }
31
+ async function permissions(ctx) {
32
+ const snapshot = ctx.permissionManager.getPermissionSnapshot(ctx.configPath ?? "(user config unknown)");
33
+ console.log();
34
+ console.log(chalk.bold.cyan(t("commands.permissions.title")));
35
+ console.log(chalk.gray("\u2500".repeat(50)));
36
+ console.log(chalk.gray(t("commands.permissions.mode", { mode: snapshot.mode || "interactive" })));
37
+ console.log(chalk.gray(`Remember session decisions: ${snapshot.rememberSession ? "Yes" : "No"}`));
38
+ console.log();
39
+ renderSection("Session", snapshot.session);
40
+ renderSection("Project", snapshot.project);
41
+ renderSection("User", snapshot.user);
42
+ renderSection("Effective", snapshot.effective);
43
+ return null;
44
+ }
45
+ var metadata = {
46
+ command: "/permissions",
47
+ description: t("commands.permissions.description"),
48
+ implemented: true
49
+ };
50
+
51
+ export {
52
+ permissions,
53
+ metadata
54
+ };
55
+ /**
56
+ * @license
57
+ * Copyright 2025 Autohand AI LLC
58
+ * SPDX-License-Identifier: Apache-2.0
59
+ */
@@ -2,6 +2,8 @@
2
2
  var DEFAULT_REPO = "autohandai/community-skills";
3
3
  var DEFAULT_BRANCH = "main";
4
4
  var GitHubRegistryFetcher = class {
5
+
6
+
5
7
  constructor(config = {}) {
6
8
  const repo = config.repo || DEFAULT_REPO;
7
9
  const branch = config.branch || DEFAULT_BRANCH;
@@ -0,0 +1,114 @@
1
+ // src/core/immediateCommandRouter.ts
2
+ import chalk from "chalk";
3
+ function renderTerminalMarkdown(text) {
4
+ if (!text) return text;
5
+ let result = text.replace(
6
+ /\*\*([^*]+)\*\*/g,
7
+ (_match, content) => chalk.bold(content)
8
+ );
9
+ result = result.replace(
10
+ /(^|[\s(])_([^_]+)_(?=[\s),.:;!?]|$)/gm,
11
+ (_match, before, content) => `${before}${chalk.italic(content)}`
12
+ );
13
+ return result;
14
+ }
15
+ function routeOutput(text, opts) {
16
+ const rendered = renderTerminalMarkdown(text);
17
+ if (opts.persistentInputActiveTurn && !opts.terminalRegionsDisabled) {
18
+ opts.writeAbove(`${rendered}
19
+ `);
20
+ } else {
21
+ console.log(rendered);
22
+ }
23
+ }
24
+ function createBufferedRouteOutput(opts, transform = (text) => text) {
25
+ let pending = "";
26
+ const flushLine = (line) => {
27
+ routeOutput(transform(line), opts);
28
+ };
29
+ return {
30
+ push(chunk) {
31
+ pending += chunk;
32
+ while (true) {
33
+ const newlineIndex = pending.indexOf("\n");
34
+ const carriageIndex = pending.indexOf("\r");
35
+ const boundaryCandidates = [newlineIndex, carriageIndex].filter((value) => value >= 0);
36
+ if (boundaryCandidates.length === 0) {
37
+ break;
38
+ }
39
+ const boundaryIndex = Math.min(...boundaryCandidates);
40
+ const boundaryWidth = pending[boundaryIndex] === "\r" && pending[boundaryIndex + 1] === "\n" ? 2 : 1;
41
+ const line = pending.slice(0, boundaryIndex);
42
+ pending = pending.slice(boundaryIndex + boundaryWidth);
43
+ flushLine(line);
44
+ }
45
+ },
46
+ flush() {
47
+ if (!pending) {
48
+ return;
49
+ }
50
+ flushLine(pending);
51
+ pending = "";
52
+ }
53
+ };
54
+ }
55
+ function formatImmediateShellCommandHeader(command) {
56
+ return `You ran ${command}`;
57
+ }
58
+ function createImmediateShellCommandBlockWriter(command, opts) {
59
+ let pending = "";
60
+ let pendingStream = "stdout";
61
+ let lineIndex = 0;
62
+ routeOutput(chalk.cyan(formatImmediateShellCommandHeader(command)), opts);
63
+ const flushLine = (line, stream) => {
64
+ const prefix = lineIndex === 0 ? " \u2514 " : " ";
65
+ const renderedLine = `${prefix}${line}`;
66
+ routeOutput(stream === "stderr" ? chalk.red(renderedLine) : renderedLine, opts);
67
+ lineIndex += 1;
68
+ };
69
+ const push = (chunk, stream) => {
70
+ pendingStream = stream;
71
+ pending += chunk;
72
+ while (true) {
73
+ const newlineIndex = pending.indexOf("\n");
74
+ const carriageIndex = pending.indexOf("\r");
75
+ const boundaryCandidates = [newlineIndex, carriageIndex].filter((value) => value >= 0);
76
+ if (boundaryCandidates.length === 0) {
77
+ break;
78
+ }
79
+ const boundaryIndex = Math.min(...boundaryCandidates);
80
+ const boundaryWidth = pending[boundaryIndex] === "\r" && pending[boundaryIndex + 1] === "\n" ? 2 : 1;
81
+ const line = pending.slice(0, boundaryIndex);
82
+ pending = pending.slice(boundaryIndex + boundaryWidth);
83
+ flushLine(line, stream);
84
+ }
85
+ };
86
+ return {
87
+ pushStdout(chunk) {
88
+ push(chunk, "stdout");
89
+ },
90
+ pushStderr(chunk) {
91
+ push(chunk, "stderr");
92
+ },
93
+ flush() {
94
+ if (!pending) {
95
+ return;
96
+ }
97
+ flushLine(pending, pendingStream);
98
+ pending = "";
99
+ }
100
+ };
101
+ }
102
+
103
+ export {
104
+ renderTerminalMarkdown,
105
+ routeOutput,
106
+ createBufferedRouteOutput,
107
+ formatImmediateShellCommandHeader,
108
+ createImmediateShellCommandBlockWriter
109
+ };
110
+ /**
111
+ * @license
112
+ * Copyright 2025 Autohand AI LLC
113
+ * SPDX-License-Identifier: Apache-2.0
114
+ */
@@ -0,0 +1,33 @@
1
+ // src/utils/asciiArt.ts
2
+ var ASCII_FRIEND = [
3
+ "\u2880\u2874\u281B\u281B\u283B\u28F7\u2844\u2800\u28E0\u2876\u281F\u281B\u283B\u28F6\u2844\u2880\u28F4\u287E\u281B\u281B\u28BF\u28E6\u2800\u2880\u28F4\u281E\u281B\u281B\u2836\u2840",
4
+ "\u284E\u2800\u28B0\u28F6\u2846\u2808\u28FF\u28F4\u28FF\u2801\u28F4\u28F6\u2844\u2818\u28FF\u28FE\u284F\u2880\u28F6\u28E6\u2800\u28BB\u2847\u28FF\u2803\u28A0\u28F6\u2846\u2800\u28B9",
5
+ "\u28A7\u2800\u2818\u281B\u2803\u28A0\u287F\u2819\u28FF\u2840\u2819\u281B\u2803\u28F0\u287F\u28BB\u28E7\u2808\u281B\u281B\u2880\u28FE\u2807\u28BB\u28C6\u2808\u281B\u280B\u2800\u287C",
6
+ "\u2808\u283B\u28B6\u28F6\u287E\u281F\u2801\u2800\u2818\u283F\u28B6\u28F6\u287E\u281F\u2801\u2800\u2819\u2837\u28F6\u28F6\u283F\u280B\u2800\u2808\u283B\u2837\u28F6\u2876\u281A\u2801",
7
+ "\u2880\u28F4\u283F\u283F\u2837\u28E6\u2840\u2800\u28E0\u28F6\u283F\u283B\u28B7\u28E6\u2840\u2800\u28E0\u287E\u281F\u283F\u28F6\u28C4\u2800\u2880\u28F4\u287E\u283F\u283F\u28F6\u28C4",
8
+ "\u287E\u2803\u28A0\u28E4\u2844\u2818\u28FF\u28E0\u28FF\u2801\u28E0\u28E4\u2844\u2839\u28F7\u28FC\u284F\u2880\u28E4\u28E4\u2808\u28BF\u2846\u28FE\u280F\u2880\u28E4\u28C4\u2808\u28BF",
9
+ "\u28A7\u2840\u2838\u283F\u2807\u2880\u28FF\u283A\u28FF\u2840\u283B\u283F\u2803\u28B0\u28FF\u28BF\u28C7\u2808\u283F\u283F\u2800\u28FC\u2847\u28BF\u28C7\u2818\u283F\u2807\u2800\u28F8",
10
+ "\u2808\u28BF\u28E6\u28E4\u28F4\u287F\u2803\u2800\u2819\u28B7\u28E6\u28E4\u28F6\u287F\u2801\u2808\u283B\u28F7\u28E4\u28E4\u287E\u281B\u2800\u2808\u28BF\u28E6\u28E4\u28E4\u2834\u2801"
11
+ ].join("\n");
12
+ var LOGO_LINES = [
13
+ "\u2880\u2874\u281B\u281B\u283B\u28F7\u2844\u2800\u28E0\u2876\u281F\u281B\u283B\u28F6\u2844\u2880\u28F4\u287E\u281B\u281B\u28BF\u28E6\u2800\u2880\u28F4\u281E\u281B\u281B\u2836\u2840 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588",
14
+ "\u284E\u2800\u28B0\u28F6\u2846\u2808\u28FF\u28F4\u28FF\u2801\u28F4\u28F6\u2844\u2818\u28FF\u28FE\u284F\u2880\u28F6\u28E6\u2800\u28BB\u2847\u28FF\u2803\u28A0\u28F6\u2846\u2800\u28B9 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588",
15
+ "\u28A7\u2800\u2818\u281B\u2803\u28A0\u287F\u2819\u28FF\u2840\u2819\u281B\u2803\u28F0\u287F\u28BB\u28E7\u2808\u281B\u281B\u2880\u28FE\u2807\u28BB\u28C6\u2808\u281B\u280B\u2800\u287C \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588",
16
+ "\u2808\u283B\u28B6\u28F6\u287E\u281F\u2801\u2800\u2818\u283F\u28B6\u28F6\u287E\u281F\u2801\u2800\u2819\u2837\u28F6\u28F6\u283F\u280B\u2800\u2808\u283B\u2837\u28F6\u2876\u281A\u2801 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588",
17
+ "\u2880\u28F4\u283F\u283F\u2837\u28E6\u2840\u2800\u28E0\u28F6\u283F\u283B\u28B7\u28E6\u2840\u2800\u28E0\u287E\u281F\u283F\u28F6\u28C4\u2800\u2880\u28F4\u287E\u283F\u283F\u28F6\u28C4 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588",
18
+ "\u287E\u2803\u28A0\u28E4\u2844\u2818\u28FF\u28E0\u28FF\u2801\u28E0\u28E4\u2844\u2839\u28F7\u28FC\u284F\u2880\u28E4\u28E4\u2808\u28BF\u2846\u28FE\u280F\u2880\u28E4\u28C4\u2808\u28BF",
19
+ "\u28A7\u2840\u2838\u283F\u2807\u2880\u28FF\u283A\u28FF\u2840\u283B\u283F\u2803\u28B0\u28FF\u28BF\u28C7\u2808\u283F\u283F\u2800\u28FC\u2847\u28BF\u28C7\u2818\u283F\u2807\u2800\u28F8",
20
+ "\u2808\u28BF\u28E6\u28E4\u28F4\u287F\u2803\u2800\u2819\u28B7\u28E6\u28E4\u28F6\u287F\u2801\u2808\u283B\u28F7\u28E4\u28E4\u287E\u281B\u2800\u2808\u28BF\u28E6\u28E4\u28E4\u2834\u2801"
21
+ ];
22
+
23
+ export {
24
+ ASCII_FRIEND,
25
+ LOGO_LINES
26
+ };
27
+ /**
28
+ * @license
29
+ * Copyright 2025 Autohand AI LLC
30
+ * SPDX-License-Identifier: Apache-2.0
31
+ *
32
+ * Centralized ASCII artwork for the CLI
33
+ */
@@ -0,0 +1,29 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
4
+
5
+ // src/commands/model.ts
6
+ async function model(ctx) {
7
+ await _optionalChain([ctx, 'access', _ => _.onBeforeModal, 'optionalCall', _2 => _2()]);
8
+ try {
9
+ await ctx.promptModelSelection();
10
+ return null;
11
+ } finally {
12
+ await _optionalChain([ctx, 'access', _3 => _3.onAfterModal, 'optionalCall', _4 => _4()]);
13
+ }
14
+ }
15
+ var metadata = {
16
+ command: "/model",
17
+ description: _chunkCHI52KFRcjs.t.call(void 0, "commands.model.description"),
18
+ implemented: true
19
+ };
20
+
21
+
22
+
23
+
24
+ exports.model = model; exports.metadata = metadata;
25
+ /**
26
+ * @license
27
+ * Copyright 2025 Autohand AI LLC
28
+ * SPDX-License-Identifier: Apache-2.0
29
+ */
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// package.json
2
2
  var package_default = {
3
3
  name: "autohand-cli",
4
- version: "0.8.3",
4
+ version: "0.9.0",
5
5
  license: "Apache-2.0",
6
- description: "Autohand interactive coding agent CLI powered by LLMs.",
6
+ description: "Autohand Code CLI is a fast, terminal-native AI coding agent for planning, editing, testing, and automating software work.",
7
7
  repository: {
8
8
  type: "git",
9
9
  url: "https://github.com/autohandai/code-cli.git"
@@ -22,14 +22,16 @@ var package_default = {
22
22
  "assets"
23
23
  ],
24
24
  scripts: {
25
- postinstall: "node scripts/fix-ansi-styles.js || true && node scripts/fix-ink-devtools.js || true && node scripts/fix-yoga-wasm.js || true",
26
- go: 'bun run build && ./install-local.sh && echo "COMPLETED"',
25
+ go: './install-local.sh && echo "COMPLETED"',
27
26
  build: "tsup",
28
- dev: "bun src/index.ts",
27
+ dev: 'env -i PATH="/Users/igorcosta/.bun/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" HOME="$HOME" bun src/index.ts',
29
28
  typecheck: "tsc --noEmit",
30
29
  lint: "eslint .",
31
- proof: "bun run lint && bun run typecheck && bun run test",
32
- test: "vitest run",
30
+ proof: "eslint . && tsc --noEmit && node --max-old-space-size=8192 ./node_modules/vitest/vitest.mjs run",
31
+ test: "node --max-old-space-size=8192 ./node_modules/vitest/vitest.mjs run",
32
+ "test:ci": "node --max-old-space-size=8192 ./node_modules/vitest/vitest.mjs run --pool=threads --exclude 'tests/tuistory/**/*.tuistory.test.ts'",
33
+ "test:tuistory": "node --max-old-space-size=4096 ./node_modules/vitest/vitest.mjs run --config vitest.tuistory.config.ts",
34
+ "proof:build-tuistory": "tsup && node --max-old-space-size=4096 ./node_modules/vitest/vitest.mjs run --config vitest.tuistory.config.ts",
33
35
  start: "node dist/index.js",
34
36
  "compile:macos-arm64": "bun build ./src/index.ts --compile --target=bun-darwin-arm64 --outfile ./binaries/autohand-macos-arm64",
35
37
  "compile:macos-x64": "bun build ./src/index.ts --compile --target=bun-darwin-x64 --outfile ./binaries/autohand-macos-x64",
@@ -44,65 +46,60 @@ var package_default = {
44
46
  "cli",
45
47
  "llm",
46
48
  "agent",
49
+ "agentic",
47
50
  "autohand"
48
51
  ],
49
52
  engines: {
50
- node: ">=18.17.0"
53
+ node: ">=22.0.0"
51
54
  },
52
55
  dependencies: {
53
- "@agentclientprotocol/sdk": "0.12.0",
56
+ "@agentclientprotocol/sdk": "0.19.1",
57
+ "@ff-labs/fff-bun": "0.6.4",
54
58
  chalk: "^5.6.2",
55
- commander: "^14.0.2",
56
- diff: "^8.0.2",
57
- dotenv: "^17.2.3",
58
- "fs-extra": "^11.3.2",
59
- ignore: "^5.3.1",
60
- ink: "^4.4.1",
59
+ commander: "^14.0.3",
60
+ diff: "^9.0.0",
61
+ dotenv: "^17.4.2",
62
+ "fs-extra": "^11.3.4",
63
+ ignore: "^7.0.5",
64
+ ink: "^7.0.1",
61
65
  "ink-spinner": "^5.0.0",
62
- minimatch: "^10.1.1",
66
+ minimatch: "^10.2.5",
63
67
  "node-notifier": "^10.0.1",
64
- open: "^10.1.0",
65
- ora: "^9.0.0",
66
- react: "^18.2.0",
68
+ "node-pty": "^1.1.0",
69
+ open: "^11.0.0",
70
+ ora: "^9.4.0",
71
+ react: "^19.2.5",
72
+ sharp: "^0.34.5",
67
73
  "string-width": "^8.2.0",
68
- "terminal-link": "^3.0.0",
69
- yaml: "^2.8.2",
70
- zod: "^4.1.12"
74
+ "terminal-link": "^5.0.0",
75
+ yaml: "^2.8.3",
76
+ zod: "^4.3.6"
71
77
  },
78
+ trustedDependencies: [
79
+ "node-pty",
80
+ "bun"
81
+ ],
72
82
  devDependencies: {
73
83
  "@types/diff": "^8.0.0",
74
84
  "@types/fs-extra": "^11.0.4",
75
- "@types/minimatch": "^6.0.0",
76
- "@types/node": "^24.10.1",
85
+ "@types/node": "^25.6.0",
77
86
  "@types/node-notifier": "^8.0.5",
78
- "@types/react": "^18.3.3",
79
- "@types/terminal-link": "^1.2.0",
80
- "@typescript-eslint/eslint-plugin": "^8.48.1",
81
- "@typescript-eslint/parser": "^8.48.1",
82
- eslint: "^9.39.1",
83
- "ink-testing-library": "^3.0.0",
84
- memfs: "^4.51.1",
85
- "react-devtools-core": "^7.0.1",
86
- "strip-ansi": "^7.1.2",
87
+ "@types/react": "^19.2.5",
88
+ "@typescript-eslint/eslint-plugin": "^8.59.0",
89
+ "@typescript-eslint/parser": "^8.59.0",
90
+ eslint: "^10.2.1",
91
+ "ink-testing-library": "^4.0.0",
92
+ memfs: "^4.57.2",
93
+ "node-gyp": "^12.3.0",
94
+ "strip-ansi": "^7.2.0",
87
95
  tsup: "^8.5.1",
88
- tsx: "^4.20.6",
89
- typescript: "^5.9.3",
90
- vitest: "^1.6.0"
96
+ tsx: "^4.21.0",
97
+ tuistory: "0.4.0",
98
+ typescript: "^6.0.3",
99
+ vitest: "^4.1.5"
91
100
  },
92
101
  overrides: {
93
- ink: {
94
- "slice-ansi": {
95
- "ansi-styles": "^6.2.1"
96
- },
97
- "wrap-ansi": {
98
- "ansi-styles": "^6.2.1"
99
- },
100
- "cli-truncate": {
101
- "slice-ansi": {
102
- "ansi-styles": "^6.2.1"
103
- }
104
- }
105
- }
102
+ "ansi-styles": "^6.2.3"
106
103
  }
107
104
  };
108
105
 
@@ -0,0 +1,85 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkJJ4KA7HKcjs = require('./chunk-JJ4KA7HK.cjs');
4
+
5
+
6
+
7
+
8
+ var _chunk46C73ZKKcjs = require('./chunk-46C73ZKK.cjs');
9
+
10
+
11
+
12
+
13
+ var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
14
+
15
+ // src/commands/setup.ts
16
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
17
+ var metadata = {
18
+ command: "/setup",
19
+ description: _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.description"), () => ( "Run the setup wizard to configure or reconfigure Autohand")),
20
+ implemented: true
21
+ };
22
+ async function setup(ctx) {
23
+ if (ctx.isNonInteractive) {
24
+ return _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.interactiveOnly"), () => ( "Setup requires an interactive terminal. Use the --setup CLI flag instead."));
25
+ }
26
+ const { locale: detectedLocale } = _chunkCHI52KFRcjs.detectLocale.call(void 0, );
27
+ const locale = _nullishCoalesce(detectedLocale, () => ( "en"));
28
+ await _chunkCHI52KFRcjs.initI18n.call(void 0, locale);
29
+ const config = await _chunk46C73ZKKcjs.loadConfig.call(void 0, _optionalChain([ctx, 'access', _ => _.config, 'optionalAccess', _2 => _2.configPath]), ctx.workspaceRoot);
30
+ const workspaceRoot = _chunk46C73ZKKcjs.resolveWorkspaceRoot.call(void 0, config, ctx.workspaceRoot);
31
+ if (ctx.eventEmitter) {
32
+ ctx.eventEmitter.emit("setup:started", {
33
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
34
+ locale,
35
+ workspaceRoot
36
+ });
37
+ }
38
+ const wizard = new (0, _chunkJJ4KA7HKcjs.SetupWizard)(workspaceRoot, config);
39
+ const result = await wizard.run({ force: true, skipWelcome: false });
40
+ if (result.cancelled) {
41
+ if (ctx.eventEmitter) {
42
+ ctx.eventEmitter.emit("setup:cancelled", {
43
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
44
+ step: "user_cancelled"
45
+ });
46
+ }
47
+ return _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.cancelled"), () => ( "Setup cancelled."));
48
+ }
49
+ if (!result.success) {
50
+ if (ctx.eventEmitter) {
51
+ ctx.eventEmitter.emit("setup:error", {
52
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
53
+ error: "setup_failed"
54
+ });
55
+ }
56
+ return _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.failed"), () => ( "Setup failed. Please try again."));
57
+ }
58
+ const newConfig = { ...config, ...result.config };
59
+ await _chunk46C73ZKKcjs.saveConfig.call(void 0, newConfig);
60
+ if (ctx.eventEmitter) {
61
+ const provider = result.config.provider;
62
+ const providerConfig = provider && result.config[provider];
63
+ const model = providerConfig && typeof providerConfig === "object" && "model" in providerConfig ? providerConfig.model : void 0;
64
+ ctx.eventEmitter.emit("setup:complete", {
65
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
66
+ success: true,
67
+ provider,
68
+ model,
69
+ skippedSteps: result.skippedSteps,
70
+ agentsFileCreated: result.agentsFileCreated
71
+ });
72
+ }
73
+ console.log(_chalk2.default.green(_nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.complete"), () => ( "\nSetup complete!"))));
74
+ return null;
75
+ }
76
+
77
+
78
+
79
+
80
+ exports.metadata = metadata; exports.setup = setup;
81
+ /**
82
+ * @license
83
+ * Copyright 2025 Autohand AI LLC
84
+ * SPDX-License-Identifier: Apache-2.0
85
+ */
@@ -1,6 +1,6 @@
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
- var _chunkNAJ4IZKDcjs = require('./chunk-NAJ4IZKD.cjs');
3
+ var _chunkOPNI6O7Fcjs = require('./chunk-OPNI6O7F.cjs');
4
4
 
5
5
  // src/skills/learnPrompts.ts
6
6
  function buildLearnSystemPrompt() {
@@ -139,7 +139,7 @@ Return ONLY the JSON object, no other text.`;
139
139
  }
140
140
  function buildLearnGenerationUserPrompt(analysis, gapAnalysis, lowScoringSkills) {
141
141
  const parts = [];
142
- parts.push(_chunkNAJ4IZKDcjs.buildSkillGenerationPrompt.call(void 0, analysis));
142
+ parts.push(_chunkOPNI6O7Fcjs.buildSkillGenerationPrompt.call(void 0, analysis));
143
143
  parts.push("");
144
144
  parts.push("## Context");
145
145
  parts.push("No existing community skills matched well for this project.");
@@ -165,6 +165,7 @@ function toKebabCase(name) {
165
165
  }
166
166
  var VALID_AUDIT_STATUSES = /* @__PURE__ */ new Set(["redundant", "outdated", "conflicting"]);
167
167
  var LearnAdvisor = class {
168
+
168
169
  constructor(llm) {
169
170
  this.llm = llm;
170
171
  }
@@ -1,16 +1,16 @@
1
- import {
2
- package_default
3
- } from "./chunk-SZOLA6FR.js";
4
1
  import {
5
2
  safePrompt
6
- } from "./chunk-6ZCULLCA.js";
3
+ } from "./chunk-62RTC3XX.js";
4
+ import {
5
+ package_default
6
+ } from "./chunk-3PXKRVCW.js";
7
7
  import {
8
8
  AUTOHAND_FILES,
9
9
  AUTOHAND_PATHS
10
- } from "./chunk-EGFT4PGW.js";
10
+ } from "./chunk-TWQDAUZU.js";
11
11
  import {
12
12
  t
13
- } from "./chunk-APIXPPMT.js";
13
+ } from "./chunk-CBFH2J3O.js";
14
14
 
15
15
  // src/commands/feedback.ts
16
16
  import fs from "fs-extra";
@@ -74,12 +74,12 @@ async function feedback(_ctx) {
74
74
  name: "rating",
75
75
  message: "How would you rate your experience?",
76
76
  choices: [
77
- { name: "5", message: "5 - Excellent" },
78
- { name: "4", message: "4 - Good" },
79
- { name: "3", message: "3 - Okay" },
80
- { name: "2", message: "2 - Poor" },
81
- { name: "1", message: "1 - Very Poor" },
82
- { name: "skip", message: "s - Skip rating" }
77
+ { name: "5", message: "Excellent" },
78
+ { name: "4", message: "Good" },
79
+ { name: "3", message: "Okay" },
80
+ { name: "2", message: "Poor" },
81
+ { name: "1", message: "Very Poor" },
82
+ { name: "skip", message: "Skip rating" }
83
83
  ]
84
84
  }
85
85
  ]);
@@ -87,24 +87,65 @@ async function feedback(_ctx) {
87
87
  console.log(chalk.gray("Feedback discarded."));
88
88
  return null;
89
89
  }
90
- const textAnswer = await safePrompt([
91
- {
92
- type: "input",
93
- name: "feedback",
94
- message: "What worked? What broke? (optional)"
95
- }
96
- ]);
97
- if (!textAnswer) {
98
- console.log(chalk.gray("Feedback discarded."));
90
+ if (ratingAnswer.rating === "skip") {
91
+ console.log(chalk.gray("Feedback skipped."));
99
92
  return null;
100
93
  }
101
- const npsScore = ratingAnswer.rating === "skip" ? 0 : parseInt(ratingAnswer.rating, 10);
102
- const freeformFeedback = textAnswer.feedback?.trim() || void 0;
94
+ const npsScore = parseInt(ratingAnswer.rating, 10);
95
+ let reason;
96
+ let improvement;
97
+ let recommend;
98
+ if (npsScore >= 4) {
99
+ const reasonAnswer = await safePrompt([
100
+ {
101
+ type: "input",
102
+ name: "reason",
103
+ message: "What do you like most about Autohand? (optional, press Enter to skip)"
104
+ }
105
+ ]);
106
+ if (!reasonAnswer) {
107
+ console.log(chalk.gray("Feedback discarded."));
108
+ return null;
109
+ }
110
+ reason = reasonAnswer.reason?.trim() || void 0;
111
+ const recommendAnswer = await safePrompt([
112
+ {
113
+ type: "select",
114
+ name: "recommend",
115
+ message: "Would you recommend Autohand to a colleague?",
116
+ choices: [
117
+ { name: "yes", message: "Yes" },
118
+ { name: "no", message: "No" }
119
+ ]
120
+ }
121
+ ]);
122
+ if (!recommendAnswer) {
123
+ console.log(chalk.gray("Feedback discarded."));
124
+ return null;
125
+ }
126
+ recommend = recommendAnswer.recommend === "yes";
127
+ } else {
128
+ const improvementAnswer = await safePrompt([
129
+ {
130
+ type: "input",
131
+ name: "improvement",
132
+ message: "What could we do better? (optional, press Enter to skip)"
133
+ }
134
+ ]);
135
+ if (!improvementAnswer) {
136
+ console.log(chalk.gray("Feedback discarded."));
137
+ return null;
138
+ }
139
+ improvement = improvementAnswer.improvement?.trim() || void 0;
140
+ }
103
141
  const now = (/* @__PURE__ */ new Date()).toISOString();
104
142
  const runtimeError = getLastRuntimeError();
105
143
  const deviceId = await getDeviceId();
106
144
  const payload = {
107
145
  npsScore,
146
+ recommend,
147
+ reason,
148
+ improvement,
108
149
  triggerType: "manual",
109
150
  timestamp: now,
110
151
  deviceId,
@@ -112,7 +153,6 @@ async function feedback(_ctx) {
112
153
  platform: process.platform,
113
154
  osVersion: os.release(),
114
155
  nodeVersion: process.version,
115
- freeformFeedback,
116
156
  env: {
117
157
  platform: `${process.platform}-${process.arch}`,
118
158
  node: process.version,
@@ -153,7 +193,7 @@ async function sendFeedbackToApi(payload, apiBaseUrl) {
153
193
  const controller = new AbortController();
154
194
  const timeoutId = setTimeout(() => controller.abort(), API_TIMEOUT);
155
195
  try {
156
- const response = await fetch(`${apiBaseUrl}/v1/feedback`, {
196
+ const response = await fetch(getFeedbackSubmitUrl(apiBaseUrl), {
157
197
  method: "POST",
158
198
  headers: {
159
199
  "Content-Type": "application/json",
@@ -181,6 +221,9 @@ async function sendFeedbackToApi(payload, apiBaseUrl) {
181
221
  function getFeedbackApiBaseUrl(ctx) {
182
222
  return process.env.AUTOHAND_API_URL?.trim() || ctx.config?.api?.baseUrl?.trim() || DEFAULT_API_BASE_URL;
183
223
  }
224
+ function getFeedbackSubmitUrl(apiBaseUrl) {
225
+ return `${apiBaseUrl.replace(/\/+$/, "")}/v1/feedback`;
226
+ }
184
227
  function formatFeedbackApiError(status, rawBody) {
185
228
  const body = (rawBody ?? "").replace(/\s+/g, " ").trim();
186
229
  if (!body) {