autohand-cli 0.7.8 → 0.7.10

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 (269) hide show
  1. package/README.md +19 -0
  2. package/dist/{AutomodeManager-YVCJXOMQ.js → AutomodeManager-NGRAO2MH.js} +35 -8
  3. package/dist/{AutomodeManager-HV6M7EAX.cjs → AutomodeManager-ZKQMBM4T.cjs} +35 -8
  4. package/dist/{CommunitySkillsCache-Q22FUAR5.js → CommunitySkillsCache-ILWHWE5P.js} +2 -2
  5. package/dist/CommunitySkillsCache-KHC6RUJW.cjs +7 -0
  6. package/dist/MemoryManager-6ZT7IDO5.cjs +7 -0
  7. package/dist/MemoryManager-AJGS5AKB.js +7 -0
  8. package/dist/PermissionManager-HG6W2DGU.cjs +10 -0
  9. package/dist/{PermissionManager-HATZKTRC.js → PermissionManager-U5OMGR3L.js} +3 -3
  10. package/dist/SessionManager-BJ2G6VV4.cjs +9 -0
  11. package/dist/{SessionManager-S5R6O3NU.js → SessionManager-ENPGYK5J.js} +2 -2
  12. package/dist/SkillsRegistry-6ZFOCT25.cjs +8 -0
  13. package/dist/{SkillsRegistry-R5WDM6T3.js → SkillsRegistry-C2SHOZ5D.js} +2 -2
  14. package/dist/{SyncApiClient-FAOMIZAP.js → SyncApiClient-AYXYSOJM.js} +1 -1
  15. package/dist/SyncApiClient-ID3KXEMA.cjs +10 -0
  16. package/dist/about-RGUM5QQ4.cjs +11 -0
  17. package/dist/about-VDR3SIHS.js +11 -0
  18. package/dist/add-dir-3BMVJ5H3.cjs +9 -0
  19. package/dist/{add-dir-PNU7AGKO.js → add-dir-RP2BL3JW.js} +2 -1
  20. package/dist/agents-JQ2PHCQB.js +10 -0
  21. package/dist/agents-RGSZ2BM3.cjs +10 -0
  22. package/dist/agents-new-LSJN2L2T.cjs +13 -0
  23. package/dist/agents-new-MZUEVKSK.js +13 -0
  24. package/dist/automode-DP3BMYJB.cjs +9 -0
  25. package/dist/{automode-QCRJSBRT.js → automode-XOF3U3OB.js} +2 -1
  26. package/dist/cc-2W6M7J45.cjs +8 -0
  27. package/dist/cc-UTTLESTY.js +8 -0
  28. package/dist/{chunk-B4ZPNXZE.cjs → chunk-34OGUMRO.cjs} +9 -5
  29. package/dist/chunk-3652ROFD.js +589 -0
  30. package/dist/{chunk-KNLBEUAV.cjs → chunk-3DQSBW4B.cjs} +10 -6
  31. package/dist/{chunk-XFPITUFJ.cjs → chunk-3S4DEIJP.cjs} +50 -8
  32. package/dist/{chunk-5MDDOGTD.cjs → chunk-3UNX56GC.cjs} +30 -37
  33. package/dist/chunk-46WX5IO2.cjs +499 -0
  34. package/dist/{chunk-OC5YDNFC.js → chunk-4ULBAYME.js} +42 -57
  35. package/dist/{chunk-VEDIYPWY.cjs → chunk-5BQ57AZC.cjs} +9 -9
  36. package/dist/{chunk-B5N5UAMO.cjs → chunk-5FZM7KLB.cjs} +13 -10
  37. package/dist/{chunk-JBKP2CLA.cjs → chunk-5NZA4UB4.cjs} +47 -47
  38. package/dist/{chunk-VPAN5H7Q.js → chunk-5Q3W4DEU.js} +43 -36
  39. package/dist/{chunk-VMMGT42E.cjs → chunk-65GTO4QM.cjs} +7 -3
  40. package/dist/{chunk-CXZEPTRI.js → chunk-6P3K4YUW.js} +6 -2
  41. package/dist/{chunk-MDWULS57.js → chunk-6UJMCWRY.js} +56 -33
  42. package/dist/chunk-73XIKTZL.js +124 -0
  43. package/dist/{chunk-23JQSCTO.js → chunk-7QNW24ZT.js} +8 -4
  44. package/dist/{chunk-XT4OSHSB.cjs → chunk-AEYOIPHD.cjs} +6 -2
  45. package/dist/chunk-ANUQFV43.cjs +589 -0
  46. package/dist/chunk-ATR3RORT.js +499 -0
  47. package/dist/{chunk-A6QBABQ7.js → chunk-B72CC4O6.js} +2 -2
  48. package/dist/{chunk-TAZJSKFD.js → chunk-BBIKQW66.js} +9 -5
  49. package/dist/{chunk-FFA4LDAO.cjs → chunk-BDIZGBDA.cjs} +8 -3
  50. package/dist/{chunk-3YEDXG6S.js → chunk-BG4OQUKP.js} +1 -1
  51. package/dist/{chunk-WIUGUR5T.js → chunk-BODVOW7B.js} +67 -16
  52. package/dist/{chunk-A552JHUJ.cjs → chunk-BZ73ZQTE.cjs} +34 -25
  53. package/dist/{chunk-YDOR2OCA.cjs → chunk-C22G4UE4.cjs} +27 -19
  54. package/dist/{chunk-GFJ6AETU.cjs → chunk-C2E3GJEE.cjs} +12 -9
  55. package/dist/{chunk-UL7YPRCU.js → chunk-C5SVIQG3.js} +10 -5
  56. package/dist/{chunk-6KMAJTU3.js → chunk-CUBYCLNL.js} +3 -2
  57. package/dist/{chunk-52MLYK5P.js → chunk-D2XFTCRP.js} +1 -1
  58. package/dist/{chunk-OBV3UUIL.js → chunk-DEAEO7RI.js} +1 -1
  59. package/dist/chunk-DMPVI3YK.cjs +400 -0
  60. package/dist/{chunk-C26EN22G.cjs → chunk-DUDDZRCS.cjs} +9 -5
  61. package/dist/{chunk-4RWTUT2Z.js → chunk-E7YL3AHT.js} +32 -23
  62. package/dist/{chunk-54GVL2SE.cjs → chunk-EAOEAQGF.cjs} +3 -2
  63. package/dist/{chunk-PU534KPO.cjs → chunk-EV53SLSB.cjs} +4 -4
  64. package/dist/{chunk-EDGV5BNH.js → chunk-F3EIOVSQ.js} +26 -33
  65. package/dist/{chunk-SFGJQPGC.cjs → chunk-FPHU2ES6.cjs} +56 -33
  66. package/dist/{chunk-G77ZY4QG.js → chunk-GD4AFYJ3.js} +1 -1
  67. package/dist/{chunk-PMMSDR44.cjs → chunk-GIZL57FE.cjs} +5 -1
  68. package/dist/{chunk-I4HVBWYF.js → chunk-GLAE5K5W.js} +7 -2
  69. package/dist/{chunk-4AMTDSQ3.cjs → chunk-HDSEJMWI.cjs} +6 -3
  70. package/dist/chunk-HLFZPN65.js +94 -0
  71. package/dist/{chunk-ZWS3KSMK.js → chunk-HQQ4NKER.js} +5 -2
  72. package/dist/{chunk-WBDPILKI.cjs → chunk-HVOBMOZ2.cjs} +6 -2
  73. package/dist/{chunk-MJFBVQHB.js → chunk-IPI3JXKP.js} +10 -7
  74. package/dist/chunk-IXFOH4OC.cjs +222 -0
  75. package/dist/chunk-JS7IPR7P.js +249 -0
  76. package/dist/{chunk-7TOHYAUF.cjs → chunk-KC5FPUOF.cjs} +2 -2
  77. package/dist/{chunk-7VW3A7DO.cjs → chunk-L42HTMMR.cjs} +2 -2
  78. package/dist/chunk-LGGZQTLM.cjs +209 -0
  79. package/dist/chunk-LOXOD4IS.cjs +8630 -0
  80. package/dist/chunk-MNCWB5F7.cjs +63 -0
  81. package/dist/{chunk-AVL4DKQO.js → chunk-MYNHJHDZ.js} +1 -1
  82. package/dist/{chunk-GDTZQSJ6.cjs → chunk-N4ZSG6JJ.cjs} +2 -2
  83. package/dist/chunk-NCC6ETZS.js +362 -0
  84. package/dist/chunk-NF7RIHJK.js +45 -0
  85. package/dist/{chunk-SYJLMBLP.cjs → chunk-NGBN2NGH.cjs} +77 -26
  86. package/dist/{chunk-SLISYSP4.cjs → chunk-NRORJRD4.cjs} +4 -4
  87. package/dist/{chunk-OTS4YFSZ.cjs → chunk-OKABWSWA.cjs} +7 -3
  88. package/dist/{chunk-KH7BCZJN.js → chunk-OLG7LZBD.js} +1 -1
  89. package/dist/{chunk-KZ7VMQTC.js → chunk-OMEH2EVE.js} +5 -1
  90. package/dist/{chunk-U5WIP4HS.js → chunk-P5VDZ6PV.js} +47 -5
  91. package/dist/{chunk-V5MTBGM4.cjs → chunk-PA2H2263.cjs} +6 -2
  92. package/dist/chunk-PGRH5Q77.cjs +249 -0
  93. package/dist/{chunk-DPJ3IIBB.js → chunk-PM62ZYXA.js} +18 -10
  94. package/dist/chunk-PNSRJT46.js +380 -0
  95. package/dist/{chunk-C3IFF3EH.cjs → chunk-PSED4Z4X.cjs} +43 -58
  96. package/dist/{chunk-EKY5PKQI.js → chunk-PWLLLJHU.js} +5 -1
  97. package/dist/{chunk-DOTAX65F.js → chunk-PYLR4J2D.js} +8 -4
  98. package/dist/{chunk-YWKZF2SA.js → chunk-QC6IUDDJ.js} +46 -46
  99. package/dist/{chunk-4M2GX7RH.cjs → chunk-QM7HZCQW.cjs} +11 -6
  100. package/dist/chunk-QRQ5EX7I.cjs +380 -0
  101. package/dist/{chunk-YDH2BMEN.js → chunk-QU64XI5X.js} +9 -6
  102. package/dist/{chunk-3L76MLO5.cjs → chunk-R7SDL3DJ.cjs} +27 -31
  103. package/dist/{chunk-WQSWU2QA.cjs → chunk-RJP3SZ7Q.cjs} +46 -255
  104. package/dist/{chunk-BAFJQUWR.js → chunk-RJXNNIFW.js} +18 -22
  105. package/dist/{chunk-YAGD43KA.cjs → chunk-S5G7OEN2.cjs} +47 -40
  106. package/dist/{chunk-2JPUEN44.cjs → chunk-SA4JOV4F.cjs} +61 -86
  107. package/dist/chunk-SAG6IY5Z.cjs +94 -0
  108. package/dist/chunk-TSV4LVHK.js +35 -0
  109. package/dist/{chunk-JHFH3N4U.cjs → chunk-TSY7JHIV.cjs} +2 -2
  110. package/dist/chunk-U23U52ZN.cjs +124 -0
  111. package/dist/chunk-UET7BDX2.js +8630 -0
  112. package/dist/chunk-ULQ6MDSJ.cjs +362 -0
  113. package/dist/{chunk-WH3D42BQ.js → chunk-UM4QEO36.js} +59 -84
  114. package/dist/chunk-VXCMGBXY.cjs +35 -0
  115. package/dist/chunk-WD5ZF6HE.js +63 -0
  116. package/dist/chunk-WH5RW7DV.cjs +85 -0
  117. package/dist/{chunk-GSOEIEOU.js → chunk-WJ276BIP.js} +5 -1
  118. package/dist/{chunk-P2Z6GDEN.js → chunk-WLTVF77A.js} +1 -1
  119. package/dist/{chunk-53BR4MUW.cjs → chunk-WOGJXDBU.cjs} +3 -3
  120. package/dist/{chunk-QJ53OSGF.js → chunk-WRJLBHWB.js} +6 -2
  121. package/dist/chunk-WYLFLZ42.js +222 -0
  122. package/dist/{chunk-B7EUETGY.cjs → chunk-XL77XYI2.cjs} +4 -4
  123. package/dist/{chunk-NI3BQXKU.js → chunk-XLI7SHCH.js} +2 -2
  124. package/dist/chunk-Y27LG4BQ.cjs +45 -0
  125. package/dist/chunk-Y6OWFIUF.js +209 -0
  126. package/dist/chunk-YKSSNFDZ.js +400 -0
  127. package/dist/{chunk-VRI7EXV6.js → chunk-YMDLUTF2.js} +5 -1
  128. package/dist/chunk-YVY27BJT.js +85 -0
  129. package/dist/{chunk-GWIAMKKF.js → chunk-ZBIBLOZL.js} +40 -249
  130. package/dist/completion-HVSWU5GR.cjs +13 -0
  131. package/dist/completion-WJ2MVNDH.js +13 -0
  132. package/dist/constants-RBQTR32A.cjs +20 -0
  133. package/dist/{constants-ZLG6M5SI.js → constants-V6J54N3X.js} +1 -1
  134. package/dist/export-NN7F5ANA.js +11 -0
  135. package/dist/export-UPS3AK2P.cjs +11 -0
  136. package/dist/feedback-ARI7CLVQ.js +14 -0
  137. package/dist/feedback-OZTPYHKJ.cjs +14 -0
  138. package/dist/help-4674IV4D.cjs +58 -0
  139. package/dist/help-ENG5KV2M.js +58 -0
  140. package/dist/history-2KUM6GN4.cjs +13 -0
  141. package/dist/history-RZFT34Q7.js +13 -0
  142. package/dist/hooks-7QSUBHBM.cjs +12 -0
  143. package/dist/hooks-S4MD4QSR.js +12 -0
  144. package/dist/i18n-6NKENUIV.js +32 -0
  145. package/dist/i18n-MXQXQOVE.cjs +32 -0
  146. package/dist/ide-5STDV43A.cjs +11 -0
  147. package/dist/ide-W2NYXOWQ.js +11 -0
  148. package/dist/index.cjs +18002 -13864
  149. package/dist/index.js +18252 -14114
  150. package/dist/init-FG5KEJCZ.cjs +9 -0
  151. package/dist/init-TV4MJDYK.js +9 -0
  152. package/dist/language-52Q7CSAY.cjs +16 -0
  153. package/dist/language-FXFDGOBF.js +16 -0
  154. package/dist/localProjectPermissions-2EATUDZM.cjs +17 -0
  155. package/dist/{localProjectPermissions-YFFAKLUZ.js → localProjectPermissions-WQYMGI42.js} +2 -2
  156. package/dist/login-AN42IOBK.js +18 -0
  157. package/dist/login-I65V4TGU.cjs +18 -0
  158. package/dist/logout-KK5UWGNG.js +16 -0
  159. package/dist/logout-VYYNWBHZ.cjs +16 -0
  160. package/dist/mcp-4SKTDECJ.js +15 -0
  161. package/dist/mcp-AGWPTMAX.cjs +15 -0
  162. package/dist/mcp-install-3NN2HAYR.cjs +473 -0
  163. package/dist/mcp-install-KTV52DQK.js +473 -0
  164. package/dist/memory-LG4K6XV6.cjs +9 -0
  165. package/dist/{memory-4GSP7NKV.js → memory-LRDK2SYC.js} +2 -1
  166. package/dist/model-P5D7ATE7.cjs +9 -0
  167. package/dist/{model-HKEFSH5E.js → model-WBFJIGUN.js} +2 -1
  168. package/dist/{new-EEZC4XXV.js → new-5A7RQEKI.js} +2 -1
  169. package/dist/new-EAATWI2G.cjs +9 -0
  170. package/dist/permissions-5URK6C44.js +12 -0
  171. package/dist/permissions-CJUDVG63.cjs +12 -0
  172. package/dist/plan-B3CW5DXJ.cjs +10 -0
  173. package/dist/plan-JFGNRL2S.js +10 -0
  174. package/dist/quit-A33JHDG7.cjs +9 -0
  175. package/dist/quit-IYBLN3DB.js +9 -0
  176. package/dist/resume-OPSJTCH7.cjs +12 -0
  177. package/dist/resume-TOWEEN5D.js +12 -0
  178. package/dist/search-GOLIE5BA.js +14 -0
  179. package/dist/search-H42HGUK5.cjs +14 -0
  180. package/dist/{sessions-4KXIT76T.js → sessions-B5NENDKY.js} +2 -1
  181. package/dist/sessions-YHAVEMWY.cjs +9 -0
  182. package/dist/share-2JD2AKKX.cjs +13 -0
  183. package/dist/share-MYGDOTQE.js +13 -0
  184. package/dist/{skills-3YEEODHK.js → skills-ICEQ2TNC.js} +2 -1
  185. package/dist/skills-LFVNZOMF.cjs +13 -0
  186. package/dist/{skills-install-KAXAQSN6.js → skills-install-6RN7FVCP.js} +9 -7
  187. package/dist/{skills-install-FTGOHOZ4.cjs → skills-install-LU6GA2WF.cjs} +14 -12
  188. package/dist/skills-new-5BM5PDFX.cjs +14 -0
  189. package/dist/skills-new-KWBWOX74.js +14 -0
  190. package/dist/status-M3XHJELG.cjs +10 -0
  191. package/dist/status-ZQDUYMKQ.js +10 -0
  192. package/dist/sync-6M3WRKMH.cjs +39 -0
  193. package/dist/sync-73D2MP65.cjs +16 -0
  194. package/dist/{sync-H4UHHLKU.js → sync-EXYX7HXW.js} +3 -3
  195. package/dist/sync-LL6M67CN.js +16 -0
  196. package/dist/theme-IFEI2IBJ.cjs +16 -0
  197. package/dist/theme-U3SKEULY.js +16 -0
  198. package/dist/ui/questionModal.cjs +28 -0
  199. package/dist/ui/questionModal.d.cts +11 -0
  200. package/dist/ui/questionModal.d.ts +11 -0
  201. package/dist/ui/questionModal.js +28 -0
  202. package/dist/undo-4DS67OAW.cjs +9 -0
  203. package/dist/undo-YMALVAPN.js +9 -0
  204. package/package.json +3 -2
  205. package/dist/CommunitySkillsCache-2BITCEAA.cjs +0 -7
  206. package/dist/MemoryManager-2ATHG7BH.js +0 -7
  207. package/dist/MemoryManager-AENCGCEW.cjs +0 -7
  208. package/dist/PermissionManager-6HZGTK2N.cjs +0 -10
  209. package/dist/SessionManager-AG4WT3DP.cjs +0 -9
  210. package/dist/SkillsRegistry-ZXU6YDRP.cjs +0 -8
  211. package/dist/SyncApiClient-UOA4VLLD.cjs +0 -10
  212. package/dist/add-dir-OMK3Y4DM.cjs +0 -8
  213. package/dist/agents-ICAC3KD3.js +0 -9
  214. package/dist/agents-YONWPKFS.cjs +0 -9
  215. package/dist/agents-new-NV557UVG.cjs +0 -10
  216. package/dist/agents-new-QHM3CO4B.js +0 -10
  217. package/dist/automode-BRHUHGXU.cjs +0 -8
  218. package/dist/chunk-3HPUOQJN.cjs +0 -23
  219. package/dist/chunk-5DN5KNXU.js +0 -81
  220. package/dist/chunk-7BYSXAKS.js +0 -23
  221. package/dist/chunk-ARVFUZOB.js +0 -736
  222. package/dist/chunk-BEIG7V7Q.cjs +0 -51
  223. package/dist/chunk-GWXXFQ3F.cjs +0 -81
  224. package/dist/chunk-XFQS2VGT.cjs +0 -736
  225. package/dist/chunk-Z3Q2AFDS.js +0 -51
  226. package/dist/completion-WVFWX7XQ.cjs +0 -10
  227. package/dist/completion-Y42FKDT3.js +0 -10
  228. package/dist/constants-G2PLP5HH.cjs +0 -20
  229. package/dist/export-BKBJ7PB2.cjs +0 -8
  230. package/dist/export-WJ5P6E5Z.js +0 -8
  231. package/dist/feedback-HZBCTSFG.js +0 -10
  232. package/dist/feedback-JBQ3UPGZ.cjs +0 -10
  233. package/dist/help-PKC6QCNG.js +0 -10
  234. package/dist/help-UEELQRHP.cjs +0 -10
  235. package/dist/hooks-G4VLYMLX.cjs +0 -9
  236. package/dist/hooks-LN4A6NQL.js +0 -9
  237. package/dist/init-DML7AOII.js +0 -8
  238. package/dist/init-SLLSDDJN.cjs +0 -8
  239. package/dist/language-KODBDE5R.js +0 -12
  240. package/dist/language-SJT475NW.cjs +0 -12
  241. package/dist/localProjectPermissions-AYQYGTOE.cjs +0 -17
  242. package/dist/login-TC2KROQI.js +0 -14
  243. package/dist/login-TYMR2ZD3.cjs +0 -14
  244. package/dist/logout-2ECV365P.js +0 -12
  245. package/dist/logout-CO3CPYZJ.cjs +0 -12
  246. package/dist/memory-CFNC7RJH.cjs +0 -8
  247. package/dist/model-TKVEJ5BC.cjs +0 -8
  248. package/dist/new-EB2MBQXA.cjs +0 -8
  249. package/dist/permissions-5MTH22EF.js +0 -9
  250. package/dist/permissions-IP5SITPI.cjs +0 -9
  251. package/dist/quit-2RYFGIJP.cjs +0 -8
  252. package/dist/quit-RSYIERO5.js +0 -8
  253. package/dist/resume-EPOEF3WV.cjs +0 -9
  254. package/dist/resume-LOYD5MMP.js +0 -9
  255. package/dist/sessions-7RTCPVNE.cjs +0 -8
  256. package/dist/share-APR5S2CS.cjs +0 -10
  257. package/dist/share-VLJFDZKR.js +0 -10
  258. package/dist/skills-CRM55MKM.cjs +0 -12
  259. package/dist/skills-new-JF4FKNUT.cjs +0 -11
  260. package/dist/skills-new-JYX2GBKM.js +0 -11
  261. package/dist/status-DAEFE7ZC.cjs +0 -9
  262. package/dist/status-PBFFUC4Q.js +0 -9
  263. package/dist/sync-3B7SNBYC.js +0 -14
  264. package/dist/sync-4RARBQIH.cjs +0 -39
  265. package/dist/sync-YZ6YZ42H.cjs +0 -14
  266. package/dist/theme-3XV5BWUB.js +0 -12
  267. package/dist/theme-Z2WS5XWZ.cjs +0 -12
  268. package/dist/undo-2WR2ZIEC.cjs +0 -8
  269. package/dist/undo-7QJBXARS.js +0 -8
