claude-code-best 1.1.0 → 1.2.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 (514) hide show
  1. package/README.md +66 -75
  2. package/dist/{chunk-q5b91nhh.js → chunk-01qzvbp3.js} +8 -2
  3. package/dist/{chunk-f9b4wb89.js → chunk-053bj0m0.js} +79 -73
  4. package/dist/chunk-05tt9tt1.js +653 -0
  5. package/dist/chunk-06sq1vz3.js +403 -0
  6. package/dist/chunk-07069jq1.js +30 -0
  7. package/dist/chunk-0dac8msw.js +135 -0
  8. package/dist/{chunk-m5eb5pt2.js → chunk-0ja0y3at.js} +6 -6
  9. package/dist/chunk-0jzdwbdc.js +14 -0
  10. package/dist/chunk-0nrq46nf.js +313 -0
  11. package/dist/chunk-0qz705wz.js +192 -0
  12. package/dist/{chunk-m94pnhfa.js → chunk-0rn4v8sg.js} +38 -28
  13. package/dist/{chunk-1cbn5kxf.js → chunk-0rpb2bdp.js} +3 -2
  14. package/dist/{chunk-zz21rvr7.js → chunk-127cmycn.js} +8 -5
  15. package/dist/chunk-12vk6z7z.js +109 -0
  16. package/dist/{chunk-vybkxr18.js → chunk-15y014gg.js} +41 -31
  17. package/dist/{chunk-44fpr6jq.js → chunk-168xb8v1.js} +4 -2
  18. package/dist/{chunk-8hsyagr8.js → chunk-16bnxyz0.js} +1 -1
  19. package/dist/{chunk-wsqhnjj3.js → chunk-1atfzck5.js} +24 -24
  20. package/dist/chunk-1cbhkqxg.js +310 -0
  21. package/dist/chunk-1csq8bf1.js +295 -0
  22. package/dist/{chunk-0e1xsncc.js → chunk-1cwdhk7a.js} +1 -1
  23. package/dist/{chunk-c8jv6rtj.js → chunk-1ebqpwhn.js} +74 -68
  24. package/dist/{chunk-vyd8jzde.js → chunk-1mh5vt6v.js} +91 -83
  25. package/dist/chunk-1qf125vg.js +123 -0
  26. package/dist/{chunk-ryj80g9p.js → chunk-1sp6713v.js} +131 -176
  27. package/dist/{chunk-d18z9pna.js → chunk-1thgdca1.js} +2 -2
  28. package/dist/chunk-1z1gfx2c.js +443 -0
  29. package/dist/{chunk-wc6wwwyb.js → chunk-21z7acxh.js} +3 -3
  30. package/dist/chunk-229pcf6p.js +509 -0
  31. package/dist/chunk-238g70xa.js +1 -1
  32. package/dist/{chunk-vpb723tx.js → chunk-23ad5t92.js} +5 -5
  33. package/dist/chunk-28043j1k.js +68 -0
  34. package/dist/chunk-299r6d9v.js +141 -0
  35. package/dist/{chunk-a6s8wnhe.js → chunk-2bw5nqsw.js} +4 -4
  36. package/dist/chunk-2mxstrx5.js +445 -0
  37. package/dist/{chunk-9g827w4j.js → chunk-2q39ej51.js} +6 -6
  38. package/dist/chunk-2qwgfjcj.js +5370 -0
  39. package/dist/chunk-2ss23j0q.js +3587 -0
  40. package/dist/{chunk-hy3g1nv8.js → chunk-2wvxddsg.js} +9 -7
  41. package/dist/chunk-2x2aznpc.js +134 -0
  42. package/dist/{chunk-bqq4zamw.js → chunk-2ys5wcxk.js} +3 -3
  43. package/dist/{chunk-x51h62jq.js → chunk-3cvcwgsr.js} +74 -68
  44. package/dist/{chunk-mecs0gpc.js → chunk-3xv7rjsy.js} +14 -11
  45. package/dist/chunk-42x5tjk2.js +42 -0
  46. package/dist/{chunk-q6rax9kh.js → chunk-436r0x2n.js} +5 -5
  47. package/dist/{chunk-zgrg0wk3.js → chunk-44q4jkwa.js} +27 -67
  48. package/dist/{chunk-zq9xa1xe.js → chunk-44w22kyx.js} +104 -139
  49. package/dist/{chunk-yhd82045.js → chunk-46fcr28b.js} +30 -9
  50. package/dist/{chunk-wm2f2f1z.js → chunk-474y75ga.js} +2 -2
  51. package/dist/{chunk-6fkwz9yk.js → chunk-478rpnqm.js} +8 -8
  52. package/dist/{chunk-rj86xm6z.js → chunk-48w0df8a.js} +1 -1
  53. package/dist/{chunk-v4t6dyyh.js → chunk-4cp6193g.js} +2 -2
  54. package/dist/chunk-4d0de73v.js +436 -0
  55. package/dist/chunk-4eecm90d.js +1030 -0
  56. package/dist/{chunk-q7tvkc86.js → chunk-4f4ccg1h.js} +10 -115
  57. package/dist/chunk-4h102wt5.js +65 -0
  58. package/dist/{chunk-3mgywd32.js → chunk-4hv90qcz.js} +1 -1
  59. package/dist/{chunk-bcrxtdcy.js → chunk-4jcqmf9w.js} +39 -29
  60. package/dist/{chunk-v8xem37v.js → chunk-4kk7vxed.js} +8 -6
  61. package/dist/chunk-4nspekjp.js +69 -0
  62. package/dist/chunk-4xmb7bvy.js +125 -0
  63. package/dist/{chunk-427m88ms.js → chunk-4xy0c1dz.js} +8 -8
  64. package/dist/{chunk-41mpwc8h.js → chunk-53c9gb9c.js} +19 -15
  65. package/dist/{chunk-bpts9jbq.js → chunk-53zsn91p.js} +39 -31
  66. package/dist/{chunk-t7cbhqd2.js → chunk-548g1d6z.js} +104 -119
  67. package/dist/chunk-559yvwh1.js +63 -0
  68. package/dist/chunk-5a6ahhvy.js +594 -0
  69. package/dist/{chunk-5tx8dsy0.js → chunk-5c6man70.js} +9531 -18004
  70. package/dist/chunk-5hb5ev7b.js +74 -0
  71. package/dist/{chunk-ggqx30m9.js → chunk-5z28bqne.js} +23 -311
  72. package/dist/{chunk-p7g7pf3f.js → chunk-61ahbn23.js} +8 -6
  73. package/dist/{chunk-0sb5scxx.js → chunk-652wnf1z.js} +5 -5
  74. package/dist/{chunk-7tqhx6dr.js → chunk-66jkaz3q.js} +109 -213
  75. package/dist/{chunk-q25bjaev.js → chunk-677as3nh.js} +2 -2
  76. package/dist/chunk-68ksfahx.js +386 -0
  77. package/dist/{chunk-xs0hwvpa.js → chunk-68pfxvxt.js} +14 -9
  78. package/dist/{chunk-epmheefa.js → chunk-69hys77v.js} +8 -8
  79. package/dist/{chunk-9g2ncq68.js → chunk-6ayqcq3h.js} +120 -127
  80. package/dist/chunk-6kpbgc5w.js +23 -0
  81. package/dist/chunk-6mpsxxsf.js +362 -0
  82. package/dist/chunk-6nze0g86.js +119 -0
  83. package/dist/{chunk-v1mgv1et.js → chunk-6p4cyhb3.js} +4 -3
  84. package/dist/{chunk-2w8633e3.js → chunk-6t62dbnb.js} +61 -100
  85. package/dist/chunk-6t87a3q6.js +2842 -0
  86. package/dist/{chunk-6mz58s8p.js → chunk-6xana182.js} +18 -14
  87. package/dist/{chunk-fpf4cgbt.js → chunk-7bfach0x.js} +9 -9
  88. package/dist/{chunk-n7158r58.js → chunk-7f1ggjr2.js} +75 -69
  89. package/dist/chunk-7fxjmmfw.js +1172 -0
  90. package/dist/{chunk-ckcagq32.js → chunk-7gqf9wej.js} +5 -5
  91. package/dist/{chunk-b1xt9jqg.js → chunk-7j3dkjqq.js} +15 -5
  92. package/dist/chunk-7ns74x0q.js +475 -0
  93. package/dist/{chunk-ghr4s9g6.js → chunk-7qmknpkq.js} +75 -69
  94. package/dist/chunk-7rzepn9c.js +83 -0
  95. package/dist/chunk-7tdcwje9.js +68 -0
  96. package/dist/{chunk-b4mnbry0.js → chunk-8201tnhf.js} +4 -4
  97. package/dist/{chunk-dv1wfr85.js → chunk-8225arm6.js} +5 -4
  98. package/dist/chunk-822wfv88.js +70 -0
  99. package/dist/chunk-837tm8ht.js +183 -0
  100. package/dist/chunk-8a2ajt5d.js +878 -0
  101. package/dist/{chunk-bj0rvnjw.js → chunk-8bymxfn4.js} +39 -29
  102. package/dist/chunk-8cwbzk7h.js +118 -0
  103. package/dist/chunk-8d0ev0m2.js +111 -0
  104. package/dist/{chunk-4pbx3g7s.js → chunk-8g747a8x.js} +1 -1
  105. package/dist/chunk-8kfwb79z.js +436 -0
  106. package/dist/{chunk-xyqr1cww.js → chunk-8me0yq6v.js} +12 -12
  107. package/dist/{chunk-k5gdea6r.js → chunk-8n8285ax.js} +78 -72
  108. package/dist/{chunk-sdj9b9wh.js → chunk-8pn8tvgg.js} +9 -154
  109. package/dist/{chunk-d7mx1phm.js → chunk-8qhr4n77.js} +61 -103
  110. package/dist/{chunk-7ejt5gqq.js → chunk-8s9bbk3r.js} +58 -45
  111. package/dist/{chunk-bmvb57qb.js → chunk-905d2hee.js} +5 -5
  112. package/dist/{chunk-fk06pejm.js → chunk-91xq5y4a.js} +9 -9
  113. package/dist/{chunk-ahjgghpe.js → chunk-93xsyzsp.js} +1 -1
  114. package/dist/chunk-99pmbfqp.js +230 -0
  115. package/dist/{chunk-cgn27dqf.js → chunk-9f14bkn9.js} +3 -3
  116. package/dist/{chunk-sa7nc0vv.js → chunk-9m78gjpd.js} +1 -1
  117. package/dist/{chunk-kq098bkj.js → chunk-9pm2d2gv.js} +245 -316
  118. package/dist/chunk-a136cvvz.js +27 -0
  119. package/dist/{chunk-n5t9m8h9.js → chunk-a1bjde7d.js} +7 -7
  120. package/dist/chunk-a2evk7n1.js +168 -0
  121. package/dist/{chunk-khdjg2v9.js → chunk-a3k4w4cm.js} +38 -28
  122. package/dist/chunk-a3mcc1sb.js +1403 -0
  123. package/dist/{chunk-8hq5kk3y.js → chunk-a4twdmhf.js} +3 -2
  124. package/dist/chunk-a8eaey19.js +66 -0
  125. package/dist/chunk-abkb5pw6.js +426 -0
  126. package/dist/chunk-ae76ded0.js +30 -0
  127. package/dist/{chunk-660kcy7p.js → chunk-agx5w9ce.js} +14 -8
  128. package/dist/chunk-ah46h8rp.js +70 -0
  129. package/dist/chunk-aj3azy6z.js +409 -0
  130. package/dist/chunk-an6z4rzv.js +158 -0
  131. package/dist/{chunk-r6b58y3x.js → chunk-ase86y73.js} +1 -3
  132. package/dist/{chunk-v0wa5ref.js → chunk-avfjb6pd.js} +13 -555
  133. package/dist/{chunk-5mrhhmas.js → chunk-az5x70pn.js} +8 -5
  134. package/dist/{chunk-49k5ktrj.js → chunk-b6rg3egp.js} +30 -15
  135. package/dist/chunk-b73r6ngr.js +125 -0
  136. package/dist/{chunk-8bedvdm1.js → chunk-b81hd3m6.js} +1 -1
  137. package/dist/{chunk-z7pr85qw.js → chunk-b9mhpc0v.js} +3 -3
  138. package/dist/chunk-b9ndqcdv.js +139 -0
  139. package/dist/{chunk-n5516f5q.js → chunk-bd8zk9tn.js} +4 -4
  140. package/dist/chunk-bdy6n17s.js +343 -0
  141. package/dist/{chunk-r55r29js.js → chunk-bf1j3azq.js} +131 -111
  142. package/dist/{chunk-83z0wrnz.js → chunk-bfcet2mw.js} +2 -2
  143. package/dist/{chunk-jy35mvy3.js → chunk-bmjmrk76.js} +7 -7
  144. package/dist/{chunk-2j0j79p0.js → chunk-bsj8e2mb.js} +8 -8
  145. package/dist/{chunk-snvypj85.js → chunk-bt64sq5y.js} +3 -2
  146. package/dist/{chunk-vyc0rjyx.js → chunk-bwg7582d.js} +1 -1
  147. package/dist/{chunk-3be7ka25.js → chunk-bxcfz5gy.js} +1 -1
  148. package/dist/{chunk-mvss16tj.js → chunk-c1k9tg7h.js} +289 -624
  149. package/dist/{chunk-crr52hf4.js → chunk-c5pxerks.js} +13 -11
  150. package/dist/chunk-c6sjhj89.js +1284 -0
  151. package/dist/{chunk-q6dpqj3z.js → chunk-c9q0phsg.js} +9 -6
  152. package/dist/chunk-caj0ab74.js +129 -0
  153. package/dist/{chunk-f64npa3b.js → chunk-chsyvavm.js} +704 -4
  154. package/dist/{chunk-dqh7e4mt.js → chunk-cjpt035a.js} +51 -41
  155. package/dist/{chunk-z8nbjar4.js → chunk-cmcbatgz.js} +7 -5
  156. package/dist/chunk-cnsj3vq2.js +35 -0
  157. package/dist/chunk-cqjmxeqv.js +269 -0
  158. package/dist/{chunk-bt9krt49.js → chunk-cvb1v08x.js} +38 -32
  159. package/dist/{chunk-j3215c49.js → chunk-cxhvyf7c.js} +227 -370
  160. package/dist/{chunk-24x87knx.js → chunk-cxx0e4nv.js} +1326 -2881
  161. package/dist/chunk-cy2hswr1.js +15 -0
  162. package/dist/{chunk-mwp7sj0q.js → chunk-cy6ezb6j.js} +115140 -121540
  163. package/dist/{chunk-ks0m9njy.js → chunk-d2jekryq.js} +8 -8
  164. package/dist/chunk-d4mdda98.js +94 -0
  165. package/dist/{chunk-33khw5gy.js → chunk-d6ve5pze.js} +7 -7
  166. package/dist/{chunk-26wtxbdc.js → chunk-d7886r6a.js} +6928 -6928
  167. package/dist/{chunk-9t1x831d.js → chunk-d83tmb5h.js} +82 -73
  168. package/dist/{chunk-g5sg6y9q.js → chunk-d8meetqc.js} +78 -71
  169. package/dist/{chunk-ra8fbt9p.js → chunk-d8r0q4ps.js} +537 -871
  170. package/dist/chunk-d95k8xkm.js +84 -0
  171. package/dist/chunk-dd4m7t1v.js +112 -0
  172. package/dist/{chunk-er9vzjac.js → chunk-dekbr08w.js} +16 -14
  173. package/dist/{chunk-cvge4pvp.js → chunk-dk8287aa.js} +1 -1
  174. package/dist/{chunk-9mfbqw9k.js → chunk-dm3n2qgd.js} +4 -4
  175. package/dist/{chunk-n6fbyke9.js → chunk-dmxte86x.js} +3 -3
  176. package/dist/{chunk-t24ytdcw.js → chunk-dqvwn28p.js} +12 -10
  177. package/dist/chunk-drkm8yx2.js +34 -0
  178. package/dist/{chunk-ptwn7qw7.js → chunk-dsbewdgm.js} +38 -10
  179. package/dist/{chunk-w7h2yphx.js → chunk-dwekpr47.js} +2 -2
  180. package/dist/{chunk-ks0dm6t3.js → chunk-e3299veq.js} +16 -70
  181. package/dist/{chunk-4x5ym4h2.js → chunk-e5hcyxae.js} +129 -15
  182. package/dist/chunk-e7h0nd5w.js +106 -0
  183. package/dist/{chunk-s2dmn3yg.js → chunk-eaemyebz.js} +5 -5
  184. package/dist/{chunk-cmdsbsb6.js → chunk-edzkkadh.js} +2 -2
  185. package/dist/chunk-em99fnet.js +128 -0
  186. package/dist/{chunk-hfzj1m07.js → chunk-epyaq1z0.js} +13 -4
  187. package/dist/{chunk-v9y80148.js → chunk-eqmkajs4.js} +96 -189
  188. package/dist/{chunk-cs6y2pc9.js → chunk-ergam9ft.js} +5 -5
  189. package/dist/chunk-es2fdse0.js +63 -0
  190. package/dist/{chunk-cenpqc2t.js → chunk-esn3tgm2.js} +8 -6
  191. package/dist/{chunk-qf2v384j.js → chunk-et8ybmt2.js} +9 -7
  192. package/dist/{chunk-aqa7w38f.js → chunk-ew9rp41b.js} +5 -5
  193. package/dist/{chunk-1yabrspp.js → chunk-ewx6xfzb.js} +2 -2
  194. package/dist/chunk-eyjtbtt0.js +137 -0
  195. package/dist/{chunk-rmbp2das.js → chunk-f0jd2p9n.js} +20 -18
  196. package/dist/{chunk-vzqrbsd1.js → chunk-f69rgsm2.js} +5 -5
  197. package/dist/{chunk-f3bapa1x.js → chunk-f6rbj3gz.js} +12 -7
  198. package/dist/chunk-fbhyqxdg.js +1182 -0
  199. package/dist/chunk-feyzykye.js +10 -0
  200. package/dist/chunk-ffhejx56.js +107 -0
  201. package/dist/{chunk-vbbf707n.js → chunk-fhx6nt2a.js} +38 -28
  202. package/dist/chunk-fkkysfev.js +158 -0
  203. package/dist/chunk-fn510gqw.js +216 -0
  204. package/dist/chunk-ftsg8bjm.js +117 -0
  205. package/dist/{chunk-t3bf8hcf.js → chunk-fyts9grb.js} +2 -2
  206. package/dist/{chunk-kd97kxjn.js → chunk-fz0ch109.js} +3 -2
  207. package/dist/{chunk-ye18m1zb.js → chunk-g1jarkx9.js} +38 -8
  208. package/dist/chunk-g9f19ttm.js +15 -0
  209. package/dist/chunk-g9qte35t.js +341 -0
  210. package/dist/chunk-gaav53dc.js +105 -0
  211. package/dist/chunk-gfx3cwrk.js +75 -0
  212. package/dist/{chunk-z9tgzh90.js → chunk-gk2d1x2a.js} +44 -33
  213. package/dist/chunk-gkbat1p9.js +121 -0
  214. package/dist/{chunk-5b7119h5.js → chunk-gmnyk2t8.js} +8 -6
  215. package/dist/{chunk-qvd0k5dn.js → chunk-gnmdprq3.js} +184 -345
  216. package/dist/{chunk-bq6x1ehp.js → chunk-gpz0ddyz.js} +8 -8
  217. package/dist/{chunk-684kdqez.js → chunk-gv1csnc3.js} +198 -302
  218. package/dist/{chunk-x51mdzqq.js → chunk-gv37c8ax.js} +3 -3
  219. package/dist/{chunk-t6h4wf3k.js → chunk-gzr2601k.js} +9 -9
  220. package/dist/{chunk-45e9mkyr.js → chunk-h3pda469.js} +37 -82
  221. package/dist/{chunk-qqfa0dqg.js → chunk-h4b85amj.js} +20 -32
  222. package/dist/{chunk-j4c8s7tn.js → chunk-h5zv78zq.js} +9 -6
  223. package/dist/{chunk-2wcbcdky.js → chunk-h7edytkc.js} +5 -5
  224. package/dist/{chunk-402jrnj6.js → chunk-ha0wbzc3.js} +8 -8
  225. package/dist/{chunk-nxsh6de2.js → chunk-hcgkak1j.js} +20 -125
  226. package/dist/{chunk-tjaqa99q.js → chunk-hezj20qy.js} +3 -3
  227. package/dist/{chunk-kyer92r4.js → chunk-hf85ht0m.js} +2 -2
  228. package/dist/{chunk-m17y8b22.js → chunk-ht1nfygk.js} +38 -28
  229. package/dist/chunk-j316jjby.js +108 -0
  230. package/dist/chunk-j3fge71v.js +115 -0
  231. package/dist/{chunk-b51jjfh5.js → chunk-j4x0t6k2.js} +42 -31
  232. package/dist/{chunk-9gbamk79.js → chunk-j5bth84e.js} +5 -1
  233. package/dist/chunk-j783d5af.js +134 -0
  234. package/dist/chunk-j7pbwf9x.js +108 -0
  235. package/dist/{chunk-0cpnzx7t.js → chunk-j8rnrm5n.js} +114 -150
  236. package/dist/{chunk-vratq94g.js → chunk-j9gxwbe3.js} +1 -1
  237. package/dist/{chunk-3r24h7t6.js → chunk-jaaxk89e.js} +1 -1
  238. package/dist/{chunk-f4jcw0ea.js → chunk-jaew3662.js} +18 -14
  239. package/dist/{chunk-qpm1tmzz.js → chunk-jbbj16w2.js} +120 -191
  240. package/dist/chunk-jerew25v.js +148 -0
  241. package/dist/{chunk-v399mzxk.js → chunk-jf0p00fz.js} +2 -2
  242. package/dist/{chunk-91r0z5qq.js → chunk-jfsah2w3.js} +1059 -1756
  243. package/dist/{chunk-av73dywf.js → chunk-jna2tcvj.js} +8 -8
  244. package/dist/{chunk-jy35z4n0.js → chunk-jng0mb4r.js} +8 -8
  245. package/dist/chunk-jrrmwfp4.js +66 -0
  246. package/dist/{chunk-3m7ge6tj.js → chunk-jt6fa514.js} +14 -12
  247. package/dist/chunk-jvkyx1b7.js +911 -0
  248. package/dist/{chunk-41xeh3t9.js → chunk-jy6c07wa.js} +4 -4
  249. package/dist/chunk-k1fvb16y.js +269 -0
  250. package/dist/{chunk-bqfnp99q.js → chunk-k3s4yk22.js} +1 -1
  251. package/dist/{chunk-4ycz58wj.js → chunk-k46gxg21.js} +68 -8
  252. package/dist/chunk-k8wwyz2t.js +110 -0
  253. package/dist/{chunk-68qevppc.js → chunk-ka3fdfyb.js} +78 -71
  254. package/dist/{chunk-vaebptnz.js → chunk-ka4x7mhn.js} +38 -28
  255. package/dist/chunk-kb99zpps.js +216 -0
  256. package/dist/{chunk-1dyeexvn.js → chunk-kd3mmsd2.js} +4 -4
  257. package/dist/{chunk-1xkekb9y.js → chunk-kfd89dsd.js} +5 -3
  258. package/dist/{chunk-ecsw41df.js → chunk-km1wcchx.js} +81 -76
  259. package/dist/{chunk-dh6c8y1j.js → chunk-kmhwx18d.js} +3 -3
  260. package/dist/{chunk-224x480q.js → chunk-kq91dwkq.js} +8 -6
  261. package/dist/chunk-m17m84b7.js +111 -0
  262. package/dist/chunk-m1a0s9fd.js +1070 -0
  263. package/dist/{chunk-jafes477.js → chunk-m2bcpk8j.js} +4 -3
  264. package/dist/{chunk-veb0gkcf.js → chunk-m7jtn7dk.js} +74 -68
  265. package/dist/chunk-mq2mgyt9.js +103 -0
  266. package/dist/chunk-msv3w4qp.js +1811 -0
  267. package/dist/{chunk-ch53fgm5.js → chunk-mxe1f4jg.js} +13 -11
  268. package/dist/{chunk-hzttn8j7.js → chunk-mzwjvfr2.js} +124 -126
  269. package/dist/{chunk-2de1vaxf.js → chunk-n2n0sq7r.js} +67 -77
  270. package/dist/{chunk-me2ef6g4.js → chunk-n8mpqdje.js} +1 -1
  271. package/dist/chunk-n9e984ba.js +132 -0
  272. package/dist/chunk-netzwgv1.js +154 -0
  273. package/dist/{chunk-xszk7n10.js → chunk-nh3cd07f.js} +1 -1
  274. package/dist/chunk-njrz6mbe.js +66 -0
  275. package/dist/{chunk-e1ge9n4d.js → chunk-nv7pfr7k.js} +2 -2
  276. package/dist/{chunk-vygf94dw.js → chunk-nwd8pb55.js} +74 -68
  277. package/dist/{chunk-5hva0tsg.js → chunk-p2yv7m0g.js} +6 -6
  278. package/dist/chunk-p5t2vy90.js +259 -0
  279. package/dist/{chunk-zk2wsm7d.js → chunk-p7vkh4wx.js} +2 -2
  280. package/dist/{chunk-da4ve9t5.js → chunk-p8crqj70.js} +10 -10
  281. package/dist/{chunk-n2874aq5.js → chunk-pcngtzr8.js} +12 -6
  282. package/dist/{chunk-6td4c2eq.js → chunk-pdjem6h1.js} +53 -71
  283. package/dist/{chunk-zpc0kwkb.js → chunk-pmxdzjq0.js} +6 -6
  284. package/dist/{chunk-pa7saazk.js → chunk-pnkcecq2.js} +27 -55
  285. package/dist/{chunk-zsfxha74.js → chunk-pshjyzq4.js} +8 -7
  286. package/dist/chunk-pt1yj9zf.js +107 -0
  287. package/dist/{chunk-n9x557ea.js → chunk-py6b9d5b.js} +2312 -4200
  288. package/dist/chunk-q7n8d91g.js +67 -0
  289. package/dist/{chunk-e5pntxye.js → chunk-q7tpyeb3.js} +6 -4
  290. package/dist/{chunk-7ymfj7m3.js → chunk-q82r31er.js} +1 -1
  291. package/dist/chunk-qajrkk97.js +298 -0
  292. package/dist/chunk-qbrh24cn.js +119 -0
  293. package/dist/chunk-qd9ntz7c.js +230 -0
  294. package/dist/chunk-qfr5tcd5.js +2537 -0
  295. package/dist/chunk-qpzfmkct.js +456 -0
  296. package/dist/{chunk-35y0r56v.js → chunk-qtfc6wdh.js} +1 -4
  297. package/dist/chunk-r032587e.js +83 -0
  298. package/dist/{chunk-rryx19hp.js → chunk-r2k2jy0y.js} +2 -2
  299. package/dist/{chunk-pgnnrm2v.js → chunk-r4dnnggx.js} +21 -17
  300. package/dist/{chunk-k9a8jemz.js → chunk-r5n8fvw0.js} +7 -7
  301. package/dist/{chunk-jt0pha6y.js → chunk-r7kh03er.js} +222 -196
  302. package/dist/{chunk-n0k8xrey.js → chunk-rfs0mfg8.js} +140 -158
  303. package/dist/{chunk-dr4qq42x.js → chunk-rgbbtszq.js} +9 -9
  304. package/dist/{chunk-fdwa7gem.js → chunk-rkak3kjw.js} +7 -7
  305. package/dist/chunk-rp568bfw.js +111 -0
  306. package/dist/chunk-rtv718sv.js +146 -0
  307. package/dist/{chunk-rw466wqn.js → chunk-rvkvehat.js} +5284 -3093
  308. package/dist/chunk-s1baskk7.js +14 -0
  309. package/dist/{chunk-2cgdr2n7.js → chunk-s1eb67v3.js} +74 -68
  310. package/dist/{chunk-1szr63w0.js → chunk-s59kx26r.js} +81 -72
  311. package/dist/chunk-s6yk6m3b.js +109 -0
  312. package/dist/{chunk-80qg1pzv.js → chunk-sca71yv8.js} +11 -9
  313. package/dist/chunk-sfrwm87k.js +151 -0
  314. package/dist/chunk-sgaknx21.js +123 -0
  315. package/dist/{chunk-myzwt5yw.js → chunk-snyaz093.js} +9 -15
  316. package/dist/{chunk-rwexx5ns.js → chunk-sq8wkk3z.js} +1 -3
  317. package/dist/{chunk-faycqscv.js → chunk-sxqj7s2h.js} +2 -2
  318. package/dist/chunk-t2m6cjp1.js +264 -0
  319. package/dist/chunk-t6hmvb6k.js +1021 -0
  320. package/dist/chunk-t72x960a.js +125 -0
  321. package/dist/chunk-t9kashay.js +440 -0
  322. package/dist/chunk-t9wzf009.js +151 -0
  323. package/dist/chunk-ta1dgyj1.js +154 -0
  324. package/dist/{chunk-5deqy8r0.js → chunk-tavxhayf.js} +77 -71
  325. package/dist/{chunk-35b0ek0j.js → chunk-tcdv4gp8.js} +13 -9
  326. package/dist/chunk-td3b74vm.js +362 -0
  327. package/dist/{chunk-mt25echc.js → chunk-tezak8rx.js} +1 -1
  328. package/dist/chunk-tgcw0rzx.js +262 -0
  329. package/dist/{chunk-9rcbyag3.js → chunk-tmdbrszg.js} +2 -2
  330. package/dist/{chunk-jknt3rxg.js → chunk-v17qee2y.js} +7 -9
  331. package/dist/{chunk-frbv3xqa.js → chunk-v1jd31dw.js} +2 -2
  332. package/dist/chunk-var1et7e.js +66 -0
  333. package/dist/{chunk-cettj572.js → chunk-ve9wswz4.js} +7 -131
  334. package/dist/{chunk-hqmz36b3.js → chunk-vf612n57.js} +21 -101
  335. package/dist/chunk-vfhabc5j.js +109 -0
  336. package/dist/{chunk-s7qj2hg5.js → chunk-vgy0w6tt.js} +2 -2
  337. package/dist/chunk-vh02fvz1.js +375 -0
  338. package/dist/{chunk-ctmt7xh1.js → chunk-vm935era.js} +619 -887
  339. package/dist/{chunk-dxc7begm.js → chunk-vtb8z6as.js} +14 -10
  340. package/dist/chunk-w2kf9sxn.js +115 -0
  341. package/dist/chunk-w7trx259.js +132 -0
  342. package/dist/{chunk-8z039kef.js → chunk-w92b262y.js} +53 -54
  343. package/dist/chunk-w9zqjhvm.js +103 -0
  344. package/dist/{chunk-9cc60ae5.js → chunk-wb2fvy1k.js} +74 -68
  345. package/dist/chunk-ws2d81aj.js +123 -0
  346. package/dist/{chunk-5zh1fbrj.js → chunk-wssgdcck.js} +2 -2
  347. package/dist/{chunk-t9z6njcr.js → chunk-wtycm8km.js} +9 -9
  348. package/dist/chunk-wz0d8mna.js +108 -0
  349. package/dist/chunk-x01wtn3p.js +144 -0
  350. package/dist/{chunk-dnyeb288.js → chunk-x2sp7rcv.js} +73 -105
  351. package/dist/{chunk-zrse3zpz.js → chunk-xbprynsc.js} +18 -46
  352. package/dist/{chunk-yxnwsp4f.js → chunk-xext3y2y.js} +8 -6
  353. package/dist/{chunk-fzxg8v1y.js → chunk-xycy3c8q.js} +15 -12
  354. package/dist/{chunk-cpma9zs5.js → chunk-y01ys1vm.js} +20 -71
  355. package/dist/{chunk-d7vv2ydf.js → chunk-y78t50v0.js} +2 -2
  356. package/dist/{chunk-xkr7as9h.js → chunk-y9bgt2k1.js} +13 -9
  357. package/dist/{chunk-s2gm9vfk.js → chunk-ydm0nfsv.js} +5 -5
  358. package/dist/{chunk-gjyc3293.js → chunk-yetebjek.js} +282 -495
  359. package/dist/{chunk-hkn7tzgv.js → chunk-ym5r3jnk.js} +1 -1
  360. package/dist/chunk-ysks0ewj.js +237 -0
  361. package/dist/chunk-yv3evkgg.js +68 -0
  362. package/dist/{chunk-athjeyrt.js → chunk-yw79dz62.js} +4 -4
  363. package/dist/{chunk-s84smrx4.js → chunk-yy59gvs4.js} +151 -189
  364. package/dist/{chunk-12pv5fez.js → chunk-yyax4hdg.js} +10 -8
  365. package/dist/chunk-z0q85m5f.js +108 -0
  366. package/dist/chunk-z1bs6d7k.js +24 -0
  367. package/dist/chunk-z6e5jp2w.js +119 -0
  368. package/dist/{chunk-rjz6btwk.js → chunk-z7ssqvt6.js} +4972 -4638
  369. package/dist/chunk-z95yxwyb.js +61 -0
  370. package/dist/{chunk-0nqrscrr.js → chunk-z9aqj026.js} +5 -5
  371. package/dist/chunk-zc6dxhk9.js +169 -0
  372. package/dist/{chunk-ve60fbtd.js → chunk-ze6zvkg6.js} +2 -2
  373. package/dist/{chunk-t0rgmccj.js → chunk-zejm280k.js} +1 -1
  374. package/dist/{chunk-krstc7m7.js → chunk-zfapazzd.js} +15 -11
  375. package/dist/chunk-zj4fqmnc.js +219 -0
  376. package/dist/chunk-zkrpbswn.js +1608 -0
  377. package/dist/chunk-zktbb38m.js +112 -0
  378. package/dist/{chunk-vjc1svpc.js → chunk-zptcqa7t.js} +82 -75
  379. package/dist/{chunk-gbcqdr0x.js → chunk-zvnsjbt8.js} +1 -1
  380. package/dist/chunk-zwaanw8y.js +110 -0
  381. package/dist/{chunk-g3t0act8.js → chunk-zzm33q8x.js} +1 -1
  382. package/dist/{chunk-s8fzxy94.js → chunk-zzzc1ead.js} +17 -13
  383. package/dist/cli.js +34 -10
  384. package/dist/vendor/audio-capture/arm64-darwin/audio-capture.node +0 -0
  385. package/dist/vendor/audio-capture/arm64-linux/audio-capture.node +0 -0
  386. package/dist/vendor/audio-capture/arm64-win32/audio-capture.node +0 -0
  387. package/dist/vendor/audio-capture/x64-darwin/audio-capture.node +0 -0
  388. package/dist/vendor/audio-capture/x64-linux/audio-capture.node +0 -0
  389. package/dist/vendor/audio-capture/x64-win32/audio-capture.node +0 -0
  390. package/package.json +8 -5
  391. package/scripts/postinstall.cjs +319 -0
  392. package/dist/chunk-0291smg3.js +0 -42
  393. package/dist/chunk-04g2ty3v.js +0 -104
  394. package/dist/chunk-069x95ne.js +0 -764
  395. package/dist/chunk-06x02eab.js +0 -655
  396. package/dist/chunk-09pjmga5.js +0 -713
  397. package/dist/chunk-0g90je6r.js +0 -145
  398. package/dist/chunk-0rddv9vb.js +0 -328
  399. package/dist/chunk-162w6yv3.js +0 -756
  400. package/dist/chunk-1gjbaa3n.js +0 -128
  401. package/dist/chunk-23wg4mnt.js +0 -404
  402. package/dist/chunk-2gbjtg7c.js +0 -102
  403. package/dist/chunk-2v1q0ezq.js +0 -102
  404. package/dist/chunk-37n7jkxe.js +0 -436
  405. package/dist/chunk-38svjnh4.js +0 -158
  406. package/dist/chunk-3bg1089y.js +0 -616
  407. package/dist/chunk-3d8ck5ne.js +0 -112
  408. package/dist/chunk-3g6rf9sz.js +0 -106
  409. package/dist/chunk-3x3rr2n5.js +0 -57
  410. package/dist/chunk-4f6q3d38.js +0 -117
  411. package/dist/chunk-4h57km3m.js +0 -74
  412. package/dist/chunk-4kyh2618.js +0 -99
  413. package/dist/chunk-4w9vc9vc.js +0 -119
  414. package/dist/chunk-53hqpp5z.js +0 -208
  415. package/dist/chunk-5m2rmc2k.js +0 -128
  416. package/dist/chunk-5wp9pkpt.js +0 -539
  417. package/dist/chunk-5ym9f6w3.js +0 -263
  418. package/dist/chunk-6f938733.js +0 -1027
  419. package/dist/chunk-6nenxecd.js +0 -115
  420. package/dist/chunk-6rja0h86.js +0 -1593
  421. package/dist/chunk-70q6dp4d.js +0 -96
  422. package/dist/chunk-7bn0wzs3.js +0 -1493
  423. package/dist/chunk-7e2e0bfm.js +0 -65
  424. package/dist/chunk-7ywadnax.js +0 -490
  425. package/dist/chunk-7z33j54s.js +0 -142
  426. package/dist/chunk-8yvfkzyh.js +0 -58
  427. package/dist/chunk-9abpx1kv.js +0 -2833
  428. package/dist/chunk-9ks2nswb.js +0 -114
  429. package/dist/chunk-9wrds5tr.js +0 -109
  430. package/dist/chunk-ab2twken.js +0 -102
  431. package/dist/chunk-abncjeag.js +0 -97
  432. package/dist/chunk-am6w4x6y.js +0 -103
  433. package/dist/chunk-b73bd7db.js +0 -496
  434. package/dist/chunk-bc7nvynh.js +0 -195
  435. package/dist/chunk-br17dhef.js +0 -103
  436. package/dist/chunk-c3k0sdey.js +0 -281
  437. package/dist/chunk-c909bmyv.js +0 -103
  438. package/dist/chunk-cftsv9w4.js +0 -129
  439. package/dist/chunk-cj1a7npk.js +0 -99
  440. package/dist/chunk-cyscs4k5.js +0 -1330
  441. package/dist/chunk-czr7y063.js +0 -348
  442. package/dist/chunk-d93sndem.js +0 -372
  443. package/dist/chunk-ddz8xbpd.js +0 -481
  444. package/dist/chunk-dkhqx4hk.js +0 -84
  445. package/dist/chunk-dsrharmv.js +0 -359
  446. package/dist/chunk-eqmy5d05.js +0 -56
  447. package/dist/chunk-f2crxw2c.js +0 -5400
  448. package/dist/chunk-f8zga40p.js +0 -234
  449. package/dist/chunk-fbgm2ym6.js +0 -990
  450. package/dist/chunk-fcbbsswe.js +0 -119
  451. package/dist/chunk-fda654nt.js +0 -6121
  452. package/dist/chunk-ffmv9ezj.js +0 -104
  453. package/dist/chunk-fmjte7md.js +0 -38
  454. package/dist/chunk-fqtwqxxc.js +0 -293
  455. package/dist/chunk-g8k85nkd.js +0 -802
  456. package/dist/chunk-ge4ak7dj.js +0 -127
  457. package/dist/chunk-gpqemecy.js +0 -126
  458. package/dist/chunk-h19p6s3b.js +0 -131
  459. package/dist/chunk-j0sk1rct.js +0 -998
  460. package/dist/chunk-j1wfpa1a.js +0 -70
  461. package/dist/chunk-j829fx31.js +0 -3458
  462. package/dist/chunk-jqctzrvd.js +0 -722
  463. package/dist/chunk-jx817w05.js +0 -11
  464. package/dist/chunk-ka6sab33.js +0 -174
  465. package/dist/chunk-krjsvmwp.js +0 -101
  466. package/dist/chunk-kvpe50pm.js +0 -311
  467. package/dist/chunk-mez504fj.js +0 -113
  468. package/dist/chunk-mj6wbrae.js +0 -105
  469. package/dist/chunk-n0pg2kpe.js +0 -122
  470. package/dist/chunk-n4qtqkp0.js +0 -295
  471. package/dist/chunk-n9meha2m.js +0 -73
  472. package/dist/chunk-ndk7q5n3.js +0 -169
  473. package/dist/chunk-ng6n9t4h.js +0 -56
  474. package/dist/chunk-p3pz13x2.js +0 -1933
  475. package/dist/chunk-p9ez6zgq.js +0 -2656
  476. package/dist/chunk-ph750kx1.js +0 -550
  477. package/dist/chunk-pxb99zqs.js +0 -117
  478. package/dist/chunk-q1yqc5n3.js +0 -100
  479. package/dist/chunk-qtfqk0jr.js +0 -131
  480. package/dist/chunk-qzfmdh1t.js +0 -388
  481. package/dist/chunk-r3cv0j9n.js +0 -456
  482. package/dist/chunk-rx0pbgym.js +0 -97
  483. package/dist/chunk-s624rd5j.js +0 -531
  484. package/dist/chunk-satndwqj.js +0 -285
  485. package/dist/chunk-ssrxnkd1.js +0 -109
  486. package/dist/chunk-t2pgctqx.js +0 -106
  487. package/dist/chunk-t7sgwf31.js +0 -644
  488. package/dist/chunk-tth904tj.js +0 -53
  489. package/dist/chunk-typpbjhy.js +0 -128
  490. package/dist/chunk-vp6nrhdq.js +0 -102
  491. package/dist/chunk-vtjm53nt.js +0 -432
  492. package/dist/chunk-w412n7tq.js +0 -469
  493. package/dist/chunk-w4153rky.js +0 -1885
  494. package/dist/chunk-wdgv15as.js +0 -212
  495. package/dist/chunk-wgn9kydv.js +0 -58
  496. package/dist/chunk-whknbrk0.js +0 -184
  497. package/dist/chunk-x1k8e1xc.js +0 -56
  498. package/dist/chunk-x45xx6sc.js +0 -105
  499. package/dist/chunk-x4xvqbe5.js +0 -1166
  500. package/dist/chunk-x8b7vft8.js +0 -132
  501. package/dist/chunk-xaycc8qe.js +0 -44
  502. package/dist/chunk-xd4785ks.js +0 -73
  503. package/dist/chunk-xjxgmxhq.js +0 -463
  504. package/dist/chunk-xx2x3tz9.js +0 -166
  505. package/dist/chunk-y2j23eem.js +0 -101
  506. package/dist/chunk-y83j09wv.js +0 -123
  507. package/dist/chunk-yh8460pb.js +0 -119
  508. package/dist/chunk-z6nhchdb.js +0 -60
  509. package/dist/chunk-zbt73sj7.js +0 -192
  510. package/dist/chunk-zmwaatmq.js +0 -118
  511. package/dist/chunk-zvdg9tex.js +0 -135
  512. package/dist/chunk-zwa780cx.js +0 -584
  513. package/dist/{chunk-whvdag1y.js → chunk-3bfs3x0h.js} +9 -9
  514. package/dist/{chunk-27xc1csx.js → chunk-dggvswz1.js} +3 -3
