@jdi-code/claude-code 1.0.3 → 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 (539) hide show
  1. package/README.md +104 -369
  2. package/dist/{chunk-4t7n5hfg.js → chunk-0318ehfm.js} +8 -8
  3. package/dist/chunk-050fe4m3.js +68 -0
  4. package/dist/chunk-06v69x0b.js +127 -0
  5. package/dist/chunk-07069jq1.js +30 -0
  6. package/dist/chunk-0c9xpqm8.js +106 -0
  7. package/dist/chunk-0hxxwcs1.js +107 -0
  8. package/dist/chunk-0nsb3kxz.js +440 -0
  9. package/dist/{chunk-1cbn5kxf.js → chunk-0rpb2bdp.js} +3 -2
  10. package/dist/{chunk-vykgfhrb.js → chunk-0svbkpfn.js} +5 -5
  11. package/dist/chunk-0vg07894.js +121 -0
  12. package/dist/{chunk-e4vsvf0r.js → chunk-0zefjhrg.js} +4 -4
  13. package/dist/chunk-0zfmj5y2.js +106 -0
  14. package/dist/{chunk-czkshaff.js → chunk-107p04a0.js} +13 -11
  15. package/dist/{chunk-z4dm354d.js → chunk-13f30tg0.js} +1 -1
  16. package/dist/{chunk-44fpr6jq.js → chunk-168xb8v1.js} +4 -2
  17. package/dist/{chunk-0w63x62y.js → chunk-181q7ysj.js} +79 -63
  18. package/dist/{chunk-6mapphaq.js → chunk-18jc5efa.js} +8 -8
  19. package/dist/chunk-19j7nkpy.js +133 -0
  20. package/dist/chunk-1c2qp0ks.js +33068 -0
  21. package/dist/{chunk-0e1xsncc.js → chunk-1cwdhk7a.js} +1 -1
  22. package/dist/{chunk-7m2nd8da.js → chunk-1erfksyp.js} +6 -9
  23. package/dist/{chunk-rs45skes.js → chunk-1h1tc4mw.js} +13 -10
  24. package/dist/{chunk-91rcbmch.js → chunk-1rngm3yy.js} +155 -184
  25. package/dist/{chunk-3gqdqmzb.js → chunk-1vthytca.js} +16 -12
  26. package/dist/{chunk-xe6z85xc.js → chunk-1xbs4yb6.js} +19 -16
  27. package/dist/chunk-1xj1yz5n.js +109 -0
  28. package/dist/chunk-21mfpnva.js +85 -0
  29. package/dist/chunk-2361j94t.js +1811 -0
  30. package/dist/chunk-238g70xa.js +1 -1
  31. package/dist/chunk-250f5ce1.js +108 -0
  32. package/dist/{chunk-8yx1trkj.js → chunk-29r4exv2.js} +105 -211
  33. package/dist/chunk-2a8yf5ct.js +72 -0
  34. package/dist/{chunk-h3fqb66h.js → chunk-2bnerkhs.js} +110 -135
  35. package/dist/{chunk-0nt9md2b.js → chunk-2cctz9ww.js} +101 -8
  36. package/dist/chunk-2fwze72g.js +24 -0
  37. package/dist/{chunk-h3qa8f5w.js → chunk-2jvpw0q1.js} +229 -363
  38. package/dist/{chunk-9wm5e9e9.js → chunk-2mj88mnr.js} +42 -31
  39. package/dist/chunk-2q0schcc.js +133 -0
  40. package/dist/{chunk-r66hz8j6.js → chunk-2qp2hc02.js} +14 -12
  41. package/dist/chunk-2t0xa4dt.js +145 -0
  42. package/dist/chunk-2tzxsnha.js +360 -0
  43. package/dist/chunk-2v8cya3p.js +54 -0
  44. package/dist/chunk-2w00z1ct.js +105 -0
  45. package/dist/{chunk-2md1yavs.js → chunk-2wpfdv2t.js} +43 -32
  46. package/dist/chunk-2xcr3eqt.js +65 -0
  47. package/dist/chunk-30bpz5m2.js +34 -0
  48. package/dist/{chunk-hrzerbfw.js → chunk-36b2q5fg.js} +14 -14
  49. package/dist/{chunk-edg1yhec.js → chunk-3aady5e2.js} +2 -2
  50. package/dist/chunk-3ewzhjyb.js +207 -0
  51. package/dist/{chunk-z47tm067.js → chunk-3kpptrnz.js} +54 -47
  52. package/dist/{chunk-yd3av9a3.js → chunk-3na967x3.js} +2 -2
  53. package/dist/chunk-3nk79af8.js +8 -0
  54. package/dist/{chunk-z0cm9r7f.js → chunk-3r66czp1.js} +10 -10
  55. package/dist/{chunk-rnjbczcy.js → chunk-3y3qasy6.js} +13 -11
  56. package/dist/{chunk-nxsh6de2.js → chunk-404qm8xt.js} +16 -12
  57. package/dist/{chunk-mhqthgdg.js → chunk-41grdp0q.js} +5 -5
  58. package/dist/chunk-4cp6193g.js +9076 -0
  59. package/dist/chunk-4g18phg9.js +2535 -0
  60. package/dist/{chunk-6n2qgm9v.js → chunk-4hv90qcz.js} +1 -1
  61. package/dist/chunk-4jkfzf6g.js +81 -0
  62. package/dist/{chunk-5frcqxsv.js → chunk-4m6k7588.js} +127117 -138842
  63. package/dist/chunk-4nspekjp.js +69 -0
  64. package/dist/chunk-4x29t96w.js +119 -0
  65. package/dist/{chunk-40b8p5em.js → chunk-585cb3h6.js} +14 -12
  66. package/dist/{chunk-5dbar61y.js → chunk-59qz55py.js} +77 -61
  67. package/dist/chunk-5bta6qne.js +1030 -0
  68. package/dist/chunk-5dmczs66.js +123 -0
  69. package/dist/{chunk-9e2kqv5g.js → chunk-5pevjsyw.js} +3 -10
  70. package/dist/{chunk-5ndexvh1.js → chunk-5py41v61.js} +10226 -16961
  71. package/dist/{chunk-d5e75scx.js → chunk-5q2gm8dt.js} +5 -5
  72. package/dist/{chunk-893mewv4.js → chunk-5rpyh7nn.js} +1 -1
  73. package/dist/{chunk-hx2tr4ep.js → chunk-5z28bqne.js} +34 -475
  74. package/dist/chunk-5zzwydag.js +1170 -0
  75. package/dist/{chunk-4tyxyfsv.js → chunk-61gm3j90.js} +2 -2
  76. package/dist/chunk-64c1avct.js +13 -0
  77. package/dist/chunk-64hks9ax.js +456 -0
  78. package/dist/{chunk-bw9a5v0b.js → chunk-64m7ax9d.js} +4 -4
  79. package/dist/{chunk-cha1tdry.js → chunk-66hjztcb.js} +1 -1
  80. package/dist/{chunk-q25bjaev.js → chunk-677as3nh.js} +2 -2
  81. package/dist/chunk-69v14ada.js +76 -0
  82. package/dist/chunk-6eahnbxj.js +101 -0
  83. package/dist/chunk-6eg4c33n.js +196 -0
  84. package/dist/chunk-6fjfwj7q.js +214 -0
  85. package/dist/{chunk-70qb5sds.js → chunk-6kwwke3r.js} +2 -2
  86. package/dist/chunk-6m0pc6py.js +311 -0
  87. package/dist/chunk-6mpw9h55.js +1071 -0
  88. package/dist/{chunk-v1mgv1et.js → chunk-6p4cyhb3.js} +4 -3
  89. package/dist/chunk-6r1dx518.js +111 -0
  90. package/dist/{chunk-1n1xqxv5.js → chunk-713bh4cd.js} +1072 -1736
  91. package/dist/{chunk-nstbdz07.js → chunk-7246q965.js} +85 -69
  92. package/dist/{chunk-w6q6a1qj.js → chunk-74mdk2e7.js} +564 -864
  93. package/dist/{chunk-77czbpcq.js → chunk-76pa90ge.js} +104 -90
  94. package/dist/chunk-77nkh0x1.js +82 -0
  95. package/dist/chunk-7bsbnzpm.js +65 -0
  96. package/dist/chunk-7r3v46aq.js +167 -0
  97. package/dist/chunk-7vf8s593.js +235 -0
  98. package/dist/chunk-7x6ng8fp.js +64 -0
  99. package/dist/chunk-7xy990yb.js +81 -0
  100. package/dist/chunk-7xyswgjh.js +8 -0
  101. package/dist/chunk-80p18mf8.js +228 -0
  102. package/dist/{chunk-dv1wfr85.js → chunk-8225arm6.js} +5 -4
  103. package/dist/{chunk-vdbes184.js → chunk-82rh5hpz.js} +70 -10
  104. package/dist/chunk-84nf3k34.js +73 -0
  105. package/dist/chunk-85v0yx5b.js +106 -0
  106. package/dist/{chunk-x5j50p5x.js → chunk-86f4vq6n.js} +5 -5
  107. package/dist/{chunk-e5ga3s0y.js → chunk-86vec0h6.js} +148 -421
  108. package/dist/chunk-8az1n4zt.js +110 -0
  109. package/dist/{chunk-ctw5jwcd.js → chunk-8bwqtasa.js} +10 -10
  110. package/dist/chunk-8c9jtmsm.js +100 -0
  111. package/dist/{chunk-fqc5mcw7.js → chunk-8ca80ew2.js} +9 -9
  112. package/dist/chunk-8g5pe1gr.js +37 -0
  113. package/dist/{chunk-g0j0t6qk.js → chunk-8g747a8x.js} +1 -1
  114. package/dist/{chunk-3vzs2gbq.js → chunk-8gxztyqd.js} +4 -4
  115. package/dist/{chunk-45kxdsp8.js → chunk-8h6sdj66.js} +13 -10
  116. package/dist/{chunk-s8amjdwf.js → chunk-8ht15c7w.js} +7 -7
  117. package/dist/{chunk-ywxd4qw4.js → chunk-8mm8b6dd.js} +2 -5
  118. package/dist/{chunk-sdj9b9wh.js → chunk-8pn8tvgg.js} +9 -154
  119. package/dist/{chunk-pxrffn0w.js → chunk-8vnxjgz9.js} +11 -5
  120. package/dist/chunk-9525p9tg.js +401 -0
  121. package/dist/{chunk-y47cg3kz.js → chunk-9a0rsdre.js} +17 -13
  122. package/dist/chunk-9a2pa53f.js +308 -0
  123. package/dist/chunk-9es2dav7.js +507 -0
  124. package/dist/chunk-9pq45ycx.js +217 -0
  125. package/dist/chunk-9qwkw406.js +121 -0
  126. package/dist/chunk-9rf1x0z9.js +109 -0
  127. package/dist/{chunk-ghmbr193.js → chunk-9rvqx05m.js} +9 -9
  128. package/dist/{chunk-dchkdhzs.js → chunk-9sd3tz3p.js} +91 -75
  129. package/dist/chunk-9x5zgy22.js +12 -0
  130. package/dist/{chunk-q6b51yc5.js → chunk-9z4vq44b.js} +3 -3
  131. package/dist/chunk-a136cvvz.js +27 -0
  132. package/dist/{chunk-8hq5kk3y.js → chunk-a4twdmhf.js} +3 -2
  133. package/dist/{chunk-d18z9pna.js → chunk-a7rhvq9b.js} +2 -2
  134. package/dist/{chunk-pmjqdasm.js → chunk-a8jbqb9f.js} +2313 -4199
  135. package/dist/chunk-a9xhsth1.js +1068 -0
  136. package/dist/{chunk-kd63fbhw.js → chunk-achjqrhd.js} +81 -65
  137. package/dist/{chunk-67kbbt9h.js → chunk-af2vfhm4.js} +42 -31
  138. package/dist/{chunk-js8rvgs1.js → chunk-ahn9tgz7.js} +3 -3
  139. package/dist/chunk-ajets2e9.js +103 -0
  140. package/dist/chunk-akxywws0.js +79 -0
  141. package/dist/{chunk-meefz2g4.js → chunk-aqvgkvsq.js} +7 -7
  142. package/dist/{chunk-r6b58y3x.js → chunk-ase86y73.js} +1 -3
  143. package/dist/{chunk-hjhc4cpt.js → chunk-awb4vc41.js} +2 -2
  144. package/dist/{chunk-1jrcb7cs.js → chunk-b0mt3wzx.js} +37 -82
  145. package/dist/chunk-b4zy6y92.js +105 -0
  146. package/dist/{chunk-ax83mpvw.js → chunk-b65yxs9e.js} +26 -26
  147. package/dist/{chunk-wzx6mmft.js → chunk-b7b39zx2.js} +120 -118
  148. package/dist/{chunk-8bedvdm1.js → chunk-b81hd3m6.js} +1 -1
  149. package/dist/chunk-bbr7mwpv.js +117 -0
  150. package/dist/{chunk-1a61g8t2.js → chunk-bdzqt6gy.js} +83 -64
  151. package/dist/chunk-bkm0zms8.js +110 -0
  152. package/dist/{chunk-0vvej174.js → chunk-bs8r4665.js} +5 -5
  153. package/dist/{chunk-xvc4gp3x.js → chunk-bszdmr4k.js} +24 -24
  154. package/dist/{chunk-8ngxagxq.js → chunk-bt64sq5y.js} +4 -3
  155. package/dist/chunk-bvcpr8qa.js +909 -0
  156. package/dist/chunk-bx811wk6.js +118 -0
  157. package/dist/{chunk-3be7ka25.js → chunk-bxcfz5gy.js} +1 -1
  158. package/dist/{chunk-77g09znh.js → chunk-byv2p9hn.js} +22 -16
  159. package/dist/{chunk-wbkahkdc.js → chunk-c03am3es.js} +8 -6
  160. package/dist/chunk-c1x69s30.js +116 -0
  161. package/dist/chunk-c5vkve4j.js +68 -0
  162. package/dist/chunk-c6sjhj89.js +1284 -0
  163. package/dist/chunk-cb0wxajw.js +142 -0
  164. package/dist/{chunk-vyc0rjyx.js → chunk-cbrt5vsb.js} +1 -1
  165. package/dist/{chunk-4kxr1pwz.js → chunk-cgmy7r62.js} +30 -17
  166. package/dist/chunk-chsyvavm.js +3435 -0
  167. package/dist/{chunk-z72st5c8.js → chunk-cmsknj6n.js} +4774 -3386
  168. package/dist/{chunk-cdz5yb0r.js → chunk-crmjpsqe.js} +13 -2
  169. package/dist/chunk-cs039fnj.js +123 -0
  170. package/dist/{chunk-e7393td6.js → chunk-cznf6k4g.js} +13 -9
  171. package/dist/{chunk-fw49pe3p.js → chunk-cztjpxq4.js} +6 -6
  172. package/dist/{chunk-n8sjmqba.js → chunk-d0n93ge4.js} +141 -100
  173. package/dist/{chunk-spde0bf5.js → chunk-d14ygn80.js} +3 -3
  174. package/dist/chunk-d4mdda98.js +94 -0
  175. package/dist/chunk-d5qggsbm.js +137 -0
  176. package/dist/{chunk-55wgxwa9.js → chunk-d7886r6a.js} +6928 -6935
  177. package/dist/{chunk-eh8h36nt.js → chunk-d9gxtzmz.js} +42 -31
  178. package/dist/{chunk-xk66xrkk.js → chunk-da312cj9.js} +54 -72
  179. package/dist/{chunk-j287ctwr.js → chunk-df19zqjj.js} +77 -61
  180. package/dist/chunk-dm3n2qgd.js +24 -0
  181. package/dist/{chunk-m21hvkn4.js → chunk-dncgrfdt.js} +2 -2
  182. package/dist/{chunk-0nz8sqg4.js → chunk-dq3rw4b5.js} +1294 -873
  183. package/dist/{chunk-ey03t39w.js → chunk-dw1f4b7e.js} +257 -194
  184. package/dist/chunk-dx1jrvdz.js +339 -0
  185. package/dist/{chunk-0ragr30c.js → chunk-dxeadbxq.js} +12 -12
  186. package/dist/{chunk-gdp8wgnd.js → chunk-e8b9gcwf.js} +88 -72
  187. package/dist/chunk-e9k5a3cy.js +409 -0
  188. package/dist/chunk-e9mer45h.js +64 -0
  189. package/dist/{chunk-5qbwrz8m.js → chunk-ea2f7wt3.js} +13 -13
  190. package/dist/chunk-eak7m65m.js +1182 -0
  191. package/dist/chunk-ebhgmeyk.js +245 -0
  192. package/dist/chunk-eg93k7ac.js +117 -0
  193. package/dist/{chunk-jgv78tv0.js → chunk-ej1yvp43.js} +8 -8
  194. package/dist/chunk-ekr8pwpv.js +1408 -0
  195. package/dist/{chunk-m4edbpcz.js → chunk-epg124e3.js} +117 -143
  196. package/dist/chunk-eyqnj23w.js +5368 -0
  197. package/dist/chunk-f2bvkxbw.js +267 -0
  198. package/dist/chunk-f537x96t.js +295 -0
  199. package/dist/chunk-f6wdmebb.js +108 -0
  200. package/dist/chunk-feyzykye.js +10 -0
  201. package/dist/{chunk-ep47dy22.js → chunk-fj3ywwqv.js} +7 -7
  202. package/dist/{chunk-9gttd1xq.js → chunk-fjv7p1kc.js} +4 -4
  203. package/dist/{chunk-1rnkpxy4.js → chunk-fpe5nywt.js} +10 -115
  204. package/dist/chunk-fvpgrg19.js +434 -0
  205. package/dist/{chunk-9xmsmn93.js → chunk-fvqrkmtn.js} +5 -5
  206. package/dist/{chunk-6g62sjpf.js → chunk-fz0ch109.js} +4 -3
  207. package/dist/{chunk-5xz7ts0k.js → chunk-g0vh71q6.js} +188 -339
  208. package/dist/chunk-g1gtvtv8.js +384 -0
  209. package/dist/chunk-g5g9wm20.js +66 -0
  210. package/dist/{chunk-v399mzxk.js → chunk-g63tgj4f.js} +2 -2
  211. package/dist/{chunk-kkkneeg1.js → chunk-gay98970.js} +21 -16
  212. package/dist/chunk-gey7mwcw.js +36 -0
  213. package/dist/{chunk-w5ctjgmx.js → chunk-gtyh1yd1.js} +2 -2
  214. package/dist/{chunk-tjaqa99q.js → chunk-gx8016vp.js} +3 -3
  215. package/dist/{chunk-f2mhrmww.js → chunk-h0rbjg6x.js} +1 -8
  216. package/dist/{chunk-7z8j9qfn.js → chunk-h1mr3371.js} +3 -3
  217. package/dist/chunk-h2yxyeq4.js +132 -0
  218. package/dist/{chunk-qqfa0dqg.js → chunk-h4b85amj.js} +20 -32
  219. package/dist/chunk-h707k8xq.js +64 -0
  220. package/dist/{chunk-3z6rf0m3.js → chunk-h7rcjx8d.js} +5 -5
  221. package/dist/chunk-hch5yeq8.js +121 -0
  222. package/dist/{chunk-4anyx5bv.js → chunk-hd4azb7x.js} +5 -5
  223. package/dist/chunk-hjnbg9qw.js +32 -0
  224. package/dist/{chunk-e2yv57c2.js → chunk-hk9mmkba.js} +8 -8
  225. package/dist/{chunk-f1rrxxcf.js → chunk-hs9w0p45.js} +7 -131
  226. package/dist/{chunk-9f7xza5r.js → chunk-htaan7k0.js} +11 -11
  227. package/dist/chunk-htg84hvs.js +300 -0
  228. package/dist/chunk-hvyr6p4r.js +433 -0
  229. package/dist/chunk-j0r5vkvw.js +267 -0
  230. package/dist/{chunk-9gbamk79.js → chunk-j5bth84e.js} +5 -1
  231. package/dist/{chunk-vratq94g.js → chunk-j9gxwbe3.js} +1 -1
  232. package/dist/{chunk-3r24h7t6.js → chunk-jaaxk89e.js} +1 -1
  233. package/dist/chunk-je7jake4.js +3584 -0
  234. package/dist/chunk-jeqhpyxr.js +126 -0
  235. package/dist/chunk-jngf0nar.js +135 -0
  236. package/dist/chunk-jqjbc5ef.js +795 -0
  237. package/dist/{chunk-xf4wsjdm.js → chunk-jwrmmv7j.js} +9 -7
  238. package/dist/{chunk-j9wpkwjj.js → chunk-jwyzy83k.js} +6 -6
  239. package/dist/chunk-jz8v9sn3.js +228 -0
  240. package/dist/{chunk-bqfnp99q.js → chunk-k3s4yk22.js} +1 -1
  241. package/dist/chunk-k5c09bzv.js +443 -0
  242. package/dist/chunk-kbktwsms.js +372 -0
  243. package/dist/chunk-ke0hn0xr.js +260 -0
  244. package/dist/chunk-kehe7a71.js +41 -0
  245. package/dist/{chunk-1xkekb9y.js → chunk-kfd89dsd.js} +5 -3
  246. package/dist/chunk-ktjjb0k9.js +104 -0
  247. package/dist/{chunk-b74ht3xj.js → chunk-kxgcshx1.js} +78 -62
  248. package/dist/chunk-kz2fpejx.js +651 -0
  249. package/dist/{chunk-zvbpaaa1.js → chunk-kz3ctzg3.js} +110 -115
  250. package/dist/{chunk-72p24c9k.js → chunk-m268mm4c.js} +127 -188
  251. package/dist/{chunk-jafes477.js → chunk-m2bcpk8j.js} +4 -3
  252. package/dist/{chunk-4qv4z794.js → chunk-m32mdkts.js} +42 -31
  253. package/dist/chunk-m74w3187.js +164 -0
  254. package/dist/chunk-m7s7j422.js +166 -0
  255. package/dist/chunk-majhpxx5.js +594 -0
  256. package/dist/{chunk-q6av622g.js → chunk-mdk3xgya.js} +17 -13
  257. package/dist/{chunk-8bw3ft0x.js → chunk-mfcbez9a.js} +4 -4
  258. package/dist/{chunk-df6bwb4a.js → chunk-mj6w3ttg.js} +2 -2
  259. package/dist/{chunk-drrw55jr.js → chunk-mk6kj3q2.js} +1336 -2840
  260. package/dist/{chunk-vqr58rfh.js → chunk-mky388t4.js} +27 -67
  261. package/dist/chunk-mn61mk4v.js +351 -0
  262. package/dist/chunk-mx28h61f.js +1147 -0
  263. package/dist/chunk-my57sgky.js +883 -0
  264. package/dist/{chunk-k48thqgp.js → chunk-myk8saf6.js} +95 -190
  265. package/dist/chunk-n2zdmx4g.js +66 -0
  266. package/dist/{chunk-720qpv6d.js → chunk-n833arxq.js} +79 -63
  267. package/dist/{chunk-w2z5pqd3.js → chunk-n9ktjngj.js} +6 -6
  268. package/dist/{chunk-2tw2ve8h.js → chunk-nb2ntesh.js} +14 -10
  269. package/dist/{chunk-y18mc4m4.js → chunk-nbqv8ref.js} +10 -10
  270. package/dist/{chunk-74v9z7z4.js → chunk-nd4rncgd.js} +3 -13
  271. package/dist/chunk-nda50ze4.js +341 -0
  272. package/dist/{chunk-gb2q3nvc.js → chunk-nea2sah6.js} +5 -5
  273. package/dist/{chunk-t36rb2a8.js → chunk-nefsxetf.js} +294 -500
  274. package/dist/chunk-netzwgv1.js +154 -0
  275. package/dist/chunk-nfk9e540.js +107 -0
  276. package/dist/{chunk-xszk7n10.js → chunk-nh3cd07f.js} +1 -1
  277. package/dist/chunk-njq2hmjy.js +270 -0
  278. package/dist/chunk-nn5j7h8a.js +156 -0
  279. package/dist/{chunk-6fjab2dp.js → chunk-nrvkwzmq.js} +2 -2
  280. package/dist/chunk-nsextsmp.js +360 -0
  281. package/dist/{chunk-amhzxqj4.js → chunk-nt90fta7.js} +5 -5
  282. package/dist/{chunk-qbx1rq4f.js → chunk-p6sqbnqb.js} +193 -327
  283. package/dist/chunk-p8c23zr7.js +61 -0
  284. package/dist/chunk-p8enbwjk.js +183 -0
  285. package/dist/chunk-p8yggvgf.js +436 -0
  286. package/dist/{chunk-96awg5tc.js → chunk-pcfhe19b.js} +80 -17
  287. package/dist/{chunk-sfq65q9w.js → chunk-pgv9sa3a.js} +10 -14
  288. package/dist/chunk-ppwjyveh.js +8 -0
  289. package/dist/chunk-ppxvfp6m.js +424 -0
  290. package/dist/{chunk-zsfxha74.js → chunk-pshjyzq4.js} +8 -7
  291. package/dist/{chunk-35x3tjnr.js → chunk-pwr83fyy.js} +14 -8
  292. package/dist/chunk-q1976kze.js +473 -0
  293. package/dist/chunk-q387p8pp.js +943 -0
  294. package/dist/{chunk-b6av9ny9.js → chunk-q3ffkhnp.js} +132 -20
  295. package/dist/{chunk-w7wgpqcp.js → chunk-q50q8mc5.js} +7 -7
  296. package/dist/{chunk-e5pntxye.js → chunk-q7tpyeb3.js} +6 -4
  297. package/dist/{chunk-7ymfj7m3.js → chunk-q82r31er.js} +1 -1
  298. package/dist/chunk-qajrkk97.js +298 -0
  299. package/dist/chunk-qdazcrd7.js +362 -0
  300. package/dist/chunk-qhwvhgty.js +61 -0
  301. package/dist/{chunk-455a8z6g.js → chunk-qqk0kvsw.js} +138 -98
  302. package/dist/chunk-qqya1xyt.js +513 -0
  303. package/dist/{chunk-mzdwvbb0.js → chunk-qs6wypj1.js} +2 -2
  304. package/dist/chunk-qtahf5s5.js +113 -0
  305. package/dist/{chunk-tj79kfmn.js → chunk-qv9phqbv.js} +7 -7
  306. package/dist/{chunk-r5k04v8g.js → chunk-qyygv221.js} +13 -9
  307. package/dist/{chunk-zfc67eqj.js → chunk-r34f6vwc.js} +4 -4
  308. package/dist/{chunk-nerv0jvx.js → chunk-r59rgjxq.js} +1 -1
  309. package/dist/{chunk-7sb5axvf.js → chunk-r7j395t6.js} +2 -2
  310. package/dist/chunk-rb31sqzm.js +106 -0
  311. package/dist/{chunk-twsxz9ph.js → chunk-rbwy1qmm.js} +42 -31
  312. package/dist/{chunk-99t8enmg.js → chunk-re3crc6t.js} +10 -7
  313. package/dist/chunk-rhw4ayb1.js +6851 -0
  314. package/dist/{chunk-h6wtwdk0.js → chunk-rm31ynek.js} +8 -8
  315. package/dist/{chunk-eqrh0yjm.js → chunk-rr4e4axp.js} +2 -2
  316. package/dist/{chunk-neh2frnn.js → chunk-rs8304k5.js} +6 -6
  317. package/dist/{chunk-gax0fcbx.js → chunk-s1s8qfdh.js} +5 -5
  318. package/dist/{chunk-src9fqj8.js → chunk-s2483y2h.js} +3 -3
  319. package/dist/chunk-s2nhzjmt.js +113 -0
  320. package/dist/{chunk-7jma9mhn.js → chunk-sfhws681.js} +77 -61
  321. package/dist/{chunk-e3g8q4cn.js → chunk-sg66v252.js} +10 -8
  322. package/dist/{chunk-vp25xhav.js → chunk-szyt0xvf.js} +69 -78
  323. package/dist/{chunk-v7455ztd.js → chunk-t7j91et3.js} +86 -67
  324. package/dist/{chunk-mt25echc.js → chunk-tezak8rx.js} +1 -1
  325. package/dist/chunk-tf1p9trz.js +190 -0
  326. package/dist/{chunk-05gxvwvf.js → chunk-tm82sqkr.js} +96 -79
  327. package/dist/chunk-tpjetyb0.js +106 -0
  328. package/dist/chunk-trxvrrac.js +149 -0
  329. package/dist/chunk-tv9pcdnz.js +51 -0
  330. package/dist/{chunk-e5tfw9f7.js → chunk-twh7pzm8.js} +248 -307
  331. package/dist/{chunk-1x2wb3tc.js → chunk-txfvkh0w.js} +8 -8
  332. package/dist/chunk-var1et7e.js +66 -0
  333. package/dist/{chunk-se7v9emp.js → chunk-vbhvx4ma.js} +12 -10
  334. package/dist/{chunk-hqmz36b3.js → chunk-vf612n57.js} +21 -101
  335. package/dist/{chunk-3sdp7ds7.js → chunk-vfcty2ga.js} +10 -10
  336. package/dist/chunk-vhhyv8z8.js +147 -0
  337. package/dist/{chunk-48z7dgy1.js → chunk-vjcxs86z.js} +3 -3
  338. package/dist/{chunk-k5bpc8d5.js → chunk-vmnf3h9c.js} +43 -32
  339. package/dist/{chunk-fpjeh2em.js → chunk-vr7wmmyn.js} +17 -13
  340. package/dist/{chunk-9ewmqkgb.js → chunk-vxp2mhqy.js} +8 -8
  341. package/dist/{chunk-d238zp4m.js → chunk-w4gwnrwa.js} +2 -2
  342. package/dist/{chunk-jhsywyw8.js → chunk-wahkzh83.js} +9 -9
  343. package/dist/chunk-wdd4en5q.js +117 -0
  344. package/dist/{chunk-gm2m2yba.js → chunk-wgfnd174.js} +43 -32
  345. package/dist/chunk-wk1jw4dm.js +139 -0
  346. package/dist/chunk-wnpjc8hg.js +1018 -0
  347. package/dist/chunk-wv1t041q.js +151 -0
  348. package/dist/chunk-wvtmrmaj.js +130 -0
  349. package/dist/chunk-wyavftcj.js +103 -0
  350. package/dist/{chunk-4589pec2.js → chunk-x2dp18yj.js} +18 -46
  351. package/dist/{chunk-fj4hkg6k.js → chunk-x474ybns.js} +79 -110
  352. package/dist/chunk-x67cvhb8.js +134 -0
  353. package/dist/chunk-x6r4v44b.js +8 -0
  354. package/dist/{chunk-s0xfxkys.js → chunk-xk9pxqqx.js} +6 -6
  355. package/dist/{chunk-m06q12hg.js → chunk-xkt36p6r.js} +1 -1
  356. package/dist/{chunk-g653q217.js → chunk-xnav6j8h.js} +62 -374
  357. package/dist/chunk-xrjb0zyc.js +146 -0
  358. package/dist/chunk-xv3era3s.js +8 -0
  359. package/dist/{chunk-p7g7pf3f.js → chunk-y3r7v9pq.js} +4 -4
  360. package/dist/{chunk-3sagmdbp.js → chunk-y4szkj7r.js} +80 -64
  361. package/dist/{chunk-7d2700y8.js → chunk-y8syxjw1.js} +24 -54
  362. package/dist/chunk-y98z50mm.js +158 -0
  363. package/dist/chunk-ycrfxq10.js +123 -0
  364. package/dist/{chunk-8440dz44.js → chunk-yfjzdc0q.js} +9 -9
  365. package/dist/{chunk-cejskpky.js → chunk-ygf7pmmr.js} +145 -153
  366. package/dist/chunk-yha3z3ab.js +259 -0
  367. package/dist/chunk-ym5r3jnk.js +2007 -0
  368. package/dist/{chunk-28r6z9br.js → chunk-ys2gtqb0.js} +1 -3
  369. package/dist/{chunk-rzgtgtaf.js → chunk-ytg2n0dd.js} +7 -7
  370. package/dist/{chunk-q5hb65kq.js → chunk-ytzw9kw1.js} +78 -62
  371. package/dist/chunk-yzx3mhfd.js +110 -0
  372. package/dist/chunk-z1bs6d7k.js +24 -0
  373. package/dist/{chunk-6h9zcxaa.js → chunk-z1mvcq39.js} +4 -4
  374. package/dist/{chunk-gbq6jz9a.js → chunk-z3qhctbk.js} +134 -170
  375. package/dist/chunk-z9jn3442.js +146 -0
  376. package/dist/{chunk-5q7c8vt9.js → chunk-zbsz51qa.js} +41 -32
  377. package/dist/{chunk-n1erf6kh.js → chunk-ze6zvkg6.js} +5 -5
  378. package/dist/{chunk-t0rgmccj.js → chunk-zejm280k.js} +1 -1
  379. package/dist/{chunk-gfkppe34.js → chunk-zf47p99b.js} +10 -10
  380. package/dist/{chunk-53nbpp47.js → chunk-zhtrjznv.js} +557 -1502
  381. package/dist/{chunk-das977za.js → chunk-zq6tz1zv.js} +61 -100
  382. package/dist/chunk-zrw9gm80.js +264 -0
  383. package/dist/chunk-zseb1639.js +37 -0
  384. package/dist/{chunk-spqaamnc.js → chunk-zsgha506.js} +2 -2
  385. package/dist/chunk-zst7b4sp.js +2840 -0
  386. package/dist/{chunk-0xn1zr3e.js → chunk-zxkzzpgd.js} +145 -121
  387. package/dist/{chunk-g3t0act8.js → chunk-zzm33q8x.js} +1 -1
  388. package/dist/cli.js +20 -117
  389. package/dist/download-ripgrep.js +24821 -0
  390. package/dist/vendor/audio-capture/arm64-darwin/audio-capture.node +0 -0
  391. package/dist/vendor/audio-capture/arm64-linux/audio-capture.node +0 -0
  392. package/dist/vendor/audio-capture/arm64-win32/audio-capture.node +0 -0
  393. package/dist/vendor/audio-capture/x64-darwin/audio-capture.node +0 -0
  394. package/dist/vendor/audio-capture/x64-linux/audio-capture.node +0 -0
  395. package/dist/vendor/audio-capture/x64-win32/audio-capture.node +0 -0
  396. package/package.json +22 -14
  397. package/scripts/download-ripgrep.ts +335 -0
  398. package/scripts/postinstall.cjs +319 -0
  399. package/dist/chunk-0gemty6d.js +0 -70
  400. package/dist/chunk-0pjw8y9z.js +0 -2833
  401. package/dist/chunk-1c8z1b5v.js +0 -16
  402. package/dist/chunk-1ebedmba.js +0 -90
  403. package/dist/chunk-1rvz0433.js +0 -722
  404. package/dist/chunk-1wfb8e3m.js +0 -107
  405. package/dist/chunk-2qjywwq4.js +0 -3445
  406. package/dist/chunk-2y659zbj.js +0 -103
  407. package/dist/chunk-41md7gny.js +0 -91
  408. package/dist/chunk-45m062tx.js +0 -2058
  409. package/dist/chunk-4br37gsw.js +0 -107
  410. package/dist/chunk-4nfrc6sq.js +0 -2431
  411. package/dist/chunk-4pdedeb4.js +0 -2644
  412. package/dist/chunk-4wzyhqbt.js +0 -444
  413. package/dist/chunk-4zsw4fhp.js +0 -67
  414. package/dist/chunk-52wv09zw.js +0 -102
  415. package/dist/chunk-55sfqnz4.js +0 -1921
  416. package/dist/chunk-5cd9cptq.js +0 -110
  417. package/dist/chunk-5dbk24zg.js +0 -890
  418. package/dist/chunk-5tfppbkq.js +0 -55
  419. package/dist/chunk-60xyrp86.js +0 -117
  420. package/dist/chunk-6deqb0mc.js +0 -376
  421. package/dist/chunk-6kpbgc5w.js +0 -23
  422. package/dist/chunk-6ndpfxcn.js +0 -222
  423. package/dist/chunk-7nvpa5ex.js +0 -123
  424. package/dist/chunk-7va8tw32.js +0 -128
  425. package/dist/chunk-7z3tkgec.js +0 -66
  426. package/dist/chunk-8e8set87.js +0 -281
  427. package/dist/chunk-8fg1egbv.js +0 -107
  428. package/dist/chunk-8thd6sgk.js +0 -106
  429. package/dist/chunk-8ytkb7k9.js +0 -84
  430. package/dist/chunk-9s5nkgsg.js +0 -699
  431. package/dist/chunk-9wce9hrc.js +0 -1015
  432. package/dist/chunk-9y91z69v.js +0 -44
  433. package/dist/chunk-ae76ded0.js +0 -30
  434. package/dist/chunk-b0eez8w0.js +0 -169
  435. package/dist/chunk-b57sb1dw.js +0 -642
  436. package/dist/chunk-bg3mt9bm.js +0 -28
  437. package/dist/chunk-bhdt6k7w.js +0 -15
  438. package/dist/chunk-bm1qb16p.js +0 -17
  439. package/dist/chunk-bsbmmfyt.js +0 -17
  440. package/dist/chunk-c7q12yes.js +0 -269
  441. package/dist/chunk-cv6y320h.js +0 -299
  442. package/dist/chunk-cvy3vntc.js +0 -65
  443. package/dist/chunk-cy2hswr1.js +0 -15
  444. package/dist/chunk-d5d398m4.js +0 -184
  445. package/dist/chunk-d7q4zp2z.js +0 -89
  446. package/dist/chunk-dnk519qv.js +0 -94
  447. package/dist/chunk-dqqde43e.js +0 -93
  448. package/dist/chunk-dy4ayw0p.js +0 -522
  449. package/dist/chunk-e4ak3jfc.js +0 -1154
  450. package/dist/chunk-e64spn53.js +0 -283
  451. package/dist/chunk-e8pk14j0.js +0 -527
  452. package/dist/chunk-eashsrsv.js +0 -88
  453. package/dist/chunk-eb90vwvr.js +0 -152
  454. package/dist/chunk-ese2g7hc.js +0 -92
  455. package/dist/chunk-et4jnyb5.js +0 -713
  456. package/dist/chunk-fdy0651p.js +0 -212
  457. package/dist/chunk-frsyts9j.js +0 -1170
  458. package/dist/chunk-ft2jssz4.js +0 -424
  459. package/dist/chunk-g41hzcy2.js +0 -101
  460. package/dist/chunk-g8dr8vvj.js +0 -111
  461. package/dist/chunk-gj71pd83.js +0 -5395
  462. package/dist/chunk-gjdwtdch.js +0 -154
  463. package/dist/chunk-gyj242zr.js +0 -20
  464. package/dist/chunk-hr719wjg.js +0 -144
  465. package/dist/chunk-hs8ph4p8.js +0 -8
  466. package/dist/chunk-j7gpr82p.js +0 -105
  467. package/dist/chunk-jczedp5x.js +0 -91
  468. package/dist/chunk-jd0t67a6.js +0 -259
  469. package/dist/chunk-jgyp3mzg.js +0 -1318
  470. package/dist/chunk-jq1kp9yy.js +0 -90
  471. package/dist/chunk-jskhn7bz.js +0 -71
  472. package/dist/chunk-k5aas9d3.js +0 -6108
  473. package/dist/chunk-k8jcy7mj.js +0 -48
  474. package/dist/chunk-ka22ccvm.js +0 -1581
  475. package/dist/chunk-ka6jav10.js +0 -91
  476. package/dist/chunk-kq6j096k.js +0 -538
  477. package/dist/chunk-kqd0e3xj.js +0 -463
  478. package/dist/chunk-kqjrsah4.js +0 -85
  479. package/dist/chunk-m390jta5.js +0 -114
  480. package/dist/chunk-m44a9yfj.js +0 -90
  481. package/dist/chunk-m5c8ng6v.js +0 -328
  482. package/dist/chunk-meag7bbe.js +0 -89
  483. package/dist/chunk-mnsrmwn8.js +0 -604
  484. package/dist/chunk-mzj4mtye.js +0 -115
  485. package/dist/chunk-mzy911jq.js +0 -128
  486. package/dist/chunk-n0fwapk6.js +0 -347
  487. package/dist/chunk-nt0mgsh6.js +0 -496
  488. package/dist/chunk-nwcfrws3.js +0 -273
  489. package/dist/chunk-pa2xksyb.js +0 -57
  490. package/dist/chunk-pnhs96g8.js +0 -140
  491. package/dist/chunk-ps4c75j7.js +0 -105
  492. package/dist/chunk-q0yg73za.js +0 -490
  493. package/dist/chunk-q5by3da6.js +0 -8
  494. package/dist/chunk-qbmhde47.js +0 -92
  495. package/dist/chunk-qp3dw7b4.js +0 -100
  496. package/dist/chunk-qt0b9x2w.js +0 -42
  497. package/dist/chunk-qxe98jgk.js +0 -584
  498. package/dist/chunk-r7n42k56.js +0 -756
  499. package/dist/chunk-radsjrmv.js +0 -55
  500. package/dist/chunk-rckj9gd1.js +0 -55
  501. package/dist/chunk-rn4kqfvd.js +0 -99
  502. package/dist/chunk-rngmdt2v.js +0 -97
  503. package/dist/chunk-rs5e0520.js +0 -87
  504. package/dist/chunk-s274nv8k.js +0 -8
  505. package/dist/chunk-s7t2e2tw.js +0 -1493
  506. package/dist/chunk-sbbt0ct3.js +0 -90
  507. package/dist/chunk-t0mnk0qp.js +0 -105
  508. package/dist/chunk-t1qmy36p.js +0 -94
  509. package/dist/chunk-tdy66rf9.js +0 -116
  510. package/dist/chunk-tf40vqky.js +0 -70
  511. package/dist/chunk-tmcxeatp.js +0 -116
  512. package/dist/chunk-v3gm2day.js +0 -8
  513. package/dist/chunk-v496te8v.js +0 -192
  514. package/dist/chunk-vd2hwk8d.js +0 -61
  515. package/dist/chunk-vdsmt7v0.js +0 -998
  516. package/dist/chunk-vf3qxte3.js +0 -93
  517. package/dist/chunk-vfqe1jqj.js +0 -643
  518. package/dist/chunk-vk3270s6.js +0 -119
  519. package/dist/chunk-vsr9mbnq.js +0 -195
  520. package/dist/chunk-w18zryr9.js +0 -348
  521. package/dist/chunk-wdxcgk6m.js +0 -196
  522. package/dist/chunk-wef07p3j.js +0 -131
  523. package/dist/chunk-wf4q1xj3.js +0 -62
  524. package/dist/chunk-wjq4zq3t.js +0 -162
  525. package/dist/chunk-wp4hc4n7.js +0 -133
  526. package/dist/chunk-x0rjttct.js +0 -420
  527. package/dist/chunk-xdw5dv00.js +0 -8
  528. package/dist/chunk-xm8fv5c9.js +0 -469
  529. package/dist/chunk-xq5ztz4g.js +0 -130
  530. package/dist/chunk-xvcdtezw.js +0 -401
  531. package/dist/chunk-y7njq3z3.js +0 -1866
  532. package/dist/chunk-ycxwftfh.js +0 -97
  533. package/dist/chunk-yn38f69a.js +0 -105
  534. package/dist/chunk-yp5kc8hq.js +0 -372
  535. package/dist/chunk-z09n2krq.js +0 -752
  536. package/dist/chunk-zerg8qwf.js +0 -96
  537. package/dist/{chunk-p452k1xp.js → chunk-57s5mr32.js} +9 -9
  538. package/dist/{chunk-27xc1csx.js → chunk-dggvswz1.js} +3 -3
  539. package/dist/{chunk-zxzwfa0b.js → chunk-pbyq1tm3.js} +3 -3