@@ -1,6 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk3HPUOQJNcjs = require('./chunk-3HPUOQJN.cjs');
3
+ var _chunkMNCWB5F7cjs = require('./chunk-MNCWB5F7.cjs');
4
+
5
+
6
+ var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
4
7
 
5
8
  // src/commands/hooks.ts
6
9
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
@@ -116,11 +119,11 @@ function getShortCommand(command) {
116
119
  }
117
120
  function displayHooksList(allHooks) {
118
121
  console.log();
119
- console.log(_chalk2.default.bold.cyan("\u26A1 Hooks"));
122
+ console.log(_chalk2.default.bold.cyan(_chunkLOXOD4IScjs.t.call(void 0, "commands.hooks.title")));
120
123
  console.log(_chalk2.default.gray(" Lifecycle hooks run shell commands on events"));
121
124
  console.log();
122
125
  if (allHooks.length === 0) {
123
- console.log(_chalk2.default.gray(" No hooks configured."));
126
+ console.log(_chalk2.default.gray(` ${_chunkLOXOD4IScjs.t.call(void 0, "commands.hooks.noHooks")}`));
124
127
  console.log();
125
128
  return;
126
129
  }
@@ -194,7 +197,7 @@ async function hooks(ctx) {
194
197
  const toggleLabel = settings.enabled !== false ? "\u25EF Disable all hooks" : "\u25CF Enable all hooks";
195
198
  choices.push({ name: "toggle_global", message: toggleLabel });
196
199
  }
197
- const actionResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
200
+ const actionResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
198
201
  type: "select",
199
202
  name: "action",
200
203
  message: "Action",
@@ -230,29 +233,22 @@ async function toggleHooksMulti(manager, allHooks) {
230
233
  enabled: h.enabled !== false
231
234
  };
232
235
  });