@@ -0,0 +1,1172 @@
1
+ // @bun
2
+ import {
3
+ Select,
4
+ getAllHooks,
5
+ getHookDisplayText,
6
+ getTools,
7
+ hookSourceDescriptionDisplayString,
8
+ hookSourceHeaderDisplayString,
9
+ hookSourceInlineDisplayString,
10
+ init_AppState,
11
+ init_hooksSettings,
12
+ init_select,
13
+ init_tools1 as init_tools,
14
+ init_useSettingsChange,
15
+ sortMatchersByPriority,
16
+ useAppState,
17
+ useAppStateStore,
18
+ useSettingsChange
19
+ } from "./chunk-cy6ezb6j.js";
20
+ import"./chunk-zejm280k.js";
21
+ import"./chunk-g1jarkx9.js";
22
+ import"./chunk-yyax4hdg.js";
23
+ import"./chunk-4nspekjp.js";
24
+ import"./chunk-kmhwx18d.js";
25
+ import"./chunk-var1et7e.js";
26
+ import"./chunk-2gzv8nrw.js";
27
+ import"./chunk-ehtwnxpg.js";
28
+ import"./chunk-dmxte86x.js";
29
+ import"./chunk-d6ve5pze.js";
30
+ import"./chunk-bxcfz5gy.js";
31
+ import"./chunk-dekbr08w.js";
32
+ import"./chunk-f6rbj3gz.js";
33
+ import"./chunk-9f14bkn9.js";
34
+ import"./chunk-cgfdkzhb.js";
35
+ import"./chunk-k46gxg21.js";
36
+ import"./chunk-j5bth84e.js";
37
+ import"./chunk-8qhr4n77.js";
38
+ import"./chunk-az5x70pn.js";
39
+ import"./chunk-epyaq1z0.js";
40
+ import {
41
+ init_useKeybinding
42
+ } from "./chunk-0jzdwbdc.js";
43
+ import"./chunk-ps49ymvj.js";
44
+ import"./chunk-p7vkh4wx.js";
45
+ import"./chunk-cmcbatgz.js";
46
+ import"./chunk-agx5w9ce.js";
47
+ import"./chunk-48w0df8a.js";
48
+ import"./chunk-y78t50v0.js";
49
+ import"./chunk-4jm600zv.js";
50
+ import"./chunk-n8mpqdje.js";
51
+ import"./chunk-dqvwn28p.js";
52
+ import"./chunk-esn3tgm2.js";
53
+ import"./chunk-mx28h61f.js";
54
+ import"./chunk-dsbewdgm.js";
55
+ import"./chunk-sxqj7s2h.js";
56
+ import"./chunk-8201tnhf.js";
57
+ import"./chunk-2qwgfjcj.js";
58
+ import"./chunk-chsyvavm.js";
59
+ import"./chunk-w92b262y.js";
60
+ import {
61
+ getSettingsForSource,
62
+ getSettings_DEPRECATED,
63
+ init_settings1 as init_settings,
64
+ init_stringUtils,
65
+ plural
66
+ } from "./chunk-c1k9tg7h.js";
67
+ import"./chunk-905d2hee.js";
68
+ import"./chunk-rkak3kjw.js";
69
+ import"./chunk-p2yv7m0g.js";
70
+ import"./chunk-1cwdhk7a.js";
71
+ import"./chunk-j9gxwbe3.js";
72
+ import"./chunk-64c1avct.js";
73
+ import"./chunk-6kpbgc5w.js";
74
+ import"./chunk-8g5pe1gr.js";
75
+ import"./chunk-hezj20qy.js";
76
+ import"./chunk-4cp6193g.js";
77
+ import"./chunk-8g747a8x.js";
78
+ import"./chunk-d7886r6a.js";
79
+ import"./chunk-f5ma3nh5.js";
80
+ import"./chunk-qz2x630m.js";
81
+ import"./chunk-dk8287aa.js";
82
+ import"./chunk-r2k2jy0y.js";
83
+ import"./chunk-3c25bcsw.js";
84
+ import"./chunk-2q39ej51.js";
85
+ import"./chunk-q82r31er.js";
86
+ import"./chunk-p2816w9z.js";
87
+ import"./chunk-v9smspw2.js";
88
+ import"./chunk-v1kzp02e.js";
89
+ import"./chunk-qpzfmkct.js";
90
+ import"./chunk-crmjpsqe.js";
91
+ import {
92
+ Dialog,
93
+ Link,
94
+ ThemedBox_default,
95
+ ThemedText,
96
+ init_src,
97
+ useKeybinding
98
+ } from "./chunk-rvkvehat.js";
99
+ import {
100
+ require_jsx_dev_runtime,
101
+ require_react
102
+ } from "./chunk-g338npwr.js";
103
+ import {
104
+ init_analytics,
105
+ logEvent
106
+ } from "./chunk-h0rbjg6x.js";
107
+ import"./chunk-0vkfrmqm.js";
108
+ import"./chunk-0xjaqda8.js";
109
+ import"./chunk-21z7acxh.js";
110
+ import"./chunk-rgbbtszq.js";
111
+ import"./chunk-1thgdca1.js";
112
+ import"./chunk-qnfx3qtx.js";
113
+ import"./chunk-yw79dz62.js";
114
+ import"./chunk-b81hd3m6.js";
115
+ import"./chunk-61ahbn23.js";
116
+ import"./chunk-8tnsngw2.js";
117
+ import"./chunk-edzkkadh.js";
118
+ import"./chunk-bwg7582d.js";
119
+ import"./chunk-5z28bqne.js";
120
+ import {
121
+ figures_default,
122
+ init_figures
123
+ } from "./chunk-qajrkk97.js";
124
+ import"./chunk-hcgkak1j.js";
125
+ import"./chunk-fbv4apne.js";
126
+ import"./chunk-z6e5jp2w.js";
127
+ import"./chunk-jaaxk89e.js";
128
+ import {
129
+ getRegisteredHooks,
130
+ init_state
131
+ } from "./chunk-h4b85amj.js";
132
+ import"./chunk-07069jq1.js";
133
+ import {
134
+ init_memoize,
135
+ memoize_default
136
+ } from "./chunk-vf612n57.js";
137
+ import"./chunk-d4mdda98.js";
138
+ import"./chunk-7wm5s02e.js";
139
+ import"./chunk-4g3v8y12.js";
140
+ import"./chunk-7739pg2c.js";
141
+ import"./chunk-nh3cd07f.js";
142
+ import"./chunk-8pn8tvgg.js";
143
+ import"./chunk-netzwgv1.js";
144
+ import {
145
+ __esm,
146
+ __toESM
147
+ } from "./chunk-qp2qdcda.js";
148
+
149
+ // src/utils/hooks/hooksConfigManager.ts
150
+ function groupHooksByEventAndMatcher(appState, toolNames) {
151
+ const grouped = {
152
+ PreToolUse: {},
153
+ PostToolUse: {},
154
+ PostToolUseFailure: {},
155
+ PermissionDenied: {},
156
+ Notification: {},
157
+ UserPromptSubmit: {},
158
+ SessionStart: {},
159
+ SessionEnd: {},
160
+ Stop: {},
161
+ StopFailure: {},
162
+ SubagentStart: {},
163
+ SubagentStop: {},
164
+ PreCompact: {},
165
+ PostCompact: {},
166
+ PermissionRequest: {},
167
+ Setup: {},
168
+ TeammateIdle: {},
169
+ TaskCreated: {},
170
+ TaskCompleted: {},
171
+ Elicitation: {},
172
+ ElicitationResult: {},
173
+ ConfigChange: {},
174
+ WorktreeCreate: {},
175
+ WorktreeRemove: {},
176
+ InstructionsLoaded: {},
177
+ CwdChanged: {},
178
+ FileChanged: {}
179
+ };
180
+ const metadata = getHookEventMetadata(toolNames);
181
+ getAllHooks(appState).forEach((hook) => {
182
+ const eventGroup = grouped[hook.event];
183
+ if (eventGroup) {
184
+ const matcherKey = metadata[hook.event].matcherMetadata !== undefined ? hook.matcher || "" : "";
185
+ if (!eventGroup[matcherKey]) {
186
+ eventGroup[matcherKey] = [];
187
+ }
188
+ eventGroup[matcherKey].push(hook);
189
+ }
190
+ });
191
+ const registeredHooks = getRegisteredHooks();
192
+ if (registeredHooks) {
193
+ for (const [event, matchers] of Object.entries(registeredHooks)) {
194
+ const hookEvent = event;
195
+ const eventGroup = grouped[hookEvent];
196
+ if (!eventGroup)
197
+ continue;
198
+ for (const matcher of matchers) {
199
+ const matcherKey = matcher.matcher || "";
200
+ if ("pluginRoot" in matcher) {
201
+ eventGroup[matcherKey] ??= [];
202
+ for (const hook of matcher.hooks) {
203
+ eventGroup[matcherKey].push({
204
+ event: hookEvent,
205
+ config: hook,
206
+ matcher: matcher.matcher,
207
+ source: "pluginHook",
208
+ pluginName: matcher.pluginId
209
+ });
210
+ }
211
+ } else if (process.env.USER_TYPE === "ant") {
212
+ eventGroup[matcherKey] ??= [];
213
+ for (const _hook of matcher.hooks) {
214
+ eventGroup[matcherKey].push({
215
+ event: hookEvent,
216
+ config: {
217
+ type: "command",
218
+ command: "[ANT-ONLY] Built-in Hook"
219
+ },
220
+ matcher: matcher.matcher,
221
+ source: "builtinHook"
222
+ });
223
+ }
224
+ }
225
+ }
226
+ }
227
+ }
228
+ return grouped;
229
+ }
230
+ function getSortedMatchersForEvent(hooksByEventAndMatcher, event) {
231
+ const matchers = Object.keys(hooksByEventAndMatcher[event] || {});
232
+ return sortMatchersByPriority(matchers, hooksByEventAndMatcher, event);
233
+ }
234
+ function getHooksForMatcher(hooksByEventAndMatcher, event, matcher) {
235
+ const matcherKey = matcher ?? "";
236
+ return hooksByEventAndMatcher[event]?.[matcherKey] ?? [];
237
+ }
238
+ function getMatcherMetadata(event, toolNames) {
239
+ return getHookEventMetadata(toolNames)[event].matcherMetadata;
240
+ }
241
+ var getHookEventMetadata;
242
+ var init_hooksConfigManager = __esm(() => {
243
+ init_memoize();
244
+ init_state();
245
+ init_hooksSettings();
246
+ getHookEventMetadata = memoize_default(function(toolNames) {
247
+ return {
248
+ PreToolUse: {
249
+ summary: "Before tool execution",
250
+ description: `Input to command is JSON of tool call arguments.
251
+ Exit code 0 - stdout/stderr not shown
252
+ Exit code 2 - show stderr to model and block tool call
253
+ Other exit codes - show stderr to user only but continue with tool call`,
254
+ matcherMetadata: {
255
+ fieldToMatch: "tool_name",
256
+ values: toolNames
257
+ }
258
+ },
259
+ PostToolUse: {
260
+ summary: "After tool execution",
261
+ description: `Input to command is JSON with fields "inputs" (tool call arguments) and "response" (tool call response).
262
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
263
+ Exit code 2 - show stderr to model immediately
264
+ Other exit codes - show stderr to user only`,
265
+ matcherMetadata: {
266
+ fieldToMatch: "tool_name",
267
+ values: toolNames
268
+ }
269
+ },
270
+ PostToolUseFailure: {
271
+ summary: "After tool execution fails",
272
+ description: `Input to command is JSON with tool_name, tool_input, tool_use_id, error, error_type, is_interrupt, and is_timeout.
273
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
274
+ Exit code 2 - show stderr to model immediately
275
+ Other exit codes - show stderr to user only`,
276
+ matcherMetadata: {
277
+ fieldToMatch: "tool_name",
278
+ values: toolNames
279
+ }
280
+ },
281
+ PermissionDenied: {
282
+ summary: "After auto mode classifier denies a tool call",
283
+ description: `Input to command is JSON with tool_name, tool_input, tool_use_id, and reason.
284
+ Return {"hookSpecificOutput":{"hookEventName":"PermissionDenied","retry":true}} to tell the model it may retry.
285
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
286
+ Other exit codes - show stderr to user only`,
287
+ matcherMetadata: {
288
+ fieldToMatch: "tool_name",
289
+ values: toolNames
290
+ }
291
+ },
292
+ Notification: {
293
+ summary: "When notifications are sent",
294
+ description: `Input to command is JSON with notification message and type.
295
+ Exit code 0 - stdout/stderr not shown
296
+ Other exit codes - show stderr to user only`,
297
+ matcherMetadata: {
298
+ fieldToMatch: "notification_type",
299
+ values: [
300
+ "permission_prompt",
301
+ "idle_prompt",
302
+ "auth_success",
303
+ "elicitation_dialog",
304
+ "elicitation_complete",
305
+ "elicitation_response"
306
+ ]
307
+ }
308
+ },
309
+ UserPromptSubmit: {
310
+ summary: "When the user submits a prompt",
311
+ description: `Input to command is JSON with original user prompt text.
312
+ Exit code 0 - stdout shown to Claude
313
+ Exit code 2 - block processing, erase original prompt, and show stderr to user only
314
+ Other exit codes - show stderr to user only`
315
+ },
316
+ SessionStart: {
317
+ summary: "When a new session is started",
318
+ description: `Input to command is JSON with session start source.
319
+ Exit code 0 - stdout shown to Claude
320
+ Blocking errors are ignored
321
+ Other exit codes - show stderr to user only`,
322
+ matcherMetadata: {
323
+ fieldToMatch: "source",
324
+ values: ["startup", "resume", "clear", "compact"]
325
+ }
326
+ },
327
+ Stop: {
328
+ summary: "Right before Claude concludes its response",
329
+ description: `Exit code 0 - stdout/stderr not shown
330
+ Exit code 2 - show stderr to model and continue conversation
331
+ Other exit codes - show stderr to user only`
332
+ },
333
+ StopFailure: {
334
+ summary: "When the turn ends due to an API error",
335
+ description: "Fires instead of Stop when an API error (rate limit, auth failure, etc.) ended the turn. Fire-and-forget \u2014 hook output and exit codes are ignored.",
336
+ matcherMetadata: {
337
+ fieldToMatch: "error",
338
+ values: [
339
+ "rate_limit",
340
+ "authentication_failed",
341
+ "billing_error",
342
+ "invalid_request",
343
+ "server_error",
344
+ "max_output_tokens",
345
+ "unknown"
346
+ ]
347
+ }
348
+ },
349
+ SubagentStart: {
350
+ summary: "When a subagent (Agent tool call) is started",
351
+ description: `Input to command is JSON with agent_id and agent_type.
352
+ Exit code 0 - stdout shown to subagent
353
+ Blocking errors are ignored
354
+ Other exit codes - show stderr to user only`,
355
+ matcherMetadata: {
356
+ fieldToMatch: "agent_type",
357
+ values: []
358
+ }
359
+ },
360
+ SubagentStop: {
361
+ summary: "Right before a subagent (Agent tool call) concludes its response",
362
+ description: `Input to command is JSON with agent_id, agent_type, and agent_transcript_path.
363
+ Exit code 0 - stdout/stderr not shown
364
+ Exit code 2 - show stderr to subagent and continue having it run
365
+ Other exit codes - show stderr to user only`,
366
+ matcherMetadata: {
367
+ fieldToMatch: "agent_type",
368
+ values: []
369
+ }
370
+ },
371
+ PreCompact: {
372
+ summary: "Before conversation compaction",
373
+ description: `Input to command is JSON with compaction details.
374
+ Exit code 0 - stdout appended as custom compact instructions
375
+ Exit code 2 - block compaction
376
+ Other exit codes - show stderr to user only but continue with compaction`,
377
+ matcherMetadata: {
378
+ fieldToMatch: "trigger",
379
+ values: ["manual", "auto"]
380
+ }
381
+ },
382
+ PostCompact: {
383
+ summary: "After conversation compaction",
384
+ description: `Input to command is JSON with compaction details and the summary.
385
+ Exit code 0 - stdout shown to user
386
+ Other exit codes - show stderr to user only`,
387
+ matcherMetadata: {
388
+ fieldToMatch: "trigger",
389
+ values: ["manual", "auto"]
390
+ }
391
+ },
392
+ SessionEnd: {
393
+ summary: "When a session is ending",
394
+ description: `Input to command is JSON with session end reason.
395
+ Exit code 0 - command completes successfully
396
+ Other exit codes - show stderr to user only`,
397
+ matcherMetadata: {
398
+ fieldToMatch: "reason",
399
+ values: ["clear", "logout", "prompt_input_exit", "other"]
400
+ }
401
+ },
402
+ PermissionRequest: {
403
+ summary: "When a permission dialog is displayed",
404
+ description: `Input to command is JSON with tool_name, tool_input, and tool_use_id.
405
+ Output JSON with hookSpecificOutput containing decision to allow or deny.
406
+ Exit code 0 - use hook decision if provided
407
+ Other exit codes - show stderr to user only`,
408
+ matcherMetadata: {
409
+ fieldToMatch: "tool_name",
410
+ values: toolNames
411
+ }
412
+ },
413
+ Setup: {
414
+ summary: "Repo setup hooks for init and maintenance",
415
+ description: `Input to command is JSON with trigger (init or maintenance).
416
+ Exit code 0 - stdout shown to Claude
417
+ Blocking errors are ignored
418
+ Other exit codes - show stderr to user only`,
419
+ matcherMetadata: {
420
+ fieldToMatch: "trigger",
421
+ values: ["init", "maintenance"]
422
+ }
423
+ },
424
+ TeammateIdle: {
425
+ summary: "When a teammate is about to go idle",
426
+ description: `Input to command is JSON with teammate_name and team_name.
427
+ Exit code 0 - stdout/stderr not shown
428
+ Exit code 2 - show stderr to teammate and prevent idle (teammate continues working)
429
+ Other exit codes - show stderr to user only`
430
+ },
431
+ TaskCreated: {
432
+ summary: "When a task is being created",
433
+ description: `Input to command is JSON with task_id, task_subject, task_description, teammate_name, and team_name.
434
+ Exit code 0 - stdout/stderr not shown
435
+ Exit code 2 - show stderr to model and prevent task creation
436
+ Other exit codes - show stderr to user only`
437
+ },
438
+ TaskCompleted: {
439
+ summary: "When a task is being marked as completed",
440
+ description: `Input to command is JSON with task_id, task_subject, task_description, teammate_name, and team_name.
441
+ Exit code 0 - stdout/stderr not shown
442
+ Exit code 2 - show stderr to model and prevent task completion
443
+ Other exit codes - show stderr to user only`
444
+ },
445
+ Elicitation: {
446
+ summary: "When an MCP server requests user input (elicitation)",
447
+ description: `Input to command is JSON with mcp_server_name, message, and requested_schema.
448
+ Output JSON with hookSpecificOutput containing action (accept/decline/cancel) and optional content.
449
+ Exit code 0 - use hook response if provided
450
+ Exit code 2 - deny the elicitation
451
+ Other exit codes - show stderr to user only`,
452
+ matcherMetadata: {
453
+ fieldToMatch: "mcp_server_name",
454
+ values: []
455
+ }
456
+ },
457
+ ElicitationResult: {
458
+ summary: "After a user responds to an MCP elicitation",
459
+ description: `Input to command is JSON with mcp_server_name, action, content, mode, and elicitation_id.
460
+ Output JSON with hookSpecificOutput containing optional action and content to override the response.
461
+ Exit code 0 - use hook response if provided
462
+ Exit code 2 - block the response (action becomes decline)
463
+ Other exit codes - show stderr to user only`,
464
+ matcherMetadata: {
465
+ fieldToMatch: "mcp_server_name",
466
+ values: []
467
+ }
468
+ },
469
+ ConfigChange: {
470
+ summary: "When configuration files change during a session",
471
+ description: `Input to command is JSON with source (user_settings, project_settings, local_settings, policy_settings, skills) and file_path.
472
+ Exit code 0 - allow the change
473
+ Exit code 2 - block the change from being applied to the session
474
+ Other exit codes - show stderr to user only`,
475
+ matcherMetadata: {
476
+ fieldToMatch: "source",
477
+ values: [
478
+ "user_settings",
479
+ "project_settings",
480
+ "local_settings",
481
+ "policy_settings",
482
+ "skills"
483
+ ]
484
+ }
485
+ },
486
+ InstructionsLoaded: {
487
+ summary: "When an instruction file (CLAUDE.md or rule) is loaded",
488
+ description: `Input to command is JSON with file_path, memory_type (User, Project, Local, Managed), load_reason (session_start, nested_traversal, path_glob_match, include, compact), globs (optional \u2014 the paths: frontmatter patterns that matched), trigger_file_path (optional \u2014 the file Claude touched that caused the load), and parent_file_path (optional \u2014 the file that @-included this one).
489
+ Exit code 0 - command completes successfully
490
+ Other exit codes - show stderr to user only
491
+ This hook is observability-only and does not support blocking.`,
492
+ matcherMetadata: {
493
+ fieldToMatch: "load_reason",
494
+ values: [
495
+ "session_start",
496
+ "nested_traversal",
497
+ "path_glob_match",
498
+ "include",
499
+ "compact"
500
+ ]
501
+ }
502
+ },
503
+ WorktreeCreate: {
504
+ summary: "Create an isolated worktree for VCS-agnostic isolation",
505
+ description: `Input to command is JSON with name (suggested worktree slug).
506
+ Stdout should contain the absolute path to the created worktree directory.
507
+ Exit code 0 - worktree created successfully
508
+ Other exit codes - worktree creation failed`
509
+ },
510
+ WorktreeRemove: {
511
+ summary: "Remove a previously created worktree",
512
+ description: `Input to command is JSON with worktree_path (absolute path to worktree).
513
+ Exit code 0 - worktree removed successfully
514
+ Other exit codes - show stderr to user only`
515
+ },
516
+ CwdChanged: {
517
+ summary: "After the working directory changes",
518
+ description: `Input to command is JSON with old_cwd and new_cwd.
519
+ CLAUDE_ENV_FILE is set \u2014 write bash exports there to apply env to subsequent BashTool commands.
520
+ Hook output can include hookSpecificOutput.watchPaths (array of absolute paths) to register with the FileChanged watcher.
521
+ Exit code 0 - command completes successfully
522
+ Other exit codes - show stderr to user only`
523
+ },
524
+ FileChanged: {
525
+ summary: "When a watched file changes",
526
+ description: `Input to command is JSON with file_path and event (change, add, unlink).
527
+ CLAUDE_ENV_FILE is set \u2014 write bash exports there to apply env to subsequent BashTool commands.
528
+ The matcher field specifies filenames to watch in the current directory (e.g. ".envrc|.env").
529
+ Hook output can include hookSpecificOutput.watchPaths (array of absolute paths) to dynamically update the watch list.
530
+ Exit code 0 - command completes successfully
531
+ Other exit codes - show stderr to user only`
532
+ }
533
+ };
534
+ }, (toolNames) => toolNames.slice().sort().join(","));
535
+ });
536
+
537
+ // src/components/hooks/SelectEventMode.tsx
538
+ function SelectEventMode({
539
+ hookEventMetadata,
540
+ hooksByEvent,
541
+ totalHooksCount,
542
+ restrictedByPolicy,
543
+ onSelectEvent,
544
+ onCancel
545
+ }) {
546
+ const subtitle = `${totalHooksCount} ${plural(totalHooksCount, "hook")} configured`;
547
+ return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Dialog, {
548
+ title: "Hooks",
549
+ subtitle,
550
+ onCancel,
551
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
552
+ flexDirection: "column",
553
+ gap: 1,
554
+ children: [
555
+ restrictedByPolicy && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
556
+ flexDirection: "column",
557
+ children: [
558
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
559
+ color: "suggestion",
560
+ children: [
561
+ figures_default.info,
562
+ " Hooks Restricted by Policy"
563
+ ]
564
+ }, undefined, true, undefined, this),
565
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
566
+ dimColor: true,
567
+ children: "Only hooks from managed settings can run. User-defined hooks from ~/.claude/settings.json, .claude/settings.json, and .claude/settings.local.json are blocked."
568
+ }, undefined, false, undefined, this)
569
+ ]
570
+ }, undefined, true, undefined, this),
571
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
572
+ flexDirection: "column",
573
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
574
+ dimColor: true,
575
+ children: [
576
+ figures_default.info,
577
+ " This menu is read-only. To add or modify hooks, edit settings.json directly or ask Claude.",
578
+ " ",
579
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Link, {
580
+ url: "https://code.claude.com/docs/en/hooks",
581
+ children: "Learn more"
582
+ }, undefined, false, undefined, this)
583
+ ]
584
+ }, undefined, true, undefined, this)
585
+ }, undefined, false, undefined, this),
586
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
587
+ flexDirection: "column",
588
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Select, {
589
+ onChange: (value) => {
590
+ onSelectEvent(value);
591
+ },
592
+ onCancel,
593
+ options: Object.entries(hookEventMetadata).map(([name, metadata]) => {
594
+ const count = hooksByEvent[name] || 0;
595
+ return {
596
+ label: count > 0 ? /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
597
+ children: [
598
+ name,
599
+ " ",
600
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
601
+ color: "suggestion",
602
+ children: [
603
+ "(",
604
+ count,
605
+ ")"
606
+ ]
607
+ }, undefined, true, undefined, this)
608
+ ]
609
+ }, undefined, true, undefined, this) : name,
610
+ value: name,
611
+ description: metadata.summary
612
+ };
613
+ })
614
+ }, undefined, false, undefined, this)
615
+ }, undefined, false, undefined, this)
616
+ ]
617
+ }, undefined, true, undefined, this)
618
+ }, undefined, false, undefined, this);
619
+ }
620
+ var jsx_dev_runtime;
621
+ var init_SelectEventMode = __esm(() => {
622
+ init_figures();
623
+ init_src();
624
+ init_stringUtils();
625
+ init_select();
626
+ init_src();
627
+ jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
628
+ });
629
+
630
+ // src/components/hooks/SelectHookMode.tsx
631
+ function SelectHookMode({
632
+ selectedEvent,
633
+ selectedMatcher,
634
+ hooksForSelectedMatcher,
635
+ hookEventMetadata,
636
+ onSelect,
637
+ onCancel
638
+ }) {
639
+ const title = hookEventMetadata.matcherMetadata !== undefined ? `${selectedEvent} - Matcher: ${selectedMatcher || "(all)"}` : selectedEvent;
640
+ if (hooksForSelectedMatcher.length === 0) {
641
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Dialog, {
642
+ title,
643
+ subtitle: hookEventMetadata.description,
644
+ onCancel,
645
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
646
+ children: "Esc to go back"
647
+ }, undefined, false, undefined, this),
648
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
649
+ flexDirection: "column",
650
+ gap: 1,
651
+ children: [
652
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
653
+ dimColor: true,
654
+ children: "No hooks configured for this event."
655
+ }, undefined, false, undefined, this),
656
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
657
+ dimColor: true,
658
+ children: "To add hooks, edit settings.json directly or ask Claude."
659
+ }, undefined, false, undefined, this)
660
+ ]
661
+ }, undefined, true, undefined, this)
662
+ }, undefined, false, undefined, this);
663
+ }
664
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Dialog, {
665
+ title,
666
+ subtitle: hookEventMetadata.description,
667
+ onCancel,
668
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
669
+ flexDirection: "column",
670
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Select, {
671
+ options: hooksForSelectedMatcher.map((hook, index) => ({
672
+ label: `[${hook.config.type}] ${getHookDisplayText(hook.config)}`,
673
+ value: index.toString(),
674
+ description: hook.source === "pluginHook" && hook.pluginName ? `${hookSourceHeaderDisplayString(hook.source)} (${hook.pluginName})` : hookSourceHeaderDisplayString(hook.source)
675
+ })),
676
+ onChange: (value) => {
677
+ const index = parseInt(value, 10);
678
+ const hook = hooksForSelectedMatcher[index];
679
+ if (hook) {
680
+ onSelect(hook);
681
+ }
682
+ },
683
+ onCancel
684
+ }, undefined, false, undefined, this)
685
+ }, undefined, false, undefined, this)
686
+ }, undefined, false, undefined, this);
687
+ }
688
+ var jsx_dev_runtime2;
689
+ var init_SelectHookMode = __esm(() => {
690
+ init_src();
691
+ init_hooksSettings();
692
+ init_select();
693
+ init_src();
694
+ jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
695
+ });
696
+
697
+ // src/components/hooks/SelectMatcherMode.tsx
698
+ function SelectMatcherMode({
699
+ selectedEvent,
700
+ matchersForSelectedEvent,
701
+ hooksByEventAndMatcher,
702
+ eventDescription,
703
+ onSelect,
704
+ onCancel
705
+ }) {
706
+ const matchersWithSources = React.useMemo(() => {
707
+ return matchersForSelectedEvent.map((matcher) => {
708
+ const hooks = hooksByEventAndMatcher[selectedEvent]?.[matcher] || [];
709
+ const sources = Array.from(new Set(hooks.map((h) => h.source)));
710
+ return {
711
+ matcher,
712
+ sources,
713
+ hookCount: hooks.length
714
+ };
715
+ });
716
+ }, [matchersForSelectedEvent, hooksByEventAndMatcher, selectedEvent]);
717
+ if (matchersForSelectedEvent.length === 0) {
718
+ return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Dialog, {
719
+ title: `${selectedEvent} - Matchers`,
720
+ subtitle: eventDescription,
721
+ onCancel,
722
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
723
+ children: "Esc to go back"
724
+ }, undefined, false, undefined, this),
725
+ children: /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
726
+ flexDirection: "column",
727
+ gap: 1,
728
+ children: [
729
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
730
+ dimColor: true,
731
+ children: "No hooks configured for this event."
732
+ }, undefined, false, undefined, this),
733
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
734
+ dimColor: true,
735
+ children: "To add hooks, edit settings.json directly or ask Claude."
736
+ }, undefined, false, undefined, this)
737
+ ]
738
+ }, undefined, true, undefined, this)
739
+ }, undefined, false, undefined, this);
740
+ }
741
+ return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Dialog, {
742
+ title: `${selectedEvent} - Matchers`,
743
+ subtitle: eventDescription,
744
+ onCancel,
745
+ children: /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
746
+ flexDirection: "column",
747
+ children: /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Select, {
748
+ options: matchersWithSources.map((item) => {
749
+ const sourceText = item.sources.map(hookSourceInlineDisplayString).join(", ");
750
+ const matcherLabel = item.matcher || "(all)";
751
+ return {
752
+ label: `[${sourceText}] ${matcherLabel}`,
753
+ value: item.matcher,
754
+ description: `${item.hookCount} ${plural(item.hookCount, "hook")}`
755
+ };
756
+ }),
757
+ onChange: (value) => {
758
+ onSelect(value);
759
+ },
760
+ onCancel
761
+ }, undefined, false, undefined, this)
762
+ }, undefined, false, undefined, this)
763
+ }, undefined, false, undefined, this);
764
+ }
765
+ var React, jsx_dev_runtime3;
766
+ var init_SelectMatcherMode = __esm(() => {
767
+ init_src();
768
+ init_hooksSettings();
769
+ init_stringUtils();
770
+ init_select();
771
+ init_src();
772
+ React = __toESM(require_react(), 1);
773
+ jsx_dev_runtime3 = __toESM(require_jsx_dev_runtime(), 1);
774
+ });
775
+
776
+ // src/components/hooks/ViewHookMode.tsx
777
+ function ViewHookMode({
778
+ selectedHook,
779
+ eventSupportsMatcher,
780
+ onCancel
781
+ }) {
782
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Dialog, {
783
+ title: "Hook details",
784
+ onCancel,
785
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
786
+ children: "Esc to go back"
787
+ }, undefined, false, undefined, this),
788
+ children: /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
789
+ flexDirection: "column",
790
+ gap: 1,
791
+ children: [
792
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
793
+ flexDirection: "column",
794
+ children: [
795
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
796
+ children: [
797
+ "Event: ",
798
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
799
+ bold: true,
800
+ children: selectedHook.event
801
+ }, undefined, false, undefined, this)
802
+ ]
803
+ }, undefined, true, undefined, this),
804
+ eventSupportsMatcher && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
805
+ children: [
806
+ "Matcher: ",
807
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
808
+ bold: true,
809
+ children: selectedHook.matcher || "(all)"
810
+ }, undefined, false, undefined, this)
811
+ ]
812
+ }, undefined, true, undefined, this),
813
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
814
+ children: [
815
+ "Type: ",
816
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
817
+ bold: true,
818
+ children: selectedHook.config.type
819
+ }, undefined, false, undefined, this)
820
+ ]
821
+ }, undefined, true, undefined, this),
822
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
823
+ children: [
824
+ "Source:",
825
+ " ",
826
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
827
+ dimColor: true,
828
+ children: hookSourceDescriptionDisplayString(selectedHook.source)
829
+ }, undefined, false, undefined, this)
830
+ ]
831
+ }, undefined, true, undefined, this),
832
+ selectedHook.pluginName && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
833
+ children: [
834
+ "Plugin: ",
835
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
836
+ dimColor: true,
837
+ children: selectedHook.pluginName
838
+ }, undefined, false, undefined, this)
839
+ ]
840
+ }, undefined, true, undefined, this)
841
+ ]
842
+ }, undefined, true, undefined, this),
843
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
844
+ flexDirection: "column",
845
+ children: [
846
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
847
+ dimColor: true,
848
+ children: [
849
+ getContentFieldLabel(selectedHook.config),
850
+ ":"
851
+ ]
852
+ }, undefined, true, undefined, this),
853
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
854
+ borderStyle: "round",
855
+ borderDimColor: true,
856
+ paddingLeft: 1,
857
+ paddingRight: 1,
858
+ children: /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
859
+ children: getContentFieldValue(selectedHook.config)
860
+ }, undefined, false, undefined, this)
861
+ }, undefined, false, undefined, this)
862
+ ]
863
+ }, undefined, true, undefined, this),
864
+ "statusMessage" in selectedHook.config && selectedHook.config.statusMessage && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
865
+ children: [
866
+ "Status message:",
867
+ " ",
868
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
869
+ dimColor: true,
870
+ children: selectedHook.config.statusMessage
871
+ }, undefined, false, undefined, this)
872
+ ]
873
+ }, undefined, true, undefined, this),
874
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
875
+ dimColor: true,
876
+ children: "To modify or remove this hook, edit settings.json directly or ask Claude to help."
877
+ }, undefined, false, undefined, this)
878
+ ]
879
+ }, undefined, true, undefined, this)
880
+ }, undefined, false, undefined, this);
881
+ }
882
+ function getContentFieldLabel(config) {
883
+ switch (config.type) {
884
+ case "command":
885
+ return "Command";
886
+ case "prompt":
887
+ return "Prompt";
888
+ case "agent":
889
+ return "Prompt";
890
+ case "http":
891
+ return "URL";
892
+ }
893
+ }
894
+ function getContentFieldValue(config) {
895
+ switch (config.type) {
896
+ case "command":
897
+ return config.command;
898
+ case "prompt":
899
+ return config.prompt;
900
+ case "agent":
901
+ return config.prompt;
902
+ case "http":
903
+ return config.url;
904
+ }
905
+ }
906
+ var jsx_dev_runtime4;
907
+ var init_ViewHookMode = __esm(() => {
908
+ init_src();
909
+ init_hooksSettings();
910
+ init_src();
911
+ jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
912
+ });
913
+
914
+ // src/components/hooks/HooksConfigMenu.tsx
915
+ function HooksConfigMenu({ toolNames, onExit }) {
916
+ const [modeState, setModeState] = import_react.useState({
917
+ mode: "select-event"
918
+ });
919
+ const [disabledByPolicy, setDisabledByPolicy] = import_react.useState(() => {
920
+ const settings2 = getSettings_DEPRECATED();
921
+ const hooksDisabled2 = settings2?.disableAllHooks === true;
922
+ return hooksDisabled2 && getSettingsForSource("policySettings")?.disableAllHooks === true;
923
+ });
924
+ const [restrictedByPolicy, setRestrictedByPolicy] = import_react.useState(() => {
925
+ return getSettingsForSource("policySettings")?.allowManagedHooksOnly === true;
926
+ });
927
+ useSettingsChange((source) => {
928
+ if (source === "policySettings") {
929
+ const settings2 = getSettings_DEPRECATED();
930
+ const hooksDisabled2 = settings2?.disableAllHooks === true;
931
+ setDisabledByPolicy(hooksDisabled2 && getSettingsForSource("policySettings")?.disableAllHooks === true);
932
+ setRestrictedByPolicy(getSettingsForSource("policySettings")?.allowManagedHooksOnly === true);
933
+ }
934
+ });
935
+ const mode = modeState.mode;
936
+ const selectedEvent = "event" in modeState ? modeState.event : "PreToolUse";
937
+ const selectedMatcher = "matcher" in modeState ? modeState.matcher : null;
938
+ const mcp = useAppState((s) => s.mcp);
939
+ const appStateStore = useAppStateStore();
940
+ const combinedToolNames = import_react.useMemo(() => [...toolNames, ...mcp.tools.map((tool) => tool.name)], [toolNames, mcp.tools]);
941
+ const hooksByEventAndMatcher = import_react.useMemo(() => groupHooksByEventAndMatcher(appStateStore.getState(), combinedToolNames), [combinedToolNames, appStateStore]);
942
+ const sortedMatchersForSelectedEvent = import_react.useMemo(() => getSortedMatchersForEvent(hooksByEventAndMatcher, selectedEvent), [hooksByEventAndMatcher, selectedEvent]);
943
+ const hooksForSelectedMatcher = import_react.useMemo(() => getHooksForMatcher(hooksByEventAndMatcher, selectedEvent, selectedMatcher), [hooksByEventAndMatcher, selectedEvent, selectedMatcher]);
944
+ const handleExit = import_react.useCallback(() => {
945
+ onExit("Hooks dialog dismissed", { display: "system" });
946
+ }, [onExit]);
947
+ useKeybinding("confirm:no", handleExit, {
948
+ context: "Confirmation",
949
+ isActive: mode === "select-event"
950
+ });
951
+ useKeybinding("confirm:no", () => {
952
+ setModeState({ mode: "select-event" });
953
+ }, {
954
+ context: "Confirmation",
955
+ isActive: mode === "select-matcher"
956
+ });
957
+ useKeybinding("confirm:no", () => {
958
+ if ("event" in modeState) {
959
+ if (getMatcherMetadata(modeState.event, combinedToolNames) !== undefined) {
960
+ setModeState({ mode: "select-matcher", event: modeState.event });
961
+ } else {
962
+ setModeState({ mode: "select-event" });
963
+ }
964
+ }
965
+ }, {
966
+ context: "Confirmation",
967
+ isActive: mode === "select-hook"
968
+ });
969
+ useKeybinding("confirm:no", () => {
970
+ if (modeState.mode === "view-hook") {
971
+ const { event, hook } = modeState;
972
+ setModeState({
973
+ mode: "select-hook",
974
+ event,
975
+ matcher: hook.matcher || ""
976
+ });
977
+ }
978
+ }, {
979
+ context: "Confirmation",
980
+ isActive: mode === "view-hook"
981
+ });
982
+ const hookEventMetadata = getHookEventMetadata(combinedToolNames);
983
+ const settings = getSettings_DEPRECATED();
984
+ const hooksDisabled = settings?.disableAllHooks === true;
985
+ const { hooksByEvent, totalHooksCount } = import_react.useMemo(() => {
986
+ const byEvent = {};
987
+ let total = 0;
988
+ for (const [event, matchers] of Object.entries(hooksByEventAndMatcher)) {
989
+ const eventCount = Object.values(matchers).reduce((sum, hooks) => sum + hooks.length, 0);
990
+ byEvent[event] = eventCount;
991
+ total += eventCount;
992
+ }
993
+ return { hooksByEvent: byEvent, totalHooksCount: total };
994
+ }, [hooksByEventAndMatcher]);
995
+ if (hooksDisabled) {
996
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Dialog, {
997
+ title: "Hook Configuration - Disabled",
998
+ onCancel: handleExit,
999
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1000
+ children: "Esc to close"
1001
+ }, undefined, false, undefined, this),
1002
+ children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1003
+ flexDirection: "column",
1004
+ gap: 1,
1005
+ children: [
1006
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1007
+ flexDirection: "column",
1008
+ children: [
1009
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1010
+ children: [
1011
+ "All hooks are currently ",
1012
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1013
+ bold: true,
1014
+ children: "disabled"
1015
+ }, undefined, false, undefined, this),
1016
+ disabledByPolicy && " by a managed settings file",
1017
+ ". You have",
1018
+ " ",
1019
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1020
+ bold: true,
1021
+ children: totalHooksCount
1022
+ }, undefined, false, undefined, this),
1023
+ " configured",
1024
+ " ",
1025
+ plural(totalHooksCount, "hook"),
1026
+ " that",
1027
+ " ",
1028
+ plural(totalHooksCount, "is", "are"),
1029
+ " not running."
1030
+ ]
1031
+ }, undefined, true, undefined, this),
1032
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1033
+ marginTop: 1,
1034
+ children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1035
+ dimColor: true,
1036
+ children: "When hooks are disabled:"
1037
+ }, undefined, false, undefined, this)
1038
+ }, undefined, false, undefined, this),
1039
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1040
+ dimColor: true,
1041
+ children: "\xB7 No hook commands will execute"
1042
+ }, undefined, false, undefined, this),
1043
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1044
+ dimColor: true,
1045
+ children: "\xB7 StatusLine will not be displayed"
1046
+ }, undefined, false, undefined, this),
1047
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1048
+ dimColor: true,
1049
+ children: "\xB7 Tool operations will proceed without hook validation"
1050
+ }, undefined, false, undefined, this)
1051
+ ]
1052
+ }, undefined, true, undefined, this),
1053
+ !disabledByPolicy && /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1054
+ dimColor: true,
1055
+ children: 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Claude.'
1056
+ }, undefined, false, undefined, this)
1057
+ ]
1058
+ }, undefined, true, undefined, this)
1059
+ }, undefined, false, undefined, this);
1060
+ }
1061
+ switch (modeState.mode) {
1062
+ case "select-event":
1063
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectEventMode, {
1064
+ hookEventMetadata,
1065
+ hooksByEvent,
1066
+ totalHooksCount,
1067
+ restrictedByPolicy,
1068
+ onSelectEvent: (event) => {
1069
+ if (getMatcherMetadata(event, combinedToolNames) !== undefined) {
1070
+ setModeState({ mode: "select-matcher", event });
1071
+ } else {
1072
+ setModeState({ mode: "select-hook", event, matcher: "" });
1073
+ }
1074
+ },
1075
+ onCancel: handleExit
1076
+ }, undefined, false, undefined, this);
1077
+ case "select-matcher":
1078
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectMatcherMode, {
1079
+ selectedEvent: modeState.event,
1080
+ matchersForSelectedEvent: sortedMatchersForSelectedEvent,
1081
+ hooksByEventAndMatcher,
1082
+ eventDescription: hookEventMetadata[modeState.event].description,
1083
+ onSelect: (matcher) => {
1084
+ setModeState({
1085
+ mode: "select-hook",
1086
+ event: modeState.event,
1087
+ matcher
1088
+ });
1089
+ },
1090
+ onCancel: () => {
1091
+ setModeState({ mode: "select-event" });
1092
+ }
1093
+ }, undefined, false, undefined, this);
1094
+ case "select-hook":
1095
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectHookMode, {
1096
+ selectedEvent: modeState.event,
1097
+ selectedMatcher: modeState.matcher,
1098
+ hooksForSelectedMatcher,
1099
+ hookEventMetadata: hookEventMetadata[modeState.event],
1100
+ onSelect: (hook) => {
1101
+ setModeState({
1102
+ mode: "view-hook",
1103
+ event: modeState.event,
1104
+ hook
1105
+ });
1106
+ },
1107
+ onCancel: () => {
1108
+ if (getMatcherMetadata(modeState.event, combinedToolNames) !== undefined) {
1109
+ setModeState({
1110
+ mode: "select-matcher",
1111
+ event: modeState.event
1112
+ });
1113
+ } else {
1114
+ setModeState({ mode: "select-event" });
1115
+ }
1116
+ }
1117
+ }, undefined, false, undefined, this);
1118
+ case "view-hook":
1119
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ViewHookMode, {
1120
+ selectedHook: modeState.hook,
1121
+ eventSupportsMatcher: getMatcherMetadata(modeState.event, combinedToolNames) !== undefined,
1122
+ onCancel: () => {
1123
+ const { event, hook } = modeState;
1124
+ setModeState({
1125
+ mode: "select-hook",
1126
+ event,
1127
+ matcher: hook.matcher || ""
1128
+ });
1129
+ }
1130
+ }, undefined, false, undefined, this);
1131
+ }
1132
+ }
1133
+ var import_react, jsx_dev_runtime5;
1134
+ var init_HooksConfigMenu = __esm(() => {
1135
+ init_AppState();
1136
+ init_useSettingsChange();
1137
+ init_src();
1138
+ init_useKeybinding();
1139
+ init_hooksConfigManager();
1140
+ init_settings();
1141
+ init_stringUtils();
1142
+ init_src();
1143
+ init_SelectEventMode();
1144
+ init_SelectHookMode();
1145
+ init_SelectMatcherMode();
1146
+ init_ViewHookMode();
1147
+ import_react = __toESM(require_react(), 1);
1148
+ jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
1149
+ });
1150
+
1151
+ // src/commands/hooks/hooks.tsx
1152
+ var jsx_dev_runtime6, call = async (onDone, context) => {
1153
+ logEvent("tengu_hooks_command", {});
1154
+ const appState = context.getAppState();
1155
+ const permissionContext = appState.toolPermissionContext;
1156
+ const toolNames = getTools(permissionContext).map((tool) => tool.name);
1157
+ return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(HooksConfigMenu, {
1158
+ toolNames,
1159
+ onExit: onDone
1160
+ }, undefined, false, undefined, this);
1161
+ };
1162
+ var init_hooks = __esm(() => {
1163
+ init_HooksConfigMenu();
1164
+ init_analytics();
1165
+ init_tools();
1166
+ jsx_dev_runtime6 = __toESM(require_jsx_dev_runtime(), 1);
1167
+ });
1168
+ init_hooks();
1169
+
1170
+ export {
1171
+ call
1172
+ };