@@ -0,0 +1,1170 @@
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-4m6k7588.js";
20
+ import"./chunk-nea2sah6.js";
21
+ import"./chunk-rs8304k5.js";
22
+ import"./chunk-1c2qp0ks.js";
23
+ import"./chunk-9z4vq44b.js";
24
+ import"./chunk-zejm280k.js";
25
+ import"./chunk-4nspekjp.js";
26
+ import"./chunk-var1et7e.js";
27
+ import"./chunk-ehtwnxpg.js";
28
+ import"./chunk-akxywws0.js";
29
+ import"./chunk-zf47p99b.js";
30
+ import"./chunk-bxcfz5gy.js";
31
+ import"./chunk-1xbs4yb6.js";
32
+ import"./chunk-2gzv8nrw.js";
33
+ import"./chunk-8h6sdj66.js";
34
+ import"./chunk-cgfdkzhb.js";
35
+ import"./chunk-6eg4c33n.js";
36
+ import"./chunk-2cctz9ww.js";
37
+ import"./chunk-j5bth84e.js";
38
+ import"./chunk-d0n93ge4.js";
39
+ import"./chunk-5pevjsyw.js";
40
+ import {
41
+ init_useKeybinding,
42
+ useKeybinding
43
+ } from "./chunk-xnav6j8h.js";
44
+ import"./chunk-ps49ymvj.js";
45
+ import"./chunk-zk2wsm7d.js";
46
+ import"./chunk-2t0xa4dt.js";
47
+ import"./chunk-pwr83fyy.js";
48
+ import"./chunk-hjnbg9qw.js";
49
+ import"./chunk-zsgha506.js";
50
+ import"./chunk-4jm600zv.js";
51
+ import"./chunk-xkt36p6r.js";
52
+ import"./chunk-585cb3h6.js";
53
+ import"./chunk-xk9pxqqx.js";
54
+ import"./chunk-mx28h61f.js";
55
+ import"./chunk-bx811wk6.js";
56
+ import"./chunk-8vnxjgz9.js";
57
+ import"./chunk-2v8cya3p.js";
58
+ import"./chunk-eyqnj23w.js";
59
+ import"./chunk-chsyvavm.js";
60
+ import"./chunk-6mpw9h55.js";
61
+ import {
62
+ getSettingsForSource,
63
+ getSettings_DEPRECATED,
64
+ init_settings1 as init_settings,
65
+ init_stringUtils,
66
+ plural
67
+ } from "./chunk-zhtrjznv.js";
68
+ import"./chunk-sg66v252.js";
69
+ import"./chunk-8bwqtasa.js";
70
+ import"./chunk-j9gxwbe3.js";
71
+ import"./chunk-cztjpxq4.js";
72
+ import"./chunk-1cwdhk7a.js";
73
+ import"./chunk-64c1avct.js";
74
+ import"./chunk-8g5pe1gr.js";
75
+ import"./chunk-gx8016vp.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-r7j395t6.js";
82
+ import"./chunk-tv9pcdnz.js";
83
+ import"./chunk-3c25bcsw.js";
84
+ import"./chunk-n9ktjngj.js";
85
+ import"./chunk-q82r31er.js";
86
+ import"./chunk-p2816w9z.js";
87
+ import"./chunk-v9smspw2.js";
88
+ import"./chunk-v1kzp02e.js";
89
+ import"./chunk-64hks9ax.js";
90
+ import"./chunk-crmjpsqe.js";
91
+ import {
92
+ Dialog,
93
+ Link,
94
+ ThemedBox_default,
95
+ ThemedText,
96
+ init_src
97
+ } from "./chunk-cmsknj6n.js";
98
+ import {
99
+ require_jsx_dev_runtime,
100
+ require_react
101
+ } from "./chunk-g338npwr.js";
102
+ import {
103
+ init_analytics,
104
+ logEvent
105
+ } from "./chunk-h0rbjg6x.js";
106
+ import"./chunk-0vkfrmqm.js";
107
+ import"./chunk-0xjaqda8.js";
108
+ import"./chunk-h1mr3371.js";
109
+ import"./chunk-36b2q5fg.js";
110
+ import"./chunk-a7rhvq9b.js";
111
+ import"./chunk-qnfx3qtx.js";
112
+ import"./chunk-m74w3187.js";
113
+ import"./chunk-b81hd3m6.js";
114
+ import"./chunk-y3r7v9pq.js";
115
+ import"./chunk-8tnsngw2.js";
116
+ import"./chunk-awb4vc41.js";
117
+ import"./chunk-cbrt5vsb.js";
118
+ import"./chunk-5z28bqne.js";
119
+ import {
120
+ figures_default,
121
+ init_figures
122
+ } from "./chunk-qajrkk97.js";
123
+ import"./chunk-404qm8xt.js";
124
+ import"./chunk-fbv4apne.js";
125
+ import"./chunk-jaaxk89e.js";
126
+ import {
127
+ getRegisteredHooks,
128
+ init_state
129
+ } from "./chunk-h4b85amj.js";
130
+ import"./chunk-07069jq1.js";
131
+ import {
132
+ init_memoize,
133
+ memoize_default
134
+ } from "./chunk-vf612n57.js";
135
+ import"./chunk-d4mdda98.js";
136
+ import"./chunk-7wm5s02e.js";
137
+ import"./chunk-4g3v8y12.js";
138
+ import"./chunk-7739pg2c.js";
139
+ import"./chunk-nh3cd07f.js";
140
+ import"./chunk-8pn8tvgg.js";
141
+ import"./chunk-netzwgv1.js";
142
+ import {
143
+ __esm,
144
+ __toESM
145
+ } from "./chunk-qp2qdcda.js";
146
+
147
+ // src/utils/hooks/hooksConfigManager.ts
148
+ function groupHooksByEventAndMatcher(appState, toolNames) {
149
+ const grouped = {
150
+ PreToolUse: {},
151
+ PostToolUse: {},
152
+ PostToolUseFailure: {},
153
+ PermissionDenied: {},
154
+ Notification: {},
155
+ UserPromptSubmit: {},
156
+ SessionStart: {},
157
+ SessionEnd: {},
158
+ Stop: {},
159
+ StopFailure: {},
160
+ SubagentStart: {},
161
+ SubagentStop: {},
162
+ PreCompact: {},
163
+ PostCompact: {},
164
+ PermissionRequest: {},
165
+ Setup: {},
166
+ TeammateIdle: {},
167
+ TaskCreated: {},
168
+ TaskCompleted: {},
169
+ Elicitation: {},
170
+ ElicitationResult: {},
171
+ ConfigChange: {},
172
+ WorktreeCreate: {},
173
+ WorktreeRemove: {},
174
+ InstructionsLoaded: {},
175
+ CwdChanged: {},
176
+ FileChanged: {}
177
+ };
178
+ const metadata = getHookEventMetadata(toolNames);
179
+ getAllHooks(appState).forEach((hook) => {
180
+ const eventGroup = grouped[hook.event];
181
+ if (eventGroup) {
182
+ const matcherKey = metadata[hook.event].matcherMetadata !== undefined ? hook.matcher || "" : "";
183
+ if (!eventGroup[matcherKey]) {
184
+ eventGroup[matcherKey] = [];
185
+ }
186
+ eventGroup[matcherKey].push(hook);
187
+ }
188
+ });
189
+ const registeredHooks = getRegisteredHooks();
190
+ if (registeredHooks) {
191
+ for (const [event, matchers] of Object.entries(registeredHooks)) {
192
+ const hookEvent = event;
193
+ const eventGroup = grouped[hookEvent];
194
+ if (!eventGroup)
195
+ continue;
196
+ for (const matcher of matchers) {
197
+ const matcherKey = matcher.matcher || "";
198
+ if ("pluginRoot" in matcher) {
199
+ eventGroup[matcherKey] ??= [];
200
+ for (const hook of matcher.hooks) {
201
+ eventGroup[matcherKey].push({
202
+ event: hookEvent,
203
+ config: hook,
204
+ matcher: matcher.matcher,
205
+ source: "pluginHook",
206
+ pluginName: matcher.pluginId
207
+ });
208
+ }
209
+ } else if (process.env.USER_TYPE === "ant") {
210
+ eventGroup[matcherKey] ??= [];
211
+ for (const _hook of matcher.hooks) {
212
+ eventGroup[matcherKey].push({
213
+ event: hookEvent,
214
+ config: {
215
+ type: "command",
216
+ command: "[ANT-ONLY] Built-in Hook"
217
+ },
218
+ matcher: matcher.matcher,
219
+ source: "builtinHook"
220
+ });
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }
226
+ return grouped;
227
+ }
228
+ function getSortedMatchersForEvent(hooksByEventAndMatcher, event) {
229
+ const matchers = Object.keys(hooksByEventAndMatcher[event] || {});
230
+ return sortMatchersByPriority(matchers, hooksByEventAndMatcher, event);
231
+ }
232
+ function getHooksForMatcher(hooksByEventAndMatcher, event, matcher) {
233
+ const matcherKey = matcher ?? "";
234
+ return hooksByEventAndMatcher[event]?.[matcherKey] ?? [];
235
+ }
236
+ function getMatcherMetadata(event, toolNames) {
237
+ return getHookEventMetadata(toolNames)[event].matcherMetadata;
238
+ }
239
+ var getHookEventMetadata;
240
+ var init_hooksConfigManager = __esm(() => {
241
+ init_memoize();
242
+ init_state();
243
+ init_hooksSettings();
244
+ getHookEventMetadata = memoize_default(function(toolNames) {
245
+ return {
246
+ PreToolUse: {
247
+ summary: "Before tool execution",
248
+ description: `Input to command is JSON of tool call arguments.
249
+ Exit code 0 - stdout/stderr not shown
250
+ Exit code 2 - show stderr to model and block tool call
251
+ Other exit codes - show stderr to user only but continue with tool call`,
252
+ matcherMetadata: {
253
+ fieldToMatch: "tool_name",
254
+ values: toolNames
255
+ }
256
+ },
257
+ PostToolUse: {
258
+ summary: "After tool execution",
259
+ description: `Input to command is JSON with fields "inputs" (tool call arguments) and "response" (tool call response).
260
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
261
+ Exit code 2 - show stderr to model immediately
262
+ Other exit codes - show stderr to user only`,
263
+ matcherMetadata: {
264
+ fieldToMatch: "tool_name",
265
+ values: toolNames
266
+ }
267
+ },
268
+ PostToolUseFailure: {
269
+ summary: "After tool execution fails",
270
+ description: `Input to command is JSON with tool_name, tool_input, tool_use_id, error, error_type, is_interrupt, and is_timeout.
271
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
272
+ Exit code 2 - show stderr to model immediately
273
+ Other exit codes - show stderr to user only`,
274
+ matcherMetadata: {
275
+ fieldToMatch: "tool_name",
276
+ values: toolNames
277
+ }
278
+ },
279
+ PermissionDenied: {
280
+ summary: "After auto mode classifier denies a tool call",
281
+ description: `Input to command is JSON with tool_name, tool_input, tool_use_id, and reason.
282
+ Return {"hookSpecificOutput":{"hookEventName":"PermissionDenied","retry":true}} to tell the model it may retry.
283
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
284
+ Other exit codes - show stderr to user only`,
285
+ matcherMetadata: {
286
+ fieldToMatch: "tool_name",
287
+ values: toolNames
288
+ }
289
+ },
290
+ Notification: {
291
+ summary: "When notifications are sent",
292
+ description: `Input to command is JSON with notification message and type.
293
+ Exit code 0 - stdout/stderr not shown
294
+ Other exit codes - show stderr to user only`,
295
+ matcherMetadata: {
296
+ fieldToMatch: "notification_type",
297
+ values: [
298
+ "permission_prompt",
299
+ "idle_prompt",
300
+ "auth_success",
301
+ "elicitation_dialog",
302
+ "elicitation_complete",
303
+ "elicitation_response"
304
+ ]
305
+ }
306
+ },
307
+ UserPromptSubmit: {
308
+ summary: "When the user submits a prompt",
309
+ description: `Input to command is JSON with original user prompt text.
310
+ Exit code 0 - stdout shown to Claude
311
+ Exit code 2 - block processing, erase original prompt, and show stderr to user only
312
+ Other exit codes - show stderr to user only`
313
+ },
314
+ SessionStart: {
315
+ summary: "When a new session is started",
316
+ description: `Input to command is JSON with session start source.
317
+ Exit code 0 - stdout shown to Claude
318
+ Blocking errors are ignored
319
+ Other exit codes - show stderr to user only`,
320
+ matcherMetadata: {
321
+ fieldToMatch: "source",
322
+ values: ["startup", "resume", "clear", "compact"]
323
+ }
324
+ },
325
+ Stop: {
326
+ summary: "Right before Claude concludes its response",
327
+ description: `Exit code 0 - stdout/stderr not shown
328
+ Exit code 2 - show stderr to model and continue conversation
329
+ Other exit codes - show stderr to user only`
330
+ },
331
+ StopFailure: {
332
+ summary: "When the turn ends due to an API error",
333
+ 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.",
334
+ matcherMetadata: {
335
+ fieldToMatch: "error",
336
+ values: [
337
+ "rate_limit",
338
+ "authentication_failed",
339
+ "billing_error",
340
+ "invalid_request",
341
+ "server_error",
342
+ "max_output_tokens",
343
+ "unknown"
344
+ ]
345
+ }
346
+ },
347
+ SubagentStart: {
348
+ summary: "When a subagent (Agent tool call) is started",
349
+ description: `Input to command is JSON with agent_id and agent_type.
350
+ Exit code 0 - stdout shown to subagent
351
+ Blocking errors are ignored
352
+ Other exit codes - show stderr to user only`,
353
+ matcherMetadata: {
354
+ fieldToMatch: "agent_type",
355
+ values: []
356
+ }
357
+ },
358
+ SubagentStop: {
359
+ summary: "Right before a subagent (Agent tool call) concludes its response",
360
+ description: `Input to command is JSON with agent_id, agent_type, and agent_transcript_path.
361
+ Exit code 0 - stdout/stderr not shown
362
+ Exit code 2 - show stderr to subagent and continue having it run
363
+ Other exit codes - show stderr to user only`,
364
+ matcherMetadata: {
365
+ fieldToMatch: "agent_type",
366
+ values: []
367
+ }
368
+ },
369
+ PreCompact: {
370
+ summary: "Before conversation compaction",
371
+ description: `Input to command is JSON with compaction details.
372
+ Exit code 0 - stdout appended as custom compact instructions
373
+ Exit code 2 - block compaction
374
+ Other exit codes - show stderr to user only but continue with compaction`,
375
+ matcherMetadata: {
376
+ fieldToMatch: "trigger",
377
+ values: ["manual", "auto"]
378
+ }
379
+ },
380
+ PostCompact: {
381
+ summary: "After conversation compaction",
382
+ description: `Input to command is JSON with compaction details and the summary.
383
+ Exit code 0 - stdout shown to user
384
+ Other exit codes - show stderr to user only`,
385
+ matcherMetadata: {
386
+ fieldToMatch: "trigger",
387
+ values: ["manual", "auto"]
388
+ }
389
+ },
390
+ SessionEnd: {
391
+ summary: "When a session is ending",
392
+ description: `Input to command is JSON with session end reason.
393
+ Exit code 0 - command completes successfully
394
+ Other exit codes - show stderr to user only`,
395
+ matcherMetadata: {
396
+ fieldToMatch: "reason",
397
+ values: ["clear", "logout", "prompt_input_exit", "other"]
398
+ }
399
+ },
400
+ PermissionRequest: {
401
+ summary: "When a permission dialog is displayed",
402
+ description: `Input to command is JSON with tool_name, tool_input, and tool_use_id.
403
+ Output JSON with hookSpecificOutput containing decision to allow or deny.
404
+ Exit code 0 - use hook decision if provided
405
+ Other exit codes - show stderr to user only`,
406
+ matcherMetadata: {
407
+ fieldToMatch: "tool_name",
408
+ values: toolNames
409
+ }
410
+ },
411
+ Setup: {
412
+ summary: "Repo setup hooks for init and maintenance",
413
+ description: `Input to command is JSON with trigger (init or maintenance).
414
+ Exit code 0 - stdout shown to Claude
415
+ Blocking errors are ignored
416
+ Other exit codes - show stderr to user only`,
417
+ matcherMetadata: {
418
+ fieldToMatch: "trigger",
419
+ values: ["init", "maintenance"]
420
+ }
421
+ },
422
+ TeammateIdle: {
423
+ summary: "When a teammate is about to go idle",
424
+ description: `Input to command is JSON with teammate_name and team_name.
425
+ Exit code 0 - stdout/stderr not shown
426
+ Exit code 2 - show stderr to teammate and prevent idle (teammate continues working)
427
+ Other exit codes - show stderr to user only`
428
+ },
429
+ TaskCreated: {
430
+ summary: "When a task is being created",
431
+ description: `Input to command is JSON with task_id, task_subject, task_description, teammate_name, and team_name.
432
+ Exit code 0 - stdout/stderr not shown
433
+ Exit code 2 - show stderr to model and prevent task creation
434
+ Other exit codes - show stderr to user only`
435
+ },
436
+ TaskCompleted: {
437
+ summary: "When a task is being marked as completed",
438
+ description: `Input to command is JSON with task_id, task_subject, task_description, teammate_name, and team_name.
439
+ Exit code 0 - stdout/stderr not shown
440
+ Exit code 2 - show stderr to model and prevent task completion
441
+ Other exit codes - show stderr to user only`
442
+ },
443
+ Elicitation: {
444
+ summary: "When an MCP server requests user input (elicitation)",
445
+ description: `Input to command is JSON with mcp_server_name, message, and requested_schema.
446
+ Output JSON with hookSpecificOutput containing action (accept/decline/cancel) and optional content.
447
+ Exit code 0 - use hook response if provided
448
+ Exit code 2 - deny the elicitation
449
+ Other exit codes - show stderr to user only`,
450
+ matcherMetadata: {
451
+ fieldToMatch: "mcp_server_name",
452
+ values: []
453
+ }
454
+ },
455
+ ElicitationResult: {
456
+ summary: "After a user responds to an MCP elicitation",
457
+ description: `Input to command is JSON with mcp_server_name, action, content, mode, and elicitation_id.
458
+ Output JSON with hookSpecificOutput containing optional action and content to override the response.
459
+ Exit code 0 - use hook response if provided
460
+ Exit code 2 - block the response (action becomes decline)
461
+ Other exit codes - show stderr to user only`,
462
+ matcherMetadata: {
463
+ fieldToMatch: "mcp_server_name",
464
+ values: []
465
+ }
466
+ },
467
+ ConfigChange: {
468
+ summary: "When configuration files change during a session",
469
+ description: `Input to command is JSON with source (user_settings, project_settings, local_settings, policy_settings, skills) and file_path.
470
+ Exit code 0 - allow the change
471
+ Exit code 2 - block the change from being applied to the session
472
+ Other exit codes - show stderr to user only`,
473
+ matcherMetadata: {
474
+ fieldToMatch: "source",
475
+ values: [
476
+ "user_settings",
477
+ "project_settings",
478
+ "local_settings",
479
+ "policy_settings",
480
+ "skills"
481
+ ]
482
+ }
483
+ },
484
+ InstructionsLoaded: {
485
+ summary: "When an instruction file (CLAUDE.md or rule) is loaded",
486
+ 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).
487
+ Exit code 0 - command completes successfully
488
+ Other exit codes - show stderr to user only
489
+ This hook is observability-only and does not support blocking.`,
490
+ matcherMetadata: {
491
+ fieldToMatch: "load_reason",
492
+ values: [
493
+ "session_start",
494
+ "nested_traversal",
495
+ "path_glob_match",
496
+ "include",
497
+ "compact"
498
+ ]
499
+ }
500
+ },
501
+ WorktreeCreate: {
502
+ summary: "Create an isolated worktree for VCS-agnostic isolation",
503
+ description: `Input to command is JSON with name (suggested worktree slug).
504
+ Stdout should contain the absolute path to the created worktree directory.
505
+ Exit code 0 - worktree created successfully
506
+ Other exit codes - worktree creation failed`
507
+ },
508
+ WorktreeRemove: {
509
+ summary: "Remove a previously created worktree",
510
+ description: `Input to command is JSON with worktree_path (absolute path to worktree).
511
+ Exit code 0 - worktree removed successfully
512
+ Other exit codes - show stderr to user only`
513
+ },
514
+ CwdChanged: {
515
+ summary: "After the working directory changes",
516
+ description: `Input to command is JSON with old_cwd and new_cwd.
517
+ CLAUDE_ENV_FILE is set \u2014 write bash exports there to apply env to subsequent BashTool commands.
518
+ Hook output can include hookSpecificOutput.watchPaths (array of absolute paths) to register with the FileChanged watcher.
519
+ Exit code 0 - command completes successfully
520
+ Other exit codes - show stderr to user only`
521
+ },
522
+ FileChanged: {
523
+ summary: "When a watched file changes",
524
+ description: `Input to command is JSON with file_path and event (change, add, unlink).
525
+ CLAUDE_ENV_FILE is set \u2014 write bash exports there to apply env to subsequent BashTool commands.
526
+ The matcher field specifies filenames to watch in the current directory (e.g. ".envrc|.env").
527
+ Hook output can include hookSpecificOutput.watchPaths (array of absolute paths) to dynamically update the watch list.
528
+ Exit code 0 - command completes successfully
529
+ Other exit codes - show stderr to user only`
530
+ }
531
+ };
532
+ }, (toolNames) => toolNames.slice().sort().join(","));
533
+ });
534
+
535
+ // src/components/hooks/SelectEventMode.tsx
536
+ function SelectEventMode({
537
+ hookEventMetadata,
538
+ hooksByEvent,
539
+ totalHooksCount,
540
+ restrictedByPolicy,
541
+ onSelectEvent,
542
+ onCancel
543
+ }) {
544
+ const subtitle = `${totalHooksCount} ${plural(totalHooksCount, "hook")} configured`;
545
+ return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Dialog, {
546
+ title: "Hooks",
547
+ subtitle,
548
+ onCancel,
549
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
550
+ flexDirection: "column",
551
+ gap: 1,
552
+ children: [
553
+ restrictedByPolicy && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
554
+ flexDirection: "column",
555
+ children: [
556
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
557
+ color: "suggestion",
558
+ children: [
559
+ figures_default.info,
560
+ " Hooks Restricted by Policy"
561
+ ]
562
+ }, undefined, true, undefined, this),
563
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
564
+ dimColor: true,
565
+ 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."
566
+ }, undefined, false, undefined, this)
567
+ ]
568
+ }, undefined, true, undefined, this),
569
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
570
+ flexDirection: "column",
571
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
572
+ dimColor: true,
573
+ children: [
574
+ figures_default.info,
575
+ " This menu is read-only. To add or modify hooks, edit settings.json directly or ask Claude.",
576
+ " ",
577
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Link, {
578
+ url: "https://code.claude.com/docs/en/hooks",
579
+ children: "Learn more"
580
+ }, undefined, false, undefined, this)
581
+ ]
582
+ }, undefined, true, undefined, this)
583
+ }, undefined, false, undefined, this),
584
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
585
+ flexDirection: "column",
586
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Select, {
587
+ onChange: (value) => {
588
+ onSelectEvent(value);
589
+ },
590
+ onCancel,
591
+ options: Object.entries(hookEventMetadata).map(([name, metadata]) => {
592
+ const count = hooksByEvent[name] || 0;
593
+ return {
594
+ label: count > 0 ? /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
595
+ children: [
596
+ name,
597
+ " ",
598
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
599
+ color: "suggestion",
600
+ children: [
601
+ "(",
602
+ count,
603
+ ")"
604
+ ]
605
+ }, undefined, true, undefined, this)
606
+ ]
607
+ }, undefined, true, undefined, this) : name,
608
+ value: name,
609
+ description: metadata.summary
610
+ };
611
+ })
612
+ }, undefined, false, undefined, this)
613
+ }, undefined, false, undefined, this)
614
+ ]
615
+ }, undefined, true, undefined, this)
616
+ }, undefined, false, undefined, this);
617
+ }
618
+ var jsx_dev_runtime;
619
+ var init_SelectEventMode = __esm(() => {
620
+ init_figures();
621
+ init_src();
622
+ init_stringUtils();
623
+ init_select();
624
+ init_src();
625
+ jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
626
+ });
627
+
628
+ // src/components/hooks/SelectHookMode.tsx
629
+ function SelectHookMode({
630
+ selectedEvent,
631
+ selectedMatcher,
632
+ hooksForSelectedMatcher,
633
+ hookEventMetadata,
634
+ onSelect,
635
+ onCancel
636
+ }) {
637
+ const title = hookEventMetadata.matcherMetadata !== undefined ? `${selectedEvent} - Matcher: ${selectedMatcher || "(all)"}` : selectedEvent;
638
+ if (hooksForSelectedMatcher.length === 0) {
639
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Dialog, {
640
+ title,
641
+ subtitle: hookEventMetadata.description,
642
+ onCancel,
643
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
644
+ children: "Esc to go back"
645
+ }, undefined, false, undefined, this),
646
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
647
+ flexDirection: "column",
648
+ gap: 1,
649
+ children: [
650
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
651
+ dimColor: true,
652
+ children: "No hooks configured for this event."
653
+ }, undefined, false, undefined, this),
654
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
655
+ dimColor: true,
656
+ children: "To add hooks, edit settings.json directly or ask Claude."
657
+ }, undefined, false, undefined, this)
658
+ ]
659
+ }, undefined, true, undefined, this)
660
+ }, undefined, false, undefined, this);
661
+ }
662
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Dialog, {
663
+ title,
664
+ subtitle: hookEventMetadata.description,
665
+ onCancel,
666
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
667
+ flexDirection: "column",
668
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Select, {
669
+ options: hooksForSelectedMatcher.map((hook, index) => ({
670
+ label: `[${hook.config.type}] ${getHookDisplayText(hook.config)}`,
671
+ value: index.toString(),
672
+ description: hook.source === "pluginHook" && hook.pluginName ? `${hookSourceHeaderDisplayString(hook.source)} (${hook.pluginName})` : hookSourceHeaderDisplayString(hook.source)
673
+ })),
674
+ onChange: (value) => {
675
+ const index = parseInt(value, 10);
676
+ const hook = hooksForSelectedMatcher[index];
677
+ if (hook) {
678
+ onSelect(hook);
679
+ }
680
+ },
681
+ onCancel
682
+ }, undefined, false, undefined, this)
683
+ }, undefined, false, undefined, this)
684
+ }, undefined, false, undefined, this);
685
+ }
686
+ var jsx_dev_runtime2;
687
+ var init_SelectHookMode = __esm(() => {
688
+ init_src();
689
+ init_hooksSettings();
690
+ init_select();
691
+ init_src();
692
+ jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
693
+ });
694
+
695
+ // src/components/hooks/SelectMatcherMode.tsx
696
+ function SelectMatcherMode({
697
+ selectedEvent,
698
+ matchersForSelectedEvent,
699
+ hooksByEventAndMatcher,
700
+ eventDescription,
701
+ onSelect,
702
+ onCancel
703
+ }) {
704
+ const matchersWithSources = React.useMemo(() => {
705
+ return matchersForSelectedEvent.map((matcher) => {
706
+ const hooks = hooksByEventAndMatcher[selectedEvent]?.[matcher] || [];
707
+ const sources = Array.from(new Set(hooks.map((h) => h.source)));
708
+ return {
709
+ matcher,
710
+ sources,
711
+ hookCount: hooks.length
712
+ };
713
+ });
714
+ }, [matchersForSelectedEvent, hooksByEventAndMatcher, selectedEvent]);
715
+ if (matchersForSelectedEvent.length === 0) {
716
+ return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Dialog, {
717
+ title: `${selectedEvent} - Matchers`,
718
+ subtitle: eventDescription,
719
+ onCancel,
720
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
721
+ children: "Esc to go back"
722
+ }, undefined, false, undefined, this),
723
+ children: /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
724
+ flexDirection: "column",
725
+ gap: 1,
726
+ children: [
727
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
728
+ dimColor: true,
729
+ children: "No hooks configured for this event."
730
+ }, undefined, false, undefined, this),
731
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
732
+ dimColor: true,
733
+ children: "To add hooks, edit settings.json directly or ask Claude."
734
+ }, undefined, false, undefined, this)
735
+ ]
736
+ }, undefined, true, undefined, this)
737
+ }, undefined, false, undefined, this);
738
+ }
739
+ return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Dialog, {
740
+ title: `${selectedEvent} - Matchers`,
741
+ subtitle: eventDescription,
742
+ onCancel,
743
+ children: /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
744
+ flexDirection: "column",
745
+ children: /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Select, {
746
+ options: matchersWithSources.map((item) => {
747
+ const sourceText = item.sources.map(hookSourceInlineDisplayString).join(", ");
748
+ const matcherLabel = item.matcher || "(all)";
749
+ return {
750
+ label: `[${sourceText}] ${matcherLabel}`,
751
+ value: item.matcher,
752
+ description: `${item.hookCount} ${plural(item.hookCount, "hook")}`
753
+ };
754
+ }),
755
+ onChange: (value) => {
756
+ onSelect(value);
757
+ },
758
+ onCancel
759
+ }, undefined, false, undefined, this)
760
+ }, undefined, false, undefined, this)
761
+ }, undefined, false, undefined, this);
762
+ }
763
+ var React, jsx_dev_runtime3;
764
+ var init_SelectMatcherMode = __esm(() => {
765
+ init_src();
766
+ init_hooksSettings();
767
+ init_stringUtils();
768
+ init_select();
769
+ init_src();
770
+ React = __toESM(require_react(), 1);
771
+ jsx_dev_runtime3 = __toESM(require_jsx_dev_runtime(), 1);
772
+ });
773
+
774
+ // src/components/hooks/ViewHookMode.tsx
775
+ function ViewHookMode({
776
+ selectedHook,
777
+ eventSupportsMatcher,
778
+ onCancel
779
+ }) {
780
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Dialog, {
781
+ title: "Hook details",
782
+ onCancel,
783
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
784
+ children: "Esc to go back"
785
+ }, undefined, false, undefined, this),
786
+ children: /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
787
+ flexDirection: "column",
788
+ gap: 1,
789
+ children: [
790
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
791
+ flexDirection: "column",
792
+ children: [
793
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
794
+ children: [
795
+ "Event: ",
796
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
797
+ bold: true,
798
+ children: selectedHook.event
799
+ }, undefined, false, undefined, this)
800
+ ]
801
+ }, undefined, true, undefined, this),
802
+ eventSupportsMatcher && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
803
+ children: [
804
+ "Matcher: ",
805
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
806
+ bold: true,
807
+ children: selectedHook.matcher || "(all)"
808
+ }, undefined, false, undefined, this)
809
+ ]
810
+ }, undefined, true, undefined, this),
811
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
812
+ children: [
813
+ "Type: ",
814
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
815
+ bold: true,
816
+ children: selectedHook.config.type
817
+ }, undefined, false, undefined, this)
818
+ ]
819
+ }, undefined, true, undefined, this),
820
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
821
+ children: [
822
+ "Source:",
823
+ " ",
824
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
825
+ dimColor: true,
826
+ children: hookSourceDescriptionDisplayString(selectedHook.source)
827
+ }, undefined, false, undefined, this)
828
+ ]
829
+ }, undefined, true, undefined, this),
830
+ selectedHook.pluginName && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
831
+ children: [
832
+ "Plugin: ",
833
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
834
+ dimColor: true,
835
+ children: selectedHook.pluginName
836
+ }, undefined, false, undefined, this)
837
+ ]
838
+ }, undefined, true, undefined, this)
839
+ ]
840
+ }, undefined, true, undefined, this),
841
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
842
+ flexDirection: "column",
843
+ children: [
844
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
845
+ dimColor: true,
846
+ children: [
847
+ getContentFieldLabel(selectedHook.config),
848
+ ":"
849
+ ]
850
+ }, undefined, true, undefined, this),
851
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
852
+ borderStyle: "round",
853
+ borderDimColor: true,
854
+ paddingLeft: 1,
855
+ paddingRight: 1,
856
+ children: /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
857
+ children: getContentFieldValue(selectedHook.config)
858
+ }, undefined, false, undefined, this)
859
+ }, undefined, false, undefined, this)
860
+ ]
861
+ }, undefined, true, undefined, this),
862
+ "statusMessage" in selectedHook.config && selectedHook.config.statusMessage && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
863
+ children: [
864
+ "Status message:",
865
+ " ",
866
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
867
+ dimColor: true,
868
+ children: selectedHook.config.statusMessage
869
+ }, undefined, false, undefined, this)
870
+ ]
871
+ }, undefined, true, undefined, this),
872
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
873
+ dimColor: true,
874
+ children: "To modify or remove this hook, edit settings.json directly or ask Claude to help."
875
+ }, undefined, false, undefined, this)
876
+ ]
877
+ }, undefined, true, undefined, this)
878
+ }, undefined, false, undefined, this);
879
+ }
880
+ function getContentFieldLabel(config) {
881
+ switch (config.type) {
882
+ case "command":
883
+ return "Command";
884
+ case "prompt":
885
+ return "Prompt";
886
+ case "agent":
887
+ return "Prompt";
888
+ case "http":
889
+ return "URL";
890
+ }
891
+ }
892
+ function getContentFieldValue(config) {
893
+ switch (config.type) {
894
+ case "command":
895
+ return config.command;
896
+ case "prompt":
897
+ return config.prompt;
898
+ case "agent":
899
+ return config.prompt;
900
+ case "http":
901
+ return config.url;
902
+ }
903
+ }
904
+ var jsx_dev_runtime4;
905
+ var init_ViewHookMode = __esm(() => {
906
+ init_src();
907
+ init_hooksSettings();
908
+ init_src();
909
+ jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
910
+ });
911
+
912
+ // src/components/hooks/HooksConfigMenu.tsx
913
+ function HooksConfigMenu({ toolNames, onExit }) {
914
+ const [modeState, setModeState] = import_react.useState({
915
+ mode: "select-event"
916
+ });
917
+ const [disabledByPolicy, setDisabledByPolicy] = import_react.useState(() => {
918
+ const settings2 = getSettings_DEPRECATED();
919
+ const hooksDisabled2 = settings2?.disableAllHooks === true;
920
+ return hooksDisabled2 && getSettingsForSource("policySettings")?.disableAllHooks === true;
921
+ });
922
+ const [restrictedByPolicy, setRestrictedByPolicy] = import_react.useState(() => {
923
+ return getSettingsForSource("policySettings")?.allowManagedHooksOnly === true;
924
+ });
925
+ useSettingsChange((source) => {
926
+ if (source === "policySettings") {
927
+ const settings2 = getSettings_DEPRECATED();
928
+ const hooksDisabled2 = settings2?.disableAllHooks === true;
929
+ setDisabledByPolicy(hooksDisabled2 && getSettingsForSource("policySettings")?.disableAllHooks === true);
930
+ setRestrictedByPolicy(getSettingsForSource("policySettings")?.allowManagedHooksOnly === true);
931
+ }
932
+ });
933
+ const mode = modeState.mode;
934
+ const selectedEvent = "event" in modeState ? modeState.event : "PreToolUse";
935
+ const selectedMatcher = "matcher" in modeState ? modeState.matcher : null;
936
+ const mcp = useAppState((s) => s.mcp);
937
+ const appStateStore = useAppStateStore();
938
+ const combinedToolNames = import_react.useMemo(() => [...toolNames, ...mcp.tools.map((tool) => tool.name)], [toolNames, mcp.tools]);
939
+ const hooksByEventAndMatcher = import_react.useMemo(() => groupHooksByEventAndMatcher(appStateStore.getState(), combinedToolNames), [combinedToolNames, appStateStore]);
940
+ const sortedMatchersForSelectedEvent = import_react.useMemo(() => getSortedMatchersForEvent(hooksByEventAndMatcher, selectedEvent), [hooksByEventAndMatcher, selectedEvent]);
941
+ const hooksForSelectedMatcher = import_react.useMemo(() => getHooksForMatcher(hooksByEventAndMatcher, selectedEvent, selectedMatcher), [hooksByEventAndMatcher, selectedEvent, selectedMatcher]);
942
+ const handleExit = import_react.useCallback(() => {
943
+ onExit("Hooks dialog dismissed", { display: "system" });
944
+ }, [onExit]);
945
+ useKeybinding("confirm:no", handleExit, {
946
+ context: "Confirmation",
947
+ isActive: mode === "select-event"
948
+ });
949
+ useKeybinding("confirm:no", () => {
950
+ setModeState({ mode: "select-event" });
951
+ }, {
952
+ context: "Confirmation",
953
+ isActive: mode === "select-matcher"
954
+ });
955
+ useKeybinding("confirm:no", () => {
956
+ if ("event" in modeState) {
957
+ if (getMatcherMetadata(modeState.event, combinedToolNames) !== undefined) {
958
+ setModeState({ mode: "select-matcher", event: modeState.event });
959
+ } else {
960
+ setModeState({ mode: "select-event" });
961
+ }
962
+ }
963
+ }, {
964
+ context: "Confirmation",
965
+ isActive: mode === "select-hook"
966
+ });
967
+ useKeybinding("confirm:no", () => {
968
+ if (modeState.mode === "view-hook") {
969
+ const { event, hook } = modeState;
970
+ setModeState({
971
+ mode: "select-hook",
972
+ event,
973
+ matcher: hook.matcher || ""
974
+ });
975
+ }
976
+ }, {
977
+ context: "Confirmation",
978
+ isActive: mode === "view-hook"
979
+ });
980
+ const hookEventMetadata = getHookEventMetadata(combinedToolNames);
981
+ const settings = getSettings_DEPRECATED();
982
+ const hooksDisabled = settings?.disableAllHooks === true;
983
+ const { hooksByEvent, totalHooksCount } = import_react.useMemo(() => {
984
+ const byEvent = {};
985
+ let total = 0;
986
+ for (const [event, matchers] of Object.entries(hooksByEventAndMatcher)) {
987
+ const eventCount = Object.values(matchers).reduce((sum, hooks) => sum + hooks.length, 0);
988
+ byEvent[event] = eventCount;
989
+ total += eventCount;
990
+ }
991
+ return { hooksByEvent: byEvent, totalHooksCount: total };
992
+ }, [hooksByEventAndMatcher]);
993
+ if (hooksDisabled) {
994
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Dialog, {
995
+ title: "Hook Configuration - Disabled",
996
+ onCancel: handleExit,
997
+ inputGuide: () => /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
998
+ children: "Esc to close"
999
+ }, undefined, false, undefined, this),
1000
+ children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1001
+ flexDirection: "column",
1002
+ gap: 1,
1003
+ children: [
1004
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1005
+ flexDirection: "column",
1006
+ children: [
1007
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1008
+ children: [
1009
+ "All hooks are currently ",
1010
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1011
+ bold: true,
1012
+ children: "disabled"
1013
+ }, undefined, false, undefined, this),
1014
+ disabledByPolicy && " by a managed settings file",
1015
+ ". You have",
1016
+ " ",
1017
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1018
+ bold: true,
1019
+ children: totalHooksCount
1020
+ }, undefined, false, undefined, this),
1021
+ " configured",
1022
+ " ",
1023
+ plural(totalHooksCount, "hook"),
1024
+ " that",
1025
+ " ",
1026
+ plural(totalHooksCount, "is", "are"),
1027
+ " not running."
1028
+ ]
1029
+ }, undefined, true, undefined, this),
1030
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1031
+ marginTop: 1,
1032
+ children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1033
+ dimColor: true,
1034
+ children: "When hooks are disabled:"
1035
+ }, undefined, false, undefined, this)
1036
+ }, undefined, false, undefined, this),
1037
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1038
+ dimColor: true,
1039
+ children: "\xB7 No hook commands will execute"
1040
+ }, undefined, false, undefined, this),
1041
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1042
+ dimColor: true,
1043
+ children: "\xB7 StatusLine will not be displayed"
1044
+ }, undefined, false, undefined, this),
1045
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1046
+ dimColor: true,
1047
+ children: "\xB7 Tool operations will proceed without hook validation"
1048
+ }, undefined, false, undefined, this)
1049
+ ]
1050
+ }, undefined, true, undefined, this),
1051
+ !disabledByPolicy && /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1052
+ dimColor: true,
1053
+ children: 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Claude.'
1054
+ }, undefined, false, undefined, this)
1055
+ ]
1056
+ }, undefined, true, undefined, this)
1057
+ }, undefined, false, undefined, this);
1058
+ }
1059
+ switch (modeState.mode) {
1060
+ case "select-event":
1061
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectEventMode, {
1062
+ hookEventMetadata,
1063
+ hooksByEvent,
1064
+ totalHooksCount,
1065
+ restrictedByPolicy,
1066
+ onSelectEvent: (event) => {
1067
+ if (getMatcherMetadata(event, combinedToolNames) !== undefined) {
1068
+ setModeState({ mode: "select-matcher", event });
1069
+ } else {
1070
+ setModeState({ mode: "select-hook", event, matcher: "" });
1071
+ }
1072
+ },
1073
+ onCancel: handleExit
1074
+ }, undefined, false, undefined, this);
1075
+ case "select-matcher":
1076
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectMatcherMode, {
1077
+ selectedEvent: modeState.event,
1078
+ matchersForSelectedEvent: sortedMatchersForSelectedEvent,
1079
+ hooksByEventAndMatcher,
1080
+ eventDescription: hookEventMetadata[modeState.event].description,
1081
+ onSelect: (matcher) => {
1082
+ setModeState({
1083
+ mode: "select-hook",
1084
+ event: modeState.event,
1085
+ matcher
1086
+ });
1087
+ },
1088
+ onCancel: () => {
1089
+ setModeState({ mode: "select-event" });
1090
+ }
1091
+ }, undefined, false, undefined, this);
1092
+ case "select-hook":
1093
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectHookMode, {
1094
+ selectedEvent: modeState.event,
1095
+ selectedMatcher: modeState.matcher,
1096
+ hooksForSelectedMatcher,
1097
+ hookEventMetadata: hookEventMetadata[modeState.event],
1098
+ onSelect: (hook) => {
1099
+ setModeState({
1100
+ mode: "view-hook",
1101
+ event: modeState.event,
1102
+ hook
1103
+ });
1104
+ },
1105
+ onCancel: () => {
1106
+ if (getMatcherMetadata(modeState.event, combinedToolNames) !== undefined) {
1107
+ setModeState({
1108
+ mode: "select-matcher",
1109
+ event: modeState.event
1110
+ });
1111
+ } else {
1112
+ setModeState({ mode: "select-event" });
1113
+ }
1114
+ }
1115
+ }, undefined, false, undefined, this);
1116
+ case "view-hook":
1117
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ViewHookMode, {
1118
+ selectedHook: modeState.hook,
1119
+ eventSupportsMatcher: getMatcherMetadata(modeState.event, combinedToolNames) !== undefined,
1120
+ onCancel: () => {
1121
+ const { event, hook } = modeState;
1122
+ setModeState({
1123
+ mode: "select-hook",
1124
+ event,
1125
+ matcher: hook.matcher || ""
1126
+ });
1127
+ }
1128
+ }, undefined, false, undefined, this);
1129
+ }
1130
+ }
1131
+ var import_react, jsx_dev_runtime5;
1132
+ var init_HooksConfigMenu = __esm(() => {
1133
+ init_AppState();
1134
+ init_useSettingsChange();
1135
+ init_src();
1136
+ init_useKeybinding();
1137
+ init_hooksConfigManager();
1138
+ init_settings();
1139
+ init_stringUtils();
1140
+ init_src();
1141
+ init_SelectEventMode();
1142
+ init_SelectHookMode();
1143
+ init_SelectMatcherMode();
1144
+ init_ViewHookMode();
1145
+ import_react = __toESM(require_react(), 1);
1146
+ jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
1147
+ });
1148
+
1149
+ // src/commands/hooks/hooks.tsx
1150
+ var jsx_dev_runtime6, call = async (onDone, context) => {
1151
+ logEvent("tengu_hooks_command", {});
1152
+ const appState = context.getAppState();
1153
+ const permissionContext = appState.toolPermissionContext;
1154
+ const toolNames = getTools(permissionContext).map((tool) => tool.name);
1155
+ return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(HooksConfigMenu, {
1156
+ toolNames,
1157
+ onExit: onDone
1158
+ }, undefined, false, undefined, this);
1159
+ };
1160
+ var init_hooks = __esm(() => {
1161
+ init_HooksConfigMenu();
1162
+ init_analytics();
1163
+ init_tools();
1164
+ jsx_dev_runtime6 = __toESM(require_jsx_dev_runtime(), 1);
1165
+ });
1166
+ init_hooks();
1167
+
1168
+ export {
1169
+ call
1170
+ };