233
- const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
234
- type: "multiselect",
236
+ const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
237
+ type: "select",
235
238
  name: "selected",
236
- message: "Toggle hooks (space to select, enter to confirm)",
239
+ message: "Toggle hooks (select to enable/disable)",
237
240
  choices,
238
- initial: choices.filter((c) => c.enabled).map((c) => c.name)
241
+ initial: 0
239
242
  });
240
243
  if (!result) return;
241
- const selectedSet = new Set(result.selected);
242
- let changed = 0;
243
- for (let i = 0; i < allHooks.length; i++) {
244
- const hook = allHooks[i];
245
- const shouldBeEnabled = selectedSet.has(String(i));
246
- const currentlyEnabled = hook.enabled !== false;
247
- if (shouldBeEnabled !== currentlyEnabled) {
248
- const eventHooks = allHooks.filter((h) => h.event === hook.event);
249
- const eventIndex = eventHooks.indexOf(hook);
250
- await manager.toggleHook(hook.event, eventIndex);
251
- changed++;
252
- }
253
- }
254
- if (changed > 0) {
255
- console.log(_chalk2.default.green(` \u2713 Updated ${changed} hook(s)`));
244
+ const selectedIndex = Number(result.selected);
245
+ const hook = allHooks[selectedIndex];
246
+ if (hook) {
247
+ const eventHooks = allHooks.filter((h) => h.event === hook.event);
248
+ const eventIndex = eventHooks.indexOf(hook);
249
+ await manager.toggleHook(hook.event, eventIndex);
250
+ const newState = hook.enabled === false ? "enabled" : "disabled";
251
+ console.log(_chalk2.default.green(` \u2713 Hook ${newState}: ${hook.event}`));
256
252
  } else {
257
253
  console.log(_chalk2.default.gray(" No changes made"));
258
254
  }
@@ -263,26 +259,26 @@ async function addHook(manager) {
263
259
  name: e,
264
260
  message: `${e} ${_chalk2.default.dim(`- ${EVENT_DESCRIPTIONS[e]}`)}`
265
261
  }));
266
- const eventResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
262
+ const eventResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
267
263
  type: "select",
268
264
  name: "event",
269
265
  message: "Event to hook into",
270
266
  choices: eventChoices
271
267
  });
272
268
  if (!eventResult) return;
273
- const commandResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
269
+ const commandResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
274
270
  type: "input",
275
271
  name: "command",
276
272
  message: "Shell command to execute",
277
273
  validate: (val) => typeof val === "string" && val.trim().length > 0 || "Command is required"
278
274
  });
279
275
  if (!commandResult || !commandResult.command) return;
280
- const descResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
276
+ const descResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
281
277
  type: "input",
282
278
  name: "description",
283
279
  message: "Description (optional)"
284
280
  });
285
- const asyncResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
281
+ const asyncResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
286
282
  type: "confirm",
287
283
  name: "async",
288
284
  message: "Run asynchronously (non-blocking)?",
@@ -307,7 +303,7 @@ async function removeHook(manager, allHooks) {
307
303
  message: `${eventTag} ${desc2}`
308
304
  };
309
305
  });
310
- const selectResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
306
+ const selectResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
311
307
  type: "select",
312
308
  name: "hookIndex",
313
309
  message: "Select hook to remove",
@@ -319,7 +315,7 @@ async function removeHook(manager, allHooks) {
319
315
  const eventHooks = allHooks.filter((h) => h.event === hook.event);
320
316
  const eventIndex = eventHooks.indexOf(hook);
321
317
  const desc = hook.description || getShortCommand(hook.command);
322
- const confirmResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
318
+ const confirmResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
323
319
  type: "confirm",
324
320
  name: "confirm",
325
321
  message: `Remove "${desc}"?`,
@@ -342,7 +338,7 @@ async function testHook(manager, allHooks) {
342
338
  message: `${eventTag} ${desc}`
343
339
  };
344
340
  });
345
- const selectResult = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
341
+ const selectResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
346
342
  type: "select",
347
343
  name: "hookIndex",
348
344
  message: "Select hook to test",
@@ -373,7 +369,7 @@ async function testHook(manager, allHooks) {
373
369
  }
374
370
  var metadata = {
375
371
  command: "/hooks",
376
- description: "view and manage lifecycle hooks",
372
+ description: _chunkLOXOD4IScjs.t.call(void 0, "commands.hooks.description"),
377
373
  implemented: true
378
374
  };
379
375
 
@@ -1,242 +1,11 @@
1
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
2
 
3
- var _chunkPMMSDR44cjs = require('./chunk-PMMSDR44.cjs');
4
3
 
5
- // src/ui/theme/Theme.ts
6
- var Theme = class {
7
- constructor(name, colors, colorMode) {
8
- this.ansiCache = /* @__PURE__ */ new Map();
9
- this.name = name;
10
- this.colors = colors;
11
- this.colorMode = _nullishCoalesce(colorMode, () => ( detectColorMode()));
12
- }
13
- /**
14
- * Apply foreground color to text.
15
- */
16
- fg(token, text) {
17
- if (this.colorMode === "none") return text;
18
- const color = this.colors[token];
19
- if (!color) return text;
20
- const ansi = this.getAnsiCode(color, "fg");
21
- return `${ansi}${text}\x1B[39m`;
22
- }
23
- /**
24
- * Apply background color to text.
25
- */
26
- bg(token, text) {
27
- if (this.colorMode === "none") return text;
28
- const color = this.colors[token];
29
- if (!color) return text;
30
- const ansi = this.getAnsiCode(color, "bg");
31
- return `${ansi}${text}\x1B[49m`;
32
- }
33
- /**
34
- * Apply both foreground and background colors.
35
- */
36
- fgBg(fgToken, bgToken, text) {
37
- if (this.colorMode === "none") return text;
38
- const fgColor = this.colors[fgToken];
39
- const bgColor = this.colors[bgToken];
40
- const fgAnsi = fgColor ? this.getAnsiCode(fgColor, "fg") : "";
41
- const bgAnsi = bgColor ? this.getAnsiCode(bgColor, "bg") : "";
42
- return `${fgAnsi}${bgAnsi}${text}\x1B[0m`;
43
- }
44
- /**
45
- * Apply bold style.
46
- */
47
- bold(text) {
48
- return `\x1B[1m${text}\x1B[22m`;
49
- }
50
- /**
51
- * Apply italic style.
52
- */
53
- italic(text) {
54
- return `\x1B[3m${text}\x1B[23m`;
55
- }
56
- /**
57
- * Apply underline style.
58
- */
59
- underline(text) {
60
- return `\x1B[4m${text}\x1B[24m`;
61
- }
62
- /**
63
- * Apply dim style.
64
- */
65
- dimStyle(text) {
66
- return `\x1B[2m${text}\x1B[22m`;
67
- }
68
- /**
69
- * Apply strikethrough style.
70
- */
71
- strikethrough(text) {
72
- return `\x1B[9m${text}\x1B[29m`;
73
- }
74
- /**
75
- * Reset all styles.
76
- */
77
- reset(text) {
78
- return `\x1B[0m${text}\x1B[0m`;
79
- }
80
- /**
81
- * Get raw color value for a token.
82
- */
83
- getColor(token) {
84
- return this.colors[token] || "";
85
- }
86
- /**
87
- * Get current color mode.
88
- */
89
- getColorMode() {
90
- return this.colorMode;
91
- }
92
- /**
93
- * Convert color value to ANSI escape code.
94
- */
95
- getAnsiCode(color, type) {
96
- const cacheKey = `${color}:${type}`;
97
- const cached = this.ansiCache.get(cacheKey);
98
- if (cached) return cached;
99
- const code = this.colorToAnsi(color, type);
100
- this.ansiCache.set(cacheKey, code);
101
- return code;
102
- }
103
- /**
104
- * Convert a color value to ANSI code based on color mode.
105
- */
106
- colorToAnsi(color, type) {
107
- if (!color) return "";
108
- if (color.startsWith("#")) {
109
- return this.hexToAnsi(color, type);
110
- }
111
- const numValue = parseInt(color, 10);
112
- if (!isNaN(numValue) && numValue >= 0 && numValue <= 255) {
113
- return this.index256ToAnsi(numValue, type);
114
- }
115
- return "";
116
- }
117
- /**
118
- * Convert hex color to ANSI code.
119
- */
120
- hexToAnsi(hex, type) {
121
- const rgb = hexToRgb(hex);
122
- if (!rgb) return "";
123
- const base = type === "fg" ? 38 : 48;
124
- if (this.colorMode === "truecolor") {
125
- return `\x1B[${base};2;${rgb.r};${rgb.g};${rgb.b}m`;
126
- } else if (this.colorMode === "256") {
127
- const index = rgbTo256(rgb.r, rgb.g, rgb.b);
128
- return `\x1B[${base};5;${index}m`;
129
- } else if (this.colorMode === "16") {
130
- const index = rgbTo16(rgb.r, rgb.g, rgb.b);
131
- const code = type === "fg" ? index < 8 ? 30 + index : 90 + index - 8 : index < 8 ? 40 + index : 100 + index - 8;
132
- return `\x1B[${code}m`;
133
- }
134
- return "";
135
- }
136
- /**
137
- * Convert 256-color index to ANSI code.
138
- */
139
- index256ToAnsi(index, type) {
140
- const base = type === "fg" ? 38 : 48;
141
- if (this.colorMode === "truecolor" || this.colorMode === "256") {
142
- return `\x1B[${base};5;${index}m`;
143
- } else if (this.colorMode === "16") {
144
- const basicIndex = index < 16 ? index : index256To16(index);
145
- const code = type === "fg" ? basicIndex < 8 ? 30 + basicIndex : 90 + basicIndex - 8 : basicIndex < 8 ? 40 + basicIndex : 100 + basicIndex - 8;
146
- return `\x1B[${code}m`;
147
- }
148
- return "";
149
- }
150
- };
151
- function detectColorMode() {
152
- if (process.env.NO_COLOR !== void 0) {
153
- return "none";
154
- }
155
- if (process.env.FORCE_COLOR !== void 0) {
156
- const level = parseInt(process.env.FORCE_COLOR, 10);
157
- if (level === 0) return "none";
158
- if (level === 1) return "16";
159
- if (level === 2) return "256";
160
- if (level >= 3) return "truecolor";
161
- }
162
- const colorterm = process.env.COLORTERM;
163
- if (colorterm === "truecolor" || colorterm === "24bit") {
164
- return "truecolor";
165
- }
166
- const term = process.env.TERM || "";
167
- if (term.includes("256color") || term.includes("256-color")) {
168
- return "256";
169
- }
170
- if (term.includes("color") || term.includes("ansi") || term === "xterm") {
171
- return "16";
172
- }
173
- if (process.stdout.isTTY) {
174
- return "256";
175
- }
176
- return "none";
177
- }
178
- function hexToRgb(hex) {
179
- const match = hex.match(/^#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/);
180
- if (match) {
181
- return {
182
- r: parseInt(match[1], 16),
183
- g: parseInt(match[2], 16),
184
- b: parseInt(match[3], 16)
185
- };
186
- }
187
- const shortMatch = hex.match(/^#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/);
188
- if (shortMatch) {
189
- return {
190
- r: parseInt(shortMatch[1] + shortMatch[1], 16),
191
- g: parseInt(shortMatch[2] + shortMatch[2], 16),
192
- b: parseInt(shortMatch[3] + shortMatch[3], 16)
193
- };
194
- }
195
- return null;
196
- }
197
- function rgbTo256(r, g, b) {
198
- if (r === g && g === b) {
199
- if (r < 8) return 16;
200
- if (r > 248) return 231;
201
- return Math.round((r - 8) / 10) + 232;
202
- }
203
- const ri = Math.round(r / 51);
204
- const gi = Math.round(g / 51);
205
- const bi = Math.round(b / 51);
206
- return 16 + 36 * ri + 6 * gi + bi;
207
- }
208
- function rgbTo16(r, g, b) {
209
- const bright = (r + g + b) / 3 > 128 ? 8 : 0;
210
- const ri = r > 128 ? 1 : 0;
211
- const gi = g > 128 ? 2 : 0;
212
- const bi = b > 128 ? 4 : 0;
213
- return bright + ri + gi + bi;
214
- }
215
- function index256To16(index) {
216
- if (index < 16) return index;
217
- if (index >= 232) {
218
- const gray = (index - 232) * 10 + 8;
219
- return gray > 128 ? 15 : 0;
220
- }
221
- const adjusted = index - 16;
222
- const r = Math.floor(adjusted / 36) * 51;
223
- const g = Math.floor(adjusted % 36 / 6) * 51;
224
- const b = adjusted % 6 * 51;
225
- return rgbTo16(r, g, b);
226
- }
227
- var globalTheme = null;
228
- function getTheme() {
229
- if (!globalTheme) {
230
- throw new Error("Theme not initialized. Call initTheme() first.");
231
- }
232
- return globalTheme;
233
- }
234
- function setTheme(theme) {
235
- globalTheme = theme;
236
- }
237
- function isThemeInitialized() {
238
- return globalTheme !== null;
239
- }
4
+
5
+ var _chunkPGRH5Q77cjs = require('./chunk-PGRH5Q77.cjs');
6
+
7
+
8
+ var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
240
9
 
241
10
  // src/ui/theme/loader.ts
242
11
  var _fs = require('fs');
@@ -335,7 +104,7 @@ var darkTheme = {
335
104
  error: "red",
336
105
  warning: "yellow",
337
106
  muted: "gray500",
338
- dim: "gray700",
107
+ dim: "gray200",
339
108
  text: "gray200",
340
109
  // Backgrounds & Content
341
110
  userMessageBg: "bgMedium",
@@ -408,7 +177,7 @@ var draculaTheme = {
408
177
  error: "red",
409
178
  warning: "orange",
410
179
  muted: "comment",
411
- dim: "currentLine",
180
+ dim: "foreground",
412
181
  text: "foreground",
413
182
  // Backgrounds & Content
414
183
  userMessageBg: "currentLine",
@@ -481,7 +250,7 @@ var sandyTheme = {
481
250
  error: "rust",
482
251
  warning: "dune",
483
252
  muted: "stone",
484
- dim: "gray600",
253
+ dim: "gray100",
485
254
  text: "gray100",
486
255
  // Backgrounds & Content
487
256
  userMessageBg: "gray700",
@@ -565,7 +334,7 @@ var tuiTheme = {
565
334
  error: "pohutukawa",
566
335
  warning: "kowhai",
567
336
  muted: "gray400",
568
- dim: "gray600",
337
+ dim: "snow",
569
338
  text: "snow",
570
339
  // Backgrounds & Content
571
340
  userMessageBg: "gray700",
@@ -638,7 +407,7 @@ var lightTheme = {
638
407
  error: "red",
639
408
  warning: "yellow",
640
409
  muted: "gray400",
641
- dim: "gray500",
410
+ dim: "gray100",
642
411
  text: "gray100",
643
412
  // Backgrounds & Content
644
413
  userMessageBg: "bgMedium",
@@ -699,18 +468,18 @@ var ThemeLoadError = class extends Error {
699
468
  function loadTheme(themeName) {
700
469
  const definition = getThemeDefinition(themeName);
701
470
  const resolvedColors = resolveThemeColors(definition);
702
- return new Theme(definition.name, resolvedColors, detectColorMode());
471
+ return new (0, _chunkPGRH5Q77cjs.Theme)(definition.name, resolvedColors, _chunkPGRH5Q77cjs.detectColorMode.call(void 0, ));
703
472
  }
704
473
  function initTheme(themeName) {
705
474
  const name = themeName || getDefaultThemeName();
706
475
  try {
707
476
  const theme = loadTheme(name);
708
- setTheme(theme);
477
+ _chunkPGRH5Q77cjs.setTheme.call(void 0, theme);
709
478
  return theme;
710
479
  } catch (error) {
711
480
  console.warn(`Failed to load theme "${name}", falling back to dark theme:`, error instanceof Error ? error.message : error);
712
481
  const theme = loadTheme("dark");
713
- setTheme(theme);
482
+ _chunkPGRH5Q77cjs.setTheme.call(void 0, theme);
714
483
  return theme;
715
484
  }
716
485
  }
@@ -881,14 +650,15 @@ var ThemeContext = _react.createContext.call(void 0, defaultContextValue);
881
650
  var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
882
651
 
883
652
  var _yaml = require('yaml'); var _yaml2 = _interopRequireDefault(_yaml);
884
- var DEFAULT_CONFIG_PATH = _chunkPMMSDR44cjs.AUTOHAND_FILES.configJson;
885
- var YAML_CONFIG_PATH = _chunkPMMSDR44cjs.AUTOHAND_FILES.configYaml;
886
- var YML_CONFIG_PATH = _chunkPMMSDR44cjs.AUTOHAND_FILES.configYml;
653
+ var DEFAULT_CONFIG_PATH = _chunkGIZL57FEcjs.AUTOHAND_FILES.configJson;
654
+ var YAML_CONFIG_PATH = _chunkGIZL57FEcjs.AUTOHAND_FILES.configYaml;
655
+ var YML_CONFIG_PATH = _chunkGIZL57FEcjs.AUTOHAND_FILES.configYml;
887
656
  var DEFAULT_BASE_URL = "https://openrouter.ai/api/v1";
888
657
  var DEFAULT_OLLAMA_URL = "http://localhost:11434";
889
658
  var DEFAULT_LLAMACPP_URL = "http://localhost:8080";
890
659
  var DEFAULT_OPENAI_URL = "https://api.openai.com/v1";
891
660
  var DEFAULT_MLX_URL = "http://localhost:8080";
661
+ var DEFAULT_LLMGATEWAY_URL = "https://api.llmgateway.io/v1";
892
662
  async function detectConfigPath(customPath) {
893
663
  if (customPath) {
894
664
  return _path2.default.resolve(customPath);
@@ -997,8 +767,6 @@ function isLegacyConfig(config) {
997
767
  return typeof config.api_key === "string";
998
768
  }
999
769
  function validateConfig(config, configPath) {
1000
- const provider = _nullishCoalesce(config.provider, () => ( "openrouter"));
1001
- const providerConfig = getProviderConfig(config, provider);
1002
770
  if (config.workspace) {
1003
771
  if (config.workspace.defaultRoot && typeof config.workspace.defaultRoot !== "string") {
1004
772
  throw new Error(`workspace.defaultRoot must be a string in ${configPath}`);
@@ -1018,6 +786,30 @@ function validateConfig(config, configPath) {
1018
786
  throw new Error(`ui.autoConfirm must be boolean in ${configPath}`);
1019
787
  }
1020
788
  }
789
+ if (config.mcp) {
790
+ if (config.mcp.enabled !== void 0 && typeof config.mcp.enabled !== "boolean") {
791
+ throw new Error(`mcp.enabled must be boolean in ${configPath}`);
792
+ }
793
+ if (config.mcp.servers !== void 0) {
794
+ if (!Array.isArray(config.mcp.servers)) {
795
+ throw new Error(`mcp.servers must be an array in ${configPath}`);
796
+ }
797
+ for (const server of config.mcp.servers) {
798
+ if (!server.name || typeof server.name !== "string") {
799
+ throw new Error(`mcp.servers[].name must be a non-empty string in ${configPath}`);
800
+ }
801
+ if (!["stdio", "sse", "http"].includes(server.transport)) {
802
+ throw new Error(`mcp.servers[].transport must be 'stdio', 'sse', or 'http' in ${configPath}`);
803
+ }
804
+ if (server.transport === "stdio" && (!server.command || typeof server.command !== "string")) {
805
+ throw new Error(`mcp.servers[].command is required for stdio transport in ${configPath}`);
806
+ }
807
+ if ((server.transport === "sse" || server.transport === "http") && (!server.url || typeof server.url !== "string")) {
808
+ throw new Error(`mcp.servers[].url is required for ${server.transport} transport in ${configPath}`);
809
+ }
810
+ }
811
+ }
812
+ }
1021
813
  if (config.externalAgents) {
1022
814
  if (config.externalAgents.enabled !== void 0 && typeof config.externalAgents.enabled !== "boolean") {
1023
815
  throw new Error(`externalAgents.enabled must be boolean in ${configPath}`);
@@ -1045,13 +837,14 @@ function getProviderConfig(config, provider) {
1045
837
  ollama: config.ollama,
1046
838
  llamacpp: config.llamacpp,
1047
839
  openai: config.openai,
1048
- mlx: config.mlx
840
+ mlx: config.mlx,
841
+ llmgateway: config.llmgateway
1049
842
  };
1050
843
  const entry = configByProvider[chosen];
1051
844
  if (!entry) {
1052
845
  return null;
1053
846
  }
1054
- if (chosen === "openrouter") {
847
+ if (chosen === "openrouter" || chosen === "llmgateway") {
1055
848
  const { apiKey, model } = entry;
1056
849
  if (!apiKey || apiKey === "replace-me" || !model) {
1057
850
  return null;
@@ -1068,6 +861,7 @@ function getProviderConfig(config, provider) {
1068
861
  }
1069
862
  function defaultBaseUrlFor(provider, port) {
1070
863
  if (provider === "openrouter") return DEFAULT_BASE_URL;
864
+ if (provider === "llmgateway") return DEFAULT_LLMGATEWAY_URL;
1071
865
  const p = port ? port.toString() : void 0;
1072
866
  switch (provider) {
1073
867
  case "ollama":
@@ -1100,10 +894,7 @@ async function saveConfig(config) {
1100
894
 
1101
895
 
1102
896
 
1103
-
1104
-
1105
-
1106
- exports.hexToRgb = hexToRgb; exports.getTheme = getTheme; exports.isThemeInitialized = isThemeInitialized; exports.CUSTOM_THEMES_DIR = CUSTOM_THEMES_DIR; exports.initTheme = initTheme; exports.listAvailableThemes = listAvailableThemes; exports.loadConfig = loadConfig; exports.resolveWorkspaceRoot = resolveWorkspaceRoot; exports.getProviderConfig = getProviderConfig; exports.saveConfig = saveConfig;
897
+ exports.CUSTOM_THEMES_DIR = CUSTOM_THEMES_DIR; exports.initTheme = initTheme; exports.listAvailableThemes = listAvailableThemes; exports.loadConfig = loadConfig; exports.resolveWorkspaceRoot = resolveWorkspaceRoot; exports.getProviderConfig = getProviderConfig; exports.saveConfig = saveConfig;
1107
898
  /**
1108
899
  * @license
1109
900
  * Copyright 2025 Autohand AI LLC
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  safePrompt
3
- } from "./chunk-7BYSXAKS.js";
3
+ } from "./chunk-WD5ZF6HE.js";
4
+ import {
5
+ t
6
+ } from "./chunk-UET7BDX2.js";
4
7
 
5
8
  // src/commands/hooks.ts
6
9
  import chalk from "chalk";
@@ -116,11 +119,11 @@ function getShortCommand(command) {
116
119
  }
117
120
  function displayHooksList(allHooks) {
118
121
  console.log();
119
- console.log(chalk.bold.cyan("\u26A1 Hooks"));
122
+ console.log(chalk.bold.cyan(t("commands.hooks.title")));
120
123
  console.log(chalk.gray(" Lifecycle hooks run shell commands on events"));
121
124
  console.log();
122
125
  if (allHooks.length === 0) {
123
- console.log(chalk.gray(" No hooks configured."));
126
+ console.log(chalk.gray(` ${t("commands.hooks.noHooks")}`));
124
127
  console.log();
125
128
  return;
126
129
  }
@@ -231,28 +234,21 @@ async function toggleHooksMulti(manager, allHooks) {
231
234
  };
232
235
  });
233
236
  const result = await safePrompt({
234
- type: "multiselect",
237
+ type: "select",
235
238
  name: "selected",
236
- message: "Toggle hooks (space to select, enter to confirm)",
239
+ message: "Toggle hooks (select to enable/disable)",
237
240
  choices,
238
- initial: choices.filter((c) => c.enabled).map((c) => c.name)
241
+ initial: 0
239
242
  });
240
243
  if (!result) return;
241
- const selectedSet = new Set(result.selected);
242
- let changed = 0;
243
- for (let i = 0; i < allHooks.length; i++) {
244
- const hook = allHooks[i];
245
- const shouldBeEnabled = selectedSet.has(String(i));
246
- const currentlyEnabled = hook.enabled !== false;
247
- if (shouldBeEnabled !== currentlyEnabled) {
248
- const eventHooks = allHooks.filter((h) => h.event === hook.event);
249
- const eventIndex = eventHooks.indexOf(hook);
250
- await manager.toggleHook(hook.event, eventIndex);
251
- changed++;
252
- }
253
- }
254
- if (changed > 0) {
255
- console.log(chalk.green(` \u2713 Updated ${changed} hook(s)`));
244
+ const selectedIndex = Number(result.selected);
245
+ const hook = allHooks[selectedIndex];
246
+ if (hook) {
247
+ const eventHooks = allHooks.filter((h) => h.event === hook.event);
248
+ const eventIndex = eventHooks.indexOf(hook);
249
+ await manager.toggleHook(hook.event, eventIndex);
250
+ const newState = hook.enabled === false ? "enabled" : "disabled";
251
+ console.log(chalk.green(` \u2713 Hook ${newState}: ${hook.event}`));
256
252
  } else {
257
253
  console.log(chalk.gray(" No changes made"));
258
254
  }
@@ -373,7 +369,7 @@ async function testHook(manager, allHooks) {
373
369
  }
374
370
  var metadata = {
375
371
  command: "/hooks",
376
- description: "view and manage lifecycle hooks",
372
+ description: t("commands.hooks.description"),
377
373
  implemented: true
378
374
  };
379
375