@jayjiang/open-cc 0.2.1

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 (459) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +107 -0
  3. package/dist/chunk-00dxqxqj.js +227 -0
  4. package/dist/chunk-01p8hhsp.js +154 -0
  5. package/dist/chunk-02wy0m47.js +152 -0
  6. package/dist/chunk-0465tnzh.js +110 -0
  7. package/dist/chunk-054mjk62.js +678 -0
  8. package/dist/chunk-06saje2v.js +39 -0
  9. package/dist/chunk-0731m51q.js +8 -0
  10. package/dist/chunk-09y0jvtm.js +165 -0
  11. package/dist/chunk-0fkqze0v.js +113 -0
  12. package/dist/chunk-0hn525br.js +1920 -0
  13. package/dist/chunk-0hneh9ha.js +123 -0
  14. package/dist/chunk-0paqc2yw.js +15 -0
  15. package/dist/chunk-0rkbrabt.js +32 -0
  16. package/dist/chunk-0scs4rpx.js +96 -0
  17. package/dist/chunk-0vkfrmqm.js +690 -0
  18. package/dist/chunk-0w2byc95.js +38 -0
  19. package/dist/chunk-0xjaqda8.js +1124 -0
  20. package/dist/chunk-0y3vcsv4.js +92 -0
  21. package/dist/chunk-0yb4dz9c.js +26840 -0
  22. package/dist/chunk-10fdxge0.js +121 -0
  23. package/dist/chunk-1141xmr4.js +8 -0
  24. package/dist/chunk-14vffdmg.js +38 -0
  25. package/dist/chunk-178ykx7k.js +1493 -0
  26. package/dist/chunk-1bhva2z9.js +128 -0
  27. package/dist/chunk-1c8z1b5v.js +16 -0
  28. package/dist/chunk-1cbn5kxf.js +7 -0
  29. package/dist/chunk-1che51a5.js +1585 -0
  30. package/dist/chunk-1h2famwb.js +49 -0
  31. package/dist/chunk-1jrkpnbn.js +71 -0
  32. package/dist/chunk-1k4j1xcf.js +154 -0
  33. package/dist/chunk-1mm9d8p4.js +70 -0
  34. package/dist/chunk-1n3gnn2t.js +41 -0
  35. package/dist/chunk-1nqaq1rs.js +654 -0
  36. package/dist/chunk-1p2j9g3w.js +998 -0
  37. package/dist/chunk-1p7jfcee.js +533 -0
  38. package/dist/chunk-1pg8s12r.js +338 -0
  39. package/dist/chunk-1qjb22fx.js +109 -0
  40. package/dist/chunk-1yzc16qa.js +39 -0
  41. package/dist/chunk-20gm89wf.js +208 -0
  42. package/dist/chunk-238g70xa.js +36 -0
  43. package/dist/chunk-26k0324b.js +751 -0
  44. package/dist/chunk-27xc1csx.js +104 -0
  45. package/dist/chunk-2a42s11t.js +412 -0
  46. package/dist/chunk-2bhq4emw.js +10476 -0
  47. package/dist/chunk-2eykm0j0.js +20 -0
  48. package/dist/chunk-2gzv8nrw.js +205 -0
  49. package/dist/chunk-2k995y2x.js +880 -0
  50. package/dist/chunk-2kpzaa7w.js +401 -0
  51. package/dist/chunk-2nayx6q1.js +63 -0
  52. package/dist/chunk-2qhs9n36.js +151 -0
  53. package/dist/chunk-2s5f2nnw.js +603 -0
  54. package/dist/chunk-2y54j9ew.js +174394 -0
  55. package/dist/chunk-2zcaw1jd.js +2343 -0
  56. package/dist/chunk-30chpfyc.js +15275 -0
  57. package/dist/chunk-30k39xd2.js +28 -0
  58. package/dist/chunk-30rst83v.js +168 -0
  59. package/dist/chunk-36z5enc4.js +160 -0
  60. package/dist/chunk-3c25bcsw.js +17 -0
  61. package/dist/chunk-3c4qja3e.js +63 -0
  62. package/dist/chunk-3ccx8k84.js +102 -0
  63. package/dist/chunk-3envnthj.js +157 -0
  64. package/dist/chunk-3h8a89gy.js +46 -0
  65. package/dist/chunk-3kadbep2.js +6956 -0
  66. package/dist/chunk-3kd79cnk.js +15 -0
  67. package/dist/chunk-3m45xtza.js +1188 -0
  68. package/dist/chunk-3q50xe1j.js +17 -0
  69. package/dist/chunk-3w6s9m5w.js +16 -0
  70. package/dist/chunk-3x0408tc.js +42 -0
  71. package/dist/chunk-3z7ae04g.js +372 -0
  72. package/dist/chunk-40tedt0y.js +275 -0
  73. package/dist/chunk-44q8kegv.js +811 -0
  74. package/dist/chunk-47gy6qkp.js +328 -0
  75. package/dist/chunk-495d85x1.js +8066 -0
  76. package/dist/chunk-4axcksrv.js +129 -0
  77. package/dist/chunk-4e1271a8.js +106 -0
  78. package/dist/chunk-4g3v8y12.js +23 -0
  79. package/dist/chunk-4g5mrzm0.js +220 -0
  80. package/dist/chunk-4jm600zv.js +13 -0
  81. package/dist/chunk-4n989n6h.js +153 -0
  82. package/dist/chunk-4qedx22a.js +44 -0
  83. package/dist/chunk-4rze71rx.js +116 -0
  84. package/dist/chunk-4wbhvcag.js +91 -0
  85. package/dist/chunk-4zfkzkt6.js +37 -0
  86. package/dist/chunk-55wgxwa9.js +13877 -0
  87. package/dist/chunk-56ta4h0b.js +154 -0
  88. package/dist/chunk-58a0x39g.js +89 -0
  89. package/dist/chunk-5dbk24zg.js +890 -0
  90. package/dist/chunk-5gzg4q1k.js +99 -0
  91. package/dist/chunk-5k2gdxnr.js +336 -0
  92. package/dist/chunk-5kp252z6.js +202 -0
  93. package/dist/chunk-5p2ssw3d.js +825 -0
  94. package/dist/chunk-5w33j8gy.js +1580 -0
  95. package/dist/chunk-5ywjzvm8.js +61 -0
  96. package/dist/chunk-5ztxx8gd.js +80 -0
  97. package/dist/chunk-62vwr0y5.js +117 -0
  98. package/dist/chunk-6b8ksqmf.js +1153 -0
  99. package/dist/chunk-6bd8brc4.js +48 -0
  100. package/dist/chunk-6cpqmd4r.js +132 -0
  101. package/dist/chunk-6dj5t602.js +341 -0
  102. package/dist/chunk-6g62sjpf.js +328 -0
  103. package/dist/chunk-6gr3c3w9.js +378 -0
  104. package/dist/chunk-6h9n8qbr.js +1170 -0
  105. package/dist/chunk-6kpbgc5w.js +23 -0
  106. package/dist/chunk-6n2qgm9v.js +8 -0
  107. package/dist/chunk-6n6jfmce.js +2833 -0
  108. package/dist/chunk-6q2x8zeg.js +802 -0
  109. package/dist/chunk-6tnekwtp.js +849 -0
  110. package/dist/chunk-6tq2v3rk.js +186 -0
  111. package/dist/chunk-6vphqqd1.js +27 -0
  112. package/dist/chunk-6wkdqk81.js +444 -0
  113. package/dist/chunk-7226mgjt.js +195 -0
  114. package/dist/chunk-72fey14y.js +565 -0
  115. package/dist/chunk-73fgm72g.js +698 -0
  116. package/dist/chunk-73fhat5j.js +212 -0
  117. package/dist/chunk-73rpbt04.js +1947 -0
  118. package/dist/chunk-743znc5c.js +56 -0
  119. package/dist/chunk-760252na.js +101 -0
  120. package/dist/chunk-76t2h5v2.js +495 -0
  121. package/dist/chunk-7739pg2c.js +4261 -0
  122. package/dist/chunk-789khc7a.js +96 -0
  123. package/dist/chunk-78mma1s7.js +88 -0
  124. package/dist/chunk-7aw745vx.js +40175 -0
  125. package/dist/chunk-7azp8c8y.js +584 -0
  126. package/dist/chunk-7m2nd8da.js +110 -0
  127. package/dist/chunk-7pemewz2.js +726 -0
  128. package/dist/chunk-7rjyn5d3.js +125 -0
  129. package/dist/chunk-7v0wq9nk.js +93 -0
  130. package/dist/chunk-7wm5s02e.js +216 -0
  131. package/dist/chunk-83hfzbx3.js +10 -0
  132. package/dist/chunk-84k64e4a.js +1646 -0
  133. package/dist/chunk-87jfpcm7.js +438 -0
  134. package/dist/chunk-8btm871b.js +42 -0
  135. package/dist/chunk-8hbbzet5.js +34 -0
  136. package/dist/chunk-8hq5kk3y.js +44 -0
  137. package/dist/chunk-8j6vs75t.js +256 -0
  138. package/dist/chunk-8ngxagxq.js +18 -0
  139. package/dist/chunk-8nsem424.js +110 -0
  140. package/dist/chunk-8pf73pc8.js +169 -0
  141. package/dist/chunk-8tnsngw2.js +31 -0
  142. package/dist/chunk-8y12jxg8.js +10 -0
  143. package/dist/chunk-8ymf4e6z.js +48 -0
  144. package/dist/chunk-90wp6wez.js +10510 -0
  145. package/dist/chunk-95dt8mpg.js +603 -0
  146. package/dist/chunk-95rj8m4e.js +130 -0
  147. package/dist/chunk-9ebygqen.js +89 -0
  148. package/dist/chunk-9gbamk79.js +93 -0
  149. package/dist/chunk-9tkq3g56.js +642 -0
  150. package/dist/chunk-a05hje2h.js +105 -0
  151. package/dist/chunk-a2krhf3c.js +90 -0
  152. package/dist/chunk-a6q9rehn.js +182 -0
  153. package/dist/chunk-a78b3pvt.js +71 -0
  154. package/dist/chunk-a8ejc632.js +3094 -0
  155. package/dist/chunk-a9vdeb6y.js +258 -0
  156. package/dist/chunk-a9zh40sj.js +48 -0
  157. package/dist/chunk-ab59azrr.js +480 -0
  158. package/dist/chunk-accxhkm6.js +88 -0
  159. package/dist/chunk-adzd8pzb.js +1095 -0
  160. package/dist/chunk-ae76ded0.js +30 -0
  161. package/dist/chunk-aftppv3p.js +691 -0
  162. package/dist/chunk-agmw1vmf.js +725 -0
  163. package/dist/chunk-an5cb1vx.js +16 -0
  164. package/dist/chunk-b1s11z4y.js +63 -0
  165. package/dist/chunk-b2rkh01x.js +443 -0
  166. package/dist/chunk-b4w4argn.js +1551 -0
  167. package/dist/chunk-b4wg70y1.js +54 -0
  168. package/dist/chunk-b5b7h81y.js +7189 -0
  169. package/dist/chunk-b9k5cs09.js +50 -0
  170. package/dist/chunk-bapy5rc8.js +40 -0
  171. package/dist/chunk-bda3gxxz.js +246 -0
  172. package/dist/chunk-bhdt6k7w.js +15 -0
  173. package/dist/chunk-bm1qb16p.js +17 -0
  174. package/dist/chunk-bp0dnrwg.js +281 -0
  175. package/dist/chunk-bqfnp99q.js +477 -0
  176. package/dist/chunk-bs6keys0.js +158 -0
  177. package/dist/chunk-bsbmmfyt.js +17 -0
  178. package/dist/chunk-btkettbr.js +166 -0
  179. package/dist/chunk-bwgde7nf.js +37 -0
  180. package/dist/chunk-c1zc58pw.js +280 -0
  181. package/dist/chunk-c2g96ga2.js +184 -0
  182. package/dist/chunk-c3z7ptb2.js +21933 -0
  183. package/dist/chunk-c8vn3ynx.js +349 -0
  184. package/dist/chunk-cdm0k2n0.js +115 -0
  185. package/dist/chunk-cdz5yb0r.js +57 -0
  186. package/dist/chunk-cfv996bs.js +22 -0
  187. package/dist/chunk-cg788ab0.js +100 -0
  188. package/dist/chunk-cgfdkzhb.js +12 -0
  189. package/dist/chunk-cp76dsdp.js +386 -0
  190. package/dist/chunk-cr6t6rth.js +306 -0
  191. package/dist/chunk-cvp5vayb.js +31 -0
  192. package/dist/chunk-cwehsmj5.js +114 -0
  193. package/dist/chunk-cy2hswr1.js +15 -0
  194. package/dist/chunk-d2rzy2p0.js +42 -0
  195. package/dist/chunk-d3v2fbay.js +106 -0
  196. package/dist/chunk-dc4eha8a.js +243 -0
  197. package/dist/chunk-dcz167d6.js +73 -0
  198. package/dist/chunk-de55jjre.js +106 -0
  199. package/dist/chunk-dfx733j3.js +650 -0
  200. package/dist/chunk-dgqrcy74.js +48 -0
  201. package/dist/chunk-dj6dk19k.js +55 -0
  202. package/dist/chunk-dn2xcmc4.js +173 -0
  203. package/dist/chunk-dndehvfr.js +57 -0
  204. package/dist/chunk-dnh7jtpb.js +37 -0
  205. package/dist/chunk-dnwzz9f7.js +88 -0
  206. package/dist/chunk-dv1wfr85.js +6373 -0
  207. package/dist/chunk-dwq5rs3q.js +62 -0
  208. package/dist/chunk-dz8exe78.js +91 -0
  209. package/dist/chunk-e4rzw1sd.js +606 -0
  210. package/dist/chunk-e6rrwzv0.js +463 -0
  211. package/dist/chunk-e6t9kpzq.js +145 -0
  212. package/dist/chunk-e7c8ypwc.js +287 -0
  213. package/dist/chunk-e9nkfs4e.js +738 -0
  214. package/dist/chunk-eaf7c8ck.js +537 -0
  215. package/dist/chunk-ebyr6p77.js +115 -0
  216. package/dist/chunk-edfv7pme.js +104 -0
  217. package/dist/chunk-eh474zhj.js +59 -0
  218. package/dist/chunk-er8ckwzt.js +140 -0
  219. package/dist/chunk-ev5p07yh.js +144 -0
  220. package/dist/chunk-ewadzrm8.js +103 -0
  221. package/dist/chunk-f2mhrmww.js +62 -0
  222. package/dist/chunk-f2zhqnb6.js +69 -0
  223. package/dist/chunk-f5ma3nh5.js +3436 -0
  224. package/dist/chunk-f63q7vx7.js +756 -0
  225. package/dist/chunk-fbv4apne.js +51 -0
  226. package/dist/chunk-fcna95wg.js +113 -0
  227. package/dist/chunk-fdvcpaz3.js +163 -0
  228. package/dist/chunk-fgc0q2b2.js +3354 -0
  229. package/dist/chunk-fm2jvsk7.js +87 -0
  230. package/dist/chunk-ft7fs35e.js +282 -0
  231. package/dist/chunk-fyc5fepv.js +10 -0
  232. package/dist/chunk-g0j0t6qk.js +26 -0
  233. package/dist/chunk-g0nbec9m.js +32 -0
  234. package/dist/chunk-g1fdv1kb.js +86 -0
  235. package/dist/chunk-g338npwr.js +1061 -0
  236. package/dist/chunk-g3t0act8.js +8 -0
  237. package/dist/chunk-g6qddbvf.js +1391 -0
  238. package/dist/chunk-ga5faygf.js +61 -0
  239. package/dist/chunk-gac6nzhc.js +90 -0
  240. package/dist/chunk-gck2cswd.js +862 -0
  241. package/dist/chunk-gntr3b25.js +40683 -0
  242. package/dist/chunk-gq5bbtme.js +456 -0
  243. package/dist/chunk-gyj242zr.js +20 -0
  244. package/dist/chunk-h0qngp9w.js +157 -0
  245. package/dist/chunk-h1xnvnye.js +524 -0
  246. package/dist/chunk-h3mhfamg.js +60 -0
  247. package/dist/chunk-h6s1tx0e.js +250 -0
  248. package/dist/chunk-h7qb4hyj.js +70 -0
  249. package/dist/chunk-h8qd1gw2.js +106 -0
  250. package/dist/chunk-hakdhagh.js +16606 -0
  251. package/dist/chunk-hcdt34n4.js +143 -0
  252. package/dist/chunk-hh7cmy4k.js +20 -0
  253. package/dist/chunk-hk9xz7gk.js +118 -0
  254. package/dist/chunk-hqmz36b3.js +552 -0
  255. package/dist/chunk-hs8ph4p8.js +8 -0
  256. package/dist/chunk-hsq4vtjy.js +92 -0
  257. package/dist/chunk-hzhd0p1y.js +104 -0
  258. package/dist/chunk-hzhe8ygc.js +547 -0
  259. package/dist/chunk-j0tqbsh7.js +176 -0
  260. package/dist/chunk-j1s1jvad.js +346 -0
  261. package/dist/chunk-j2k4p94p.js +55 -0
  262. package/dist/chunk-j3a4p81y.js +184 -0
  263. package/dist/chunk-j595yd4h.js +439 -0
  264. package/dist/chunk-j64ga6ta.js +8035 -0
  265. package/dist/chunk-j7qwxra8.js +2335 -0
  266. package/dist/chunk-j98f65zv.js +789 -0
  267. package/dist/chunk-jd32zbps.js +15 -0
  268. package/dist/chunk-jdgeec04.js +4249 -0
  269. package/dist/chunk-jdt5s5k7.js +62 -0
  270. package/dist/chunk-jeaek018.js +97 -0
  271. package/dist/chunk-jkhvm8yk.js +104 -0
  272. package/dist/chunk-jmxaze30.js +780 -0
  273. package/dist/chunk-jne71s1f.js +104 -0
  274. package/dist/chunk-jnhkref0.js +30 -0
  275. package/dist/chunk-jpgr7zfs.js +95 -0
  276. package/dist/chunk-jqp0q5nk.js +339 -0
  277. package/dist/chunk-jtqgnyaq.js +1317 -0
  278. package/dist/chunk-jx817w05.js +11 -0
  279. package/dist/chunk-jynzr5w9.js +71 -0
  280. package/dist/chunk-jzmz18nn.js +65 -0
  281. package/dist/chunk-k0p9w03v.js +4957 -0
  282. package/dist/chunk-k1jnpyj9.js +155 -0
  283. package/dist/chunk-k445en8h.js +102 -0
  284. package/dist/chunk-k62k13ya.js +81 -0
  285. package/dist/chunk-kf8kjmfv.js +821 -0
  286. package/dist/chunk-kgn1nfg9.js +468 -0
  287. package/dist/chunk-khmz14d4.js +38 -0
  288. package/dist/chunk-kjhmt6ba.js +100 -0
  289. package/dist/chunk-kkrz2zw2.js +122 -0
  290. package/dist/chunk-kv1ryvtm.js +176 -0
  291. package/dist/chunk-kwekc97v.js +18 -0
  292. package/dist/chunk-kyvwf342.js +65 -0
  293. package/dist/chunk-m0g3xv72.js +266 -0
  294. package/dist/chunk-m26twd8m.js +277 -0
  295. package/dist/chunk-m4bc15mz.js +229 -0
  296. package/dist/chunk-m9t8j37k.js +253 -0
  297. package/dist/chunk-mb2gpwwf.js +432 -0
  298. package/dist/chunk-mezwt1bt.js +306 -0
  299. package/dist/chunk-mfm83xn5.js +84 -0
  300. package/dist/chunk-mn7870fh.js +4389 -0
  301. package/dist/chunk-mr9df5v8.js +722 -0
  302. package/dist/chunk-mt25echc.js +6157 -0
  303. package/dist/chunk-mwrr6zbb.js +55 -0
  304. package/dist/chunk-mywpbwad.js +198 -0
  305. package/dist/chunk-mzdtkccs.js +125 -0
  306. package/dist/chunk-mzn0z9d3.js +691 -0
  307. package/dist/chunk-n0qaeaa5.js +256 -0
  308. package/dist/chunk-n128bzxs.js +2739 -0
  309. package/dist/chunk-n1erf6kh.js +22820 -0
  310. package/dist/chunk-n4nbgkvd.js +520 -0
  311. package/dist/chunk-n5gkdn9v.js +120 -0
  312. package/dist/chunk-n7ttdtk0.js +641 -0
  313. package/dist/chunk-n8b1njwb.js +208 -0
  314. package/dist/chunk-nek12gtk.js +94 -0
  315. package/dist/chunk-nerv0jvx.js +74 -0
  316. package/dist/chunk-nka1g8f4.js +773 -0
  317. package/dist/chunk-nm2cncrq.js +336 -0
  318. package/dist/chunk-nq0fxyxh.js +752 -0
  319. package/dist/chunk-nrnkshv2.js +192 -0
  320. package/dist/chunk-nsqma629.js +128 -0
  321. package/dist/chunk-nt837qt9.js +21 -0
  322. package/dist/chunk-nttf3k0r.js +2643 -0
  323. package/dist/chunk-nx638j6h.js +268 -0
  324. package/dist/chunk-nx7s0zn5.js +375 -0
  325. package/dist/chunk-p0hff8zy.js +8871 -0
  326. package/dist/chunk-p2816w9z.js +1486 -0
  327. package/dist/chunk-p2d5nh3g.js +342 -0
  328. package/dist/chunk-p57bz7nv.js +55 -0
  329. package/dist/chunk-p5z8t6r3.js +130 -0
  330. package/dist/chunk-pd6653na.js +5394 -0
  331. package/dist/chunk-pjnzf3cg.js +61 -0
  332. package/dist/chunk-ps49ymvj.js +43 -0
  333. package/dist/chunk-pthzapbx.js +348 -0
  334. package/dist/chunk-pwwa7s62.js +11 -0
  335. package/dist/chunk-pyx135a5.js +20 -0
  336. package/dist/chunk-q132dkwr.js +195 -0
  337. package/dist/chunk-q16y18s1.js +120 -0
  338. package/dist/chunk-q25bjaev.js +15 -0
  339. package/dist/chunk-q3jxs36m.js +716 -0
  340. package/dist/chunk-q5by3da6.js +8 -0
  341. package/dist/chunk-q663msp4.js +908 -0
  342. package/dist/chunk-qezgfppb.js +4521 -0
  343. package/dist/chunk-qgjgqmy5.js +5796 -0
  344. package/dist/chunk-qj7h3xc3.js +40 -0
  345. package/dist/chunk-qjcxkbv6.js +644 -0
  346. package/dist/chunk-qnfx3qtx.js +617 -0
  347. package/dist/chunk-qnmyzsam.js +84 -0
  348. package/dist/chunk-qp2qdcda.js +100 -0
  349. package/dist/chunk-qvrq1sby.js +6107 -0
  350. package/dist/chunk-qz2x630m.js +49145 -0
  351. package/dist/chunk-qz3fe4fj.js +469 -0
  352. package/dist/chunk-r0af6bw0.js +173 -0
  353. package/dist/chunk-r1v8d6da.js +1299 -0
  354. package/dist/chunk-r6b58y3x.js +17 -0
  355. package/dist/chunk-r6e45bzh.js +118 -0
  356. package/dist/chunk-r843jezp.js +28 -0
  357. package/dist/chunk-rbgjkg3v.js +90 -0
  358. package/dist/chunk-rc5bbzx4.js +655 -0
  359. package/dist/chunk-rca5xtnd.js +267 -0
  360. package/dist/chunk-rfdbzyjh.js +1865 -0
  361. package/dist/chunk-rh7q28df.js +93 -0
  362. package/dist/chunk-rn0v1hk8.js +34 -0
  363. package/dist/chunk-rvxs7x7j.js +542 -0
  364. package/dist/chunk-rw6fwk2s.js +98 -0
  365. package/dist/chunk-rwagvxh5.js +1711 -0
  366. package/dist/chunk-s10vyjz4.js +224 -0
  367. package/dist/chunk-s274nv8k.js +8 -0
  368. package/dist/chunk-s3pzvdss.js +50 -0
  369. package/dist/chunk-s4w01jsb.js +969 -0
  370. package/dist/chunk-s56j2d6g.js +500 -0
  371. package/dist/chunk-sbs1r0h4.js +317 -0
  372. package/dist/chunk-sd36yzx8.js +954 -0
  373. package/dist/chunk-sd6env07.js +19 -0
  374. package/dist/chunk-sdj9b9wh.js +782 -0
  375. package/dist/chunk-sfht9xvd.js +24 -0
  376. package/dist/chunk-sk3gpkdt.js +89 -0
  377. package/dist/chunk-sp5cjcjh.js +526 -0
  378. package/dist/chunk-sq847dr5.js +1528 -0
  379. package/dist/chunk-sskngwam.js +89 -0
  380. package/dist/chunk-svar8pp2.js +276 -0
  381. package/dist/chunk-szj5wvdy.js +28 -0
  382. package/dist/chunk-t175chdd.js +714 -0
  383. package/dist/chunk-t4k75hqs.js +4987 -0
  384. package/dist/chunk-t7z7vg91.js +225 -0
  385. package/dist/chunk-tanfpxm1.js +419 -0
  386. package/dist/chunk-tf9h0cyj.js +3037 -0
  387. package/dist/chunk-tm1wwvm1.js +99 -0
  388. package/dist/chunk-trtgjd28.js +9300 -0
  389. package/dist/chunk-ts2p6bv1.js +224 -0
  390. package/dist/chunk-ttk5dzz8.js +25 -0
  391. package/dist/chunk-tvg352rv.js +391 -0
  392. package/dist/chunk-tww14j0s.js +86 -0
  393. package/dist/chunk-tz03j2da.js +66 -0
  394. package/dist/chunk-v1kzp02e.js +785 -0
  395. package/dist/chunk-v2sm9w6h.js +220 -0
  396. package/dist/chunk-v3gm2day.js +8 -0
  397. package/dist/chunk-v4qn3g0d.js +286 -0
  398. package/dist/chunk-v66tbnn6.js +476 -0
  399. package/dist/chunk-v78fj8by.js +145 -0
  400. package/dist/chunk-v9smspw2.js +4301 -0
  401. package/dist/chunk-v9ybze94.js +713 -0
  402. package/dist/chunk-vest0y6x.js +3830 -0
  403. package/dist/chunk-vf5sd1nq.js +12 -0
  404. package/dist/chunk-vht4mzgb.js +298 -0
  405. package/dist/chunk-vjwgf4qh.js +41 -0
  406. package/dist/chunk-vkrhafhf.js +248 -0
  407. package/dist/chunk-vn56q87z.js +2058 -0
  408. package/dist/chunk-vscz82fv.js +27 -0
  409. package/dist/chunk-vvn4gkak.js +642 -0
  410. package/dist/chunk-vxj5rbg5.js +84 -0
  411. package/dist/chunk-vyjeh50y.js +2149 -0
  412. package/dist/chunk-w44nvpvt.js +22 -0
  413. package/dist/chunk-waambva2.js +2430 -0
  414. package/dist/chunk-wbhsqc2a.js +275 -0
  415. package/dist/chunk-wbsnpxzh.js +471 -0
  416. package/dist/chunk-wfz0qffj.js +3939 -0
  417. package/dist/chunk-wpqbrv0f.js +83 -0
  418. package/dist/chunk-wzpdet3m.js +843 -0
  419. package/dist/chunk-x6tb96y2.js +264 -0
  420. package/dist/chunk-x8b7vft8.js +132 -0
  421. package/dist/chunk-x8eg216f.js +99 -0
  422. package/dist/chunk-xc9khn0r.js +490 -0
  423. package/dist/chunk-xch406a3.js +673 -0
  424. package/dist/chunk-xdw5dv00.js +8 -0
  425. package/dist/chunk-xe0bpcbr.js +3444 -0
  426. package/dist/chunk-xm3ed3zn.js +300 -0
  427. package/dist/chunk-xpm4ebhz.js +87 -0
  428. package/dist/chunk-xr6yfttj.js +43 -0
  429. package/dist/chunk-xsq9ae7x.js +90 -0
  430. package/dist/chunk-xszk7n10.js +14358 -0
  431. package/dist/chunk-xzmkekfb.js +259 -0
  432. package/dist/chunk-y1784krc.js +19 -0
  433. package/dist/chunk-y3py9g5d.js +213 -0
  434. package/dist/chunk-y9nnmev5.js +687 -0
  435. package/dist/chunk-ya6jq0hf.js +29 -0
  436. package/dist/chunk-ycc3xnx0.js +374 -0
  437. package/dist/chunk-yfa54ssn.js +87 -0
  438. package/dist/chunk-ymy4xrr8.js +101 -0
  439. package/dist/chunk-yqfz2k9z.js +48 -0
  440. package/dist/chunk-ywxd4qw4.js +22 -0
  441. package/dist/chunk-yxmz5k16.js +122 -0
  442. package/dist/chunk-yxvy4jt4.js +1014 -0
  443. package/dist/chunk-z2dp53wn.js +17 -0
  444. package/dist/chunk-z2xxx2sz.js +294 -0
  445. package/dist/chunk-z31an09g.js +67 -0
  446. package/dist/chunk-z95xqvr0.js +75 -0
  447. package/dist/chunk-zbmxxxz8.js +161 -0
  448. package/dist/chunk-zk2wsm7d.js +15 -0
  449. package/dist/chunk-zmg1pcp3.js +71 -0
  450. package/dist/chunk-znrwmznk.js +272 -0
  451. package/dist/chunk-zq9r43cb.js +26 -0
  452. package/dist/chunk-zsfxha74.js +17655 -0
  453. package/dist/chunk-ztpr96av.js +229 -0
  454. package/dist/chunk-zv7qrz04.js +58 -0
  455. package/dist/chunk-zxa7st21.js +32 -0
  456. package/dist/chunk-zxhezavg.js +216 -0
  457. package/dist/chunk-zz0qcq2n.js +434 -0
  458. package/dist/cli.js +194 -0
  459. package/package.json +164 -0
@@ -0,0 +1,1920 @@
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-2y54j9ew.js";
20
+ import"./chunk-1yzc16qa.js";
21
+ import"./chunk-s10vyjz4.js";
22
+ import"./chunk-1k4j1xcf.js";
23
+ import"./chunk-3c4qja3e.js";
24
+ import"./chunk-rc5bbzx4.js";
25
+ import {
26
+ Dialog,
27
+ init_Dialog
28
+ } from "./chunk-e6rrwzv0.js";
29
+ import"./chunk-2gzv8nrw.js";
30
+ import"./chunk-743znc5c.js";
31
+ import"./chunk-5p2ssw3d.js";
32
+ import"./chunk-cgfdkzhb.js";
33
+ import"./chunk-bhdt6k7w.js";
34
+ import"./chunk-6wkdqk81.js";
35
+ import"./chunk-5dbk24zg.js";
36
+ import"./chunk-bda3gxxz.js";
37
+ import"./chunk-zxhezavg.js";
38
+ import"./chunk-x8eg216f.js";
39
+ import"./chunk-9gbamk79.js";
40
+ import"./chunk-t175chdd.js";
41
+ import"./chunk-7rjyn5d3.js";
42
+ import {
43
+ init_useKeybinding,
44
+ useKeybinding
45
+ } from "./chunk-6q2x8zeg.js";
46
+ import {
47
+ Link,
48
+ ThemedBox_default,
49
+ ThemedText,
50
+ init_ink,
51
+ require_compiler_runtime
52
+ } from "./chunk-0yb4dz9c.js";
53
+ import"./chunk-7m2nd8da.js";
54
+ import"./chunk-ps49ymvj.js";
55
+ import {
56
+ require_jsx_dev_runtime,
57
+ require_react
58
+ } from "./chunk-g338npwr.js";
59
+ import"./chunk-zk2wsm7d.js";
60
+ import"./chunk-eh474zhj.js";
61
+ import"./chunk-ga5faygf.js";
62
+ import"./chunk-e7c8ypwc.js";
63
+ import"./chunk-g6qddbvf.js";
64
+ import"./chunk-b1s11z4y.js";
65
+ import"./chunk-4jm600zv.js";
66
+ import"./chunk-yxmz5k16.js";
67
+ import"./chunk-v9smspw2.js";
68
+ import"./chunk-qz2x630m.js";
69
+ import {
70
+ getSettingsForSource,
71
+ getSettings_DEPRECATED,
72
+ init_settings1 as init_settings,
73
+ init_stringUtils,
74
+ plural
75
+ } from "./chunk-30chpfyc.js";
76
+ import"./chunk-84k64e4a.js";
77
+ import"./chunk-y3py9g5d.js";
78
+ import"./chunk-7pemewz2.js";
79
+ import"./chunk-s4w01jsb.js";
80
+ import"./chunk-c8vn3ynx.js";
81
+ import"./chunk-g0j0t6qk.js";
82
+ import"./chunk-6kpbgc5w.js";
83
+ import"./chunk-3c25bcsw.js";
84
+ import"./chunk-mzdtkccs.js";
85
+ import"./chunk-55wgxwa9.js";
86
+ import"./chunk-5k2gdxnr.js";
87
+ import"./chunk-2qhs9n36.js";
88
+ import"./chunk-f5ma3nh5.js";
89
+ import"./chunk-v1kzp02e.js";
90
+ import"./chunk-p2816w9z.js";
91
+ import"./chunk-0vkfrmqm.js";
92
+ import"./chunk-0xjaqda8.js";
93
+ import"./chunk-mr9df5v8.js";
94
+ import"./chunk-cdz5yb0r.js";
95
+ import {
96
+ init_analytics,
97
+ logEvent
98
+ } from "./chunk-f2mhrmww.js";
99
+ import"./chunk-10fdxge0.js";
100
+ import"./chunk-r1v8d6da.js";
101
+ import"./chunk-d3v2fbay.js";
102
+ import"./chunk-qnfx3qtx.js";
103
+ import"./chunk-f2zhqnb6.js";
104
+ import"./chunk-cvp5vayb.js";
105
+ import {
106
+ figures_default,
107
+ init_figures
108
+ } from "./chunk-b5b7h81y.js";
109
+ import"./chunk-nm2cncrq.js";
110
+ import"./chunk-8tnsngw2.js";
111
+ import"./chunk-0rkbrabt.js";
112
+ import"./chunk-7wm5s02e.js";
113
+ import"./chunk-rwagvxh5.js";
114
+ import"./chunk-fbv4apne.js";
115
+ import"./chunk-0fkqze0v.js";
116
+ import {
117
+ getRegisteredHooks,
118
+ init_state
119
+ } from "./chunk-2zcaw1jd.js";
120
+ import {
121
+ init_memoize,
122
+ memoize_default
123
+ } from "./chunk-hqmz36b3.js";
124
+ import"./chunk-4g3v8y12.js";
125
+ import"./chunk-7739pg2c.js";
126
+ import"./chunk-xszk7n10.js";
127
+ import"./chunk-sdj9b9wh.js";
128
+ import {
129
+ __esm,
130
+ __toESM
131
+ } from "./chunk-qp2qdcda.js";
132
+
133
+ // src/utils/hooks/hooksConfigManager.ts
134
+ function groupHooksByEventAndMatcher(appState, toolNames) {
135
+ const grouped = {
136
+ PreToolUse: {},
137
+ PostToolUse: {},
138
+ PostToolUseFailure: {},
139
+ PermissionDenied: {},
140
+ Notification: {},
141
+ UserPromptSubmit: {},
142
+ SessionStart: {},
143
+ SessionEnd: {},
144
+ Stop: {},
145
+ StopFailure: {},
146
+ SubagentStart: {},
147
+ SubagentStop: {},
148
+ PreCompact: {},
149
+ PostCompact: {},
150
+ PermissionRequest: {},
151
+ Setup: {},
152
+ TeammateIdle: {},
153
+ TaskCreated: {},
154
+ TaskCompleted: {},
155
+ Elicitation: {},
156
+ ElicitationResult: {},
157
+ ConfigChange: {},
158
+ WorktreeCreate: {},
159
+ WorktreeRemove: {},
160
+ InstructionsLoaded: {},
161
+ CwdChanged: {},
162
+ FileChanged: {}
163
+ };
164
+ const metadata = getHookEventMetadata(toolNames);
165
+ getAllHooks(appState).forEach((hook) => {
166
+ const eventGroup = grouped[hook.event];
167
+ if (eventGroup) {
168
+ const matcherKey = metadata[hook.event].matcherMetadata !== undefined ? hook.matcher || "" : "";
169
+ if (!eventGroup[matcherKey]) {
170
+ eventGroup[matcherKey] = [];
171
+ }
172
+ eventGroup[matcherKey].push(hook);
173
+ }
174
+ });
175
+ const registeredHooks = getRegisteredHooks();
176
+ if (registeredHooks) {
177
+ for (const [event, matchers] of Object.entries(registeredHooks)) {
178
+ const hookEvent = event;
179
+ const eventGroup = grouped[hookEvent];
180
+ if (!eventGroup)
181
+ continue;
182
+ for (const matcher of matchers) {
183
+ const matcherKey = matcher.matcher || "";
184
+ if ("pluginRoot" in matcher) {
185
+ eventGroup[matcherKey] ??= [];
186
+ for (const hook of matcher.hooks) {
187
+ eventGroup[matcherKey].push({
188
+ event: hookEvent,
189
+ config: hook,
190
+ matcher: matcher.matcher,
191
+ source: "pluginHook",
192
+ pluginName: matcher.pluginId
193
+ });
194
+ }
195
+ } else if (process.env.USER_TYPE === "ant") {
196
+ eventGroup[matcherKey] ??= [];
197
+ for (const _hook of matcher.hooks) {
198
+ eventGroup[matcherKey].push({
199
+ event: hookEvent,
200
+ config: {
201
+ type: "command",
202
+ command: "[ANT-ONLY] Built-in Hook"
203
+ },
204
+ matcher: matcher.matcher,
205
+ source: "builtinHook"
206
+ });
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }
212
+ return grouped;
213
+ }
214
+ function getSortedMatchersForEvent(hooksByEventAndMatcher, event) {
215
+ const matchers = Object.keys(hooksByEventAndMatcher[event] || {});
216
+ return sortMatchersByPriority(matchers, hooksByEventAndMatcher, event);
217
+ }
218
+ function getHooksForMatcher(hooksByEventAndMatcher, event, matcher) {
219
+ const matcherKey = matcher ?? "";
220
+ return hooksByEventAndMatcher[event]?.[matcherKey] ?? [];
221
+ }
222
+ function getMatcherMetadata(event, toolNames) {
223
+ return getHookEventMetadata(toolNames)[event].matcherMetadata;
224
+ }
225
+ var getHookEventMetadata;
226
+ var init_hooksConfigManager = __esm(() => {
227
+ init_memoize();
228
+ init_state();
229
+ init_hooksSettings();
230
+ getHookEventMetadata = memoize_default(function(toolNames) {
231
+ return {
232
+ PreToolUse: {
233
+ summary: "Before tool execution",
234
+ description: `Input to command is JSON of tool call arguments.
235
+ Exit code 0 - stdout/stderr not shown
236
+ Exit code 2 - show stderr to model and block tool call
237
+ Other exit codes - show stderr to user only but continue with tool call`,
238
+ matcherMetadata: {
239
+ fieldToMatch: "tool_name",
240
+ values: toolNames
241
+ }
242
+ },
243
+ PostToolUse: {
244
+ summary: "After tool execution",
245
+ description: `Input to command is JSON with fields "inputs" (tool call arguments) and "response" (tool call response).
246
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
247
+ Exit code 2 - show stderr to model immediately
248
+ Other exit codes - show stderr to user only`,
249
+ matcherMetadata: {
250
+ fieldToMatch: "tool_name",
251
+ values: toolNames
252
+ }
253
+ },
254
+ PostToolUseFailure: {
255
+ summary: "After tool execution fails",
256
+ description: `Input to command is JSON with tool_name, tool_input, tool_use_id, error, error_type, is_interrupt, and is_timeout.
257
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
258
+ Exit code 2 - show stderr to model immediately
259
+ Other exit codes - show stderr to user only`,
260
+ matcherMetadata: {
261
+ fieldToMatch: "tool_name",
262
+ values: toolNames
263
+ }
264
+ },
265
+ PermissionDenied: {
266
+ summary: "After auto mode classifier denies a tool call",
267
+ description: `Input to command is JSON with tool_name, tool_input, tool_use_id, and reason.
268
+ Return {"hookSpecificOutput":{"hookEventName":"PermissionDenied","retry":true}} to tell the model it may retry.
269
+ Exit code 0 - stdout shown in transcript mode (ctrl+o)
270
+ Other exit codes - show stderr to user only`,
271
+ matcherMetadata: {
272
+ fieldToMatch: "tool_name",
273
+ values: toolNames
274
+ }
275
+ },
276
+ Notification: {
277
+ summary: "When notifications are sent",
278
+ description: `Input to command is JSON with notification message and type.
279
+ Exit code 0 - stdout/stderr not shown
280
+ Other exit codes - show stderr to user only`,
281
+ matcherMetadata: {
282
+ fieldToMatch: "notification_type",
283
+ values: [
284
+ "permission_prompt",
285
+ "idle_prompt",
286
+ "auth_success",
287
+ "elicitation_dialog",
288
+ "elicitation_complete",
289
+ "elicitation_response"
290
+ ]
291
+ }
292
+ },
293
+ UserPromptSubmit: {
294
+ summary: "When the user submits a prompt",
295
+ description: `Input to command is JSON with original user prompt text.
296
+ Exit code 0 - stdout shown to Claude
297
+ Exit code 2 - block processing, erase original prompt, and show stderr to user only
298
+ Other exit codes - show stderr to user only`
299
+ },
300
+ SessionStart: {
301
+ summary: "When a new session is started",
302
+ description: `Input to command is JSON with session start source.
303
+ Exit code 0 - stdout shown to Claude
304
+ Blocking errors are ignored
305
+ Other exit codes - show stderr to user only`,
306
+ matcherMetadata: {
307
+ fieldToMatch: "source",
308
+ values: ["startup", "resume", "clear", "compact"]
309
+ }
310
+ },
311
+ Stop: {
312
+ summary: "Right before Claude concludes its response",
313
+ description: `Exit code 0 - stdout/stderr not shown
314
+ Exit code 2 - show stderr to model and continue conversation
315
+ Other exit codes - show stderr to user only`
316
+ },
317
+ StopFailure: {
318
+ summary: "When the turn ends due to an API error",
319
+ 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.",
320
+ matcherMetadata: {
321
+ fieldToMatch: "error",
322
+ values: [
323
+ "rate_limit",
324
+ "authentication_failed",
325
+ "billing_error",
326
+ "invalid_request",
327
+ "server_error",
328
+ "max_output_tokens",
329
+ "unknown"
330
+ ]
331
+ }
332
+ },
333
+ SubagentStart: {
334
+ summary: "When a subagent (Agent tool call) is started",
335
+ description: `Input to command is JSON with agent_id and agent_type.
336
+ Exit code 0 - stdout shown to subagent
337
+ Blocking errors are ignored
338
+ Other exit codes - show stderr to user only`,
339
+ matcherMetadata: {
340
+ fieldToMatch: "agent_type",
341
+ values: []
342
+ }
343
+ },
344
+ SubagentStop: {
345
+ summary: "Right before a subagent (Agent tool call) concludes its response",
346
+ description: `Input to command is JSON with agent_id, agent_type, and agent_transcript_path.
347
+ Exit code 0 - stdout/stderr not shown
348
+ Exit code 2 - show stderr to subagent and continue having it run
349
+ Other exit codes - show stderr to user only`,
350
+ matcherMetadata: {
351
+ fieldToMatch: "agent_type",
352
+ values: []
353
+ }
354
+ },
355
+ PreCompact: {
356
+ summary: "Before conversation compaction",
357
+ description: `Input to command is JSON with compaction details.
358
+ Exit code 0 - stdout appended as custom compact instructions
359
+ Exit code 2 - block compaction
360
+ Other exit codes - show stderr to user only but continue with compaction`,
361
+ matcherMetadata: {
362
+ fieldToMatch: "trigger",
363
+ values: ["manual", "auto"]
364
+ }
365
+ },
366
+ PostCompact: {
367
+ summary: "After conversation compaction",
368
+ description: `Input to command is JSON with compaction details and the summary.
369
+ Exit code 0 - stdout shown to user
370
+ Other exit codes - show stderr to user only`,
371
+ matcherMetadata: {
372
+ fieldToMatch: "trigger",
373
+ values: ["manual", "auto"]
374
+ }
375
+ },
376
+ SessionEnd: {
377
+ summary: "When a session is ending",
378
+ description: `Input to command is JSON with session end reason.
379
+ Exit code 0 - command completes successfully
380
+ Other exit codes - show stderr to user only`,
381
+ matcherMetadata: {
382
+ fieldToMatch: "reason",
383
+ values: ["clear", "logout", "prompt_input_exit", "other"]
384
+ }
385
+ },
386
+ PermissionRequest: {
387
+ summary: "When a permission dialog is displayed",
388
+ description: `Input to command is JSON with tool_name, tool_input, and tool_use_id.
389
+ Output JSON with hookSpecificOutput containing decision to allow or deny.
390
+ Exit code 0 - use hook decision if provided
391
+ Other exit codes - show stderr to user only`,
392
+ matcherMetadata: {
393
+ fieldToMatch: "tool_name",
394
+ values: toolNames
395
+ }
396
+ },
397
+ Setup: {
398
+ summary: "Repo setup hooks for init and maintenance",
399
+ description: `Input to command is JSON with trigger (init or maintenance).
400
+ Exit code 0 - stdout shown to Claude
401
+ Blocking errors are ignored
402
+ Other exit codes - show stderr to user only`,
403
+ matcherMetadata: {
404
+ fieldToMatch: "trigger",
405
+ values: ["init", "maintenance"]
406
+ }
407
+ },
408
+ TeammateIdle: {
409
+ summary: "When a teammate is about to go idle",
410
+ description: `Input to command is JSON with teammate_name and team_name.
411
+ Exit code 0 - stdout/stderr not shown
412
+ Exit code 2 - show stderr to teammate and prevent idle (teammate continues working)
413
+ Other exit codes - show stderr to user only`
414
+ },
415
+ TaskCreated: {
416
+ summary: "When a task is being created",
417
+ description: `Input to command is JSON with task_id, task_subject, task_description, teammate_name, and team_name.
418
+ Exit code 0 - stdout/stderr not shown
419
+ Exit code 2 - show stderr to model and prevent task creation
420
+ Other exit codes - show stderr to user only`
421
+ },
422
+ TaskCompleted: {
423
+ summary: "When a task is being marked as completed",
424
+ description: `Input to command is JSON with task_id, task_subject, task_description, teammate_name, and team_name.
425
+ Exit code 0 - stdout/stderr not shown
426
+ Exit code 2 - show stderr to model and prevent task completion
427
+ Other exit codes - show stderr to user only`
428
+ },
429
+ Elicitation: {
430
+ summary: "When an MCP server requests user input (elicitation)",
431
+ description: `Input to command is JSON with mcp_server_name, message, and requested_schema.
432
+ Output JSON with hookSpecificOutput containing action (accept/decline/cancel) and optional content.
433
+ Exit code 0 - use hook response if provided
434
+ Exit code 2 - deny the elicitation
435
+ Other exit codes - show stderr to user only`,
436
+ matcherMetadata: {
437
+ fieldToMatch: "mcp_server_name",
438
+ values: []
439
+ }
440
+ },
441
+ ElicitationResult: {
442
+ summary: "After a user responds to an MCP elicitation",
443
+ description: `Input to command is JSON with mcp_server_name, action, content, mode, and elicitation_id.
444
+ Output JSON with hookSpecificOutput containing optional action and content to override the response.
445
+ Exit code 0 - use hook response if provided
446
+ Exit code 2 - block the response (action becomes decline)
447
+ Other exit codes - show stderr to user only`,
448
+ matcherMetadata: {
449
+ fieldToMatch: "mcp_server_name",
450
+ values: []
451
+ }
452
+ },
453
+ ConfigChange: {
454
+ summary: "When configuration files change during a session",
455
+ description: `Input to command is JSON with source (user_settings, project_settings, local_settings, policy_settings, skills) and file_path.
456
+ Exit code 0 - allow the change
457
+ Exit code 2 - block the change from being applied to the session
458
+ Other exit codes - show stderr to user only`,
459
+ matcherMetadata: {
460
+ fieldToMatch: "source",
461
+ values: [
462
+ "user_settings",
463
+ "project_settings",
464
+ "local_settings",
465
+ "policy_settings",
466
+ "skills"
467
+ ]
468
+ }
469
+ },
470
+ InstructionsLoaded: {
471
+ summary: "When an instruction file (CLAUDE.md or rule) is loaded",
472
+ 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).
473
+ Exit code 0 - command completes successfully
474
+ Other exit codes - show stderr to user only
475
+ This hook is observability-only and does not support blocking.`,
476
+ matcherMetadata: {
477
+ fieldToMatch: "load_reason",
478
+ values: [
479
+ "session_start",
480
+ "nested_traversal",
481
+ "path_glob_match",
482
+ "include",
483
+ "compact"
484
+ ]
485
+ }
486
+ },
487
+ WorktreeCreate: {
488
+ summary: "Create an isolated worktree for VCS-agnostic isolation",
489
+ description: `Input to command is JSON with name (suggested worktree slug).
490
+ Stdout should contain the absolute path to the created worktree directory.
491
+ Exit code 0 - worktree created successfully
492
+ Other exit codes - worktree creation failed`
493
+ },
494
+ WorktreeRemove: {
495
+ summary: "Remove a previously created worktree",
496
+ description: `Input to command is JSON with worktree_path (absolute path to worktree).
497
+ Exit code 0 - worktree removed successfully
498
+ Other exit codes - show stderr to user only`
499
+ },
500
+ CwdChanged: {
501
+ summary: "After the working directory changes",
502
+ description: `Input to command is JSON with old_cwd and new_cwd.
503
+ CLAUDE_ENV_FILE is set \u2014 write bash exports there to apply env to subsequent BashTool commands.
504
+ Hook output can include hookSpecificOutput.watchPaths (array of absolute paths) to register with the FileChanged watcher.
505
+ Exit code 0 - command completes successfully
506
+ Other exit codes - show stderr to user only`
507
+ },
508
+ FileChanged: {
509
+ summary: "When a watched file changes",
510
+ description: `Input to command is JSON with file_path and event (change, add, unlink).
511
+ CLAUDE_ENV_FILE is set \u2014 write bash exports there to apply env to subsequent BashTool commands.
512
+ The matcher field specifies filenames to watch in the current directory (e.g. ".envrc|.env").
513
+ Hook output can include hookSpecificOutput.watchPaths (array of absolute paths) to dynamically update the watch list.
514
+ Exit code 0 - command completes successfully
515
+ Other exit codes - show stderr to user only`
516
+ }
517
+ };
518
+ }, (toolNames) => toolNames.slice().sort().join(","));
519
+ });
520
+
521
+ // src/components/hooks/SelectEventMode.tsx
522
+ function SelectEventMode(t0) {
523
+ const $ = import_compiler_runtime.c(23);
524
+ const {
525
+ hookEventMetadata,
526
+ hooksByEvent,
527
+ totalHooksCount,
528
+ restrictedByPolicy,
529
+ onSelectEvent,
530
+ onCancel
531
+ } = t0;
532
+ let t1;
533
+ if ($[0] !== totalHooksCount) {
534
+ t1 = plural(totalHooksCount, "hook");
535
+ $[0] = totalHooksCount;
536
+ $[1] = t1;
537
+ } else {
538
+ t1 = $[1];
539
+ }
540
+ const subtitle = `${totalHooksCount} ${t1} configured`;
541
+ let t2;
542
+ if ($[2] !== restrictedByPolicy) {
543
+ t2 = restrictedByPolicy && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
544
+ flexDirection: "column",
545
+ children: [
546
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
547
+ color: "suggestion",
548
+ children: [
549
+ figures_default.info,
550
+ " Hooks Restricted by Policy"
551
+ ]
552
+ }, undefined, true, undefined, this),
553
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
554
+ dimColor: true,
555
+ 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."
556
+ }, undefined, false, undefined, this)
557
+ ]
558
+ }, undefined, true, undefined, this);
559
+ $[2] = restrictedByPolicy;
560
+ $[3] = t2;
561
+ } else {
562
+ t2 = $[3];
563
+ }
564
+ let t3;
565
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
566
+ t3 = /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
567
+ flexDirection: "column",
568
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
569
+ dimColor: true,
570
+ children: [
571
+ figures_default.info,
572
+ " This menu is read-only. To add or modify hooks, edit settings.json directly or ask Claude.",
573
+ " ",
574
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Link, {
575
+ url: "https://code.claude.com/docs/en/hooks",
576
+ children: "Learn more"
577
+ }, undefined, false, undefined, this)
578
+ ]
579
+ }, undefined, true, undefined, this)
580
+ }, undefined, false, undefined, this);
581
+ $[4] = t3;
582
+ } else {
583
+ t3 = $[4];
584
+ }
585
+ let t4;
586
+ if ($[5] !== onSelectEvent) {
587
+ t4 = (value) => {
588
+ onSelectEvent(value);
589
+ };
590
+ $[5] = onSelectEvent;
591
+ $[6] = t4;
592
+ } else {
593
+ t4 = $[6];
594
+ }
595
+ let t5;
596
+ if ($[7] !== hookEventMetadata) {
597
+ t5 = Object.entries(hookEventMetadata);
598
+ $[7] = hookEventMetadata;
599
+ $[8] = t5;
600
+ } else {
601
+ t5 = $[8];
602
+ }
603
+ let t6;
604
+ if ($[9] !== hooksByEvent || $[10] !== t5) {
605
+ t6 = t5.map((t72) => {
606
+ const [name, metadata] = t72;
607
+ const count = hooksByEvent[name] || 0;
608
+ return {
609
+ label: count > 0 ? /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
610
+ children: [
611
+ name,
612
+ " ",
613
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
614
+ color: "suggestion",
615
+ children: [
616
+ "(",
617
+ count,
618
+ ")"
619
+ ]
620
+ }, undefined, true, undefined, this)
621
+ ]
622
+ }, undefined, true, undefined, this) : name,
623
+ value: name,
624
+ description: metadata.summary
625
+ };
626
+ });
627
+ $[9] = hooksByEvent;
628
+ $[10] = t5;
629
+ $[11] = t6;
630
+ } else {
631
+ t6 = $[11];
632
+ }
633
+ let t7;
634
+ if ($[12] !== onCancel || $[13] !== t4 || $[14] !== t6) {
635
+ t7 = /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
636
+ flexDirection: "column",
637
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Select, {
638
+ onChange: t4,
639
+ onCancel,
640
+ options: t6
641
+ }, undefined, false, undefined, this)
642
+ }, undefined, false, undefined, this);
643
+ $[12] = onCancel;
644
+ $[13] = t4;
645
+ $[14] = t6;
646
+ $[15] = t7;
647
+ } else {
648
+ t7 = $[15];
649
+ }
650
+ let t8;
651
+ if ($[16] !== t2 || $[17] !== t7) {
652
+ t8 = /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
653
+ flexDirection: "column",
654
+ gap: 1,
655
+ children: [
656
+ t2,
657
+ t3,
658
+ t7
659
+ ]
660
+ }, undefined, true, undefined, this);
661
+ $[16] = t2;
662
+ $[17] = t7;
663
+ $[18] = t8;
664
+ } else {
665
+ t8 = $[18];
666
+ }
667
+ let t9;
668
+ if ($[19] !== onCancel || $[20] !== subtitle || $[21] !== t8) {
669
+ t9 = /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Dialog, {
670
+ title: "Hooks",
671
+ subtitle,
672
+ onCancel,
673
+ children: t8
674
+ }, undefined, false, undefined, this);
675
+ $[19] = onCancel;
676
+ $[20] = subtitle;
677
+ $[21] = t8;
678
+ $[22] = t9;
679
+ } else {
680
+ t9 = $[22];
681
+ }
682
+ return t9;
683
+ }
684
+ var import_compiler_runtime, jsx_dev_runtime;
685
+ var init_SelectEventMode = __esm(() => {
686
+ init_figures();
687
+ init_ink();
688
+ init_stringUtils();
689
+ init_select();
690
+ init_Dialog();
691
+ import_compiler_runtime = __toESM(require_compiler_runtime(), 1);
692
+ jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
693
+ });
694
+
695
+ // src/components/hooks/SelectHookMode.tsx
696
+ function SelectHookMode(t0) {
697
+ const $ = import_compiler_runtime2.c(19);
698
+ const {
699
+ selectedEvent,
700
+ selectedMatcher,
701
+ hooksForSelectedMatcher,
702
+ hookEventMetadata,
703
+ onSelect,
704
+ onCancel
705
+ } = t0;
706
+ const title = hookEventMetadata.matcherMetadata !== undefined ? `${selectedEvent} - Matcher: ${selectedMatcher || "(all)"}` : selectedEvent;
707
+ if (hooksForSelectedMatcher.length === 0) {
708
+ let t12;
709
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
710
+ t12 = /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
711
+ flexDirection: "column",
712
+ gap: 1,
713
+ children: [
714
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
715
+ dimColor: true,
716
+ children: "No hooks configured for this event."
717
+ }, undefined, false, undefined, this),
718
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
719
+ dimColor: true,
720
+ children: "To add hooks, edit settings.json directly or ask Claude."
721
+ }, undefined, false, undefined, this)
722
+ ]
723
+ }, undefined, true, undefined, this);
724
+ $[0] = t12;
725
+ } else {
726
+ t12 = $[0];
727
+ }
728
+ let t22;
729
+ if ($[1] !== hookEventMetadata.description || $[2] !== onCancel || $[3] !== title) {
730
+ t22 = /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Dialog, {
731
+ title,
732
+ subtitle: hookEventMetadata.description,
733
+ onCancel,
734
+ inputGuide: _temp,
735
+ children: t12
736
+ }, undefined, false, undefined, this);
737
+ $[1] = hookEventMetadata.description;
738
+ $[2] = onCancel;
739
+ $[3] = title;
740
+ $[4] = t22;
741
+ } else {
742
+ t22 = $[4];
743
+ }
744
+ return t22;
745
+ }
746
+ const t1 = hookEventMetadata.description;
747
+ let t2;
748
+ if ($[5] !== hooksForSelectedMatcher) {
749
+ t2 = hooksForSelectedMatcher.map(_temp2);
750
+ $[5] = hooksForSelectedMatcher;
751
+ $[6] = t2;
752
+ } else {
753
+ t2 = $[6];
754
+ }
755
+ let t3;
756
+ if ($[7] !== hooksForSelectedMatcher || $[8] !== onSelect) {
757
+ t3 = (value) => {
758
+ const index_0 = parseInt(value, 10);
759
+ const hook_0 = hooksForSelectedMatcher[index_0];
760
+ if (hook_0) {
761
+ onSelect(hook_0);
762
+ }
763
+ };
764
+ $[7] = hooksForSelectedMatcher;
765
+ $[8] = onSelect;
766
+ $[9] = t3;
767
+ } else {
768
+ t3 = $[9];
769
+ }
770
+ let t4;
771
+ if ($[10] !== onCancel || $[11] !== t2 || $[12] !== t3) {
772
+ t4 = /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
773
+ flexDirection: "column",
774
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Select, {
775
+ options: t2,
776
+ onChange: t3,
777
+ onCancel
778
+ }, undefined, false, undefined, this)
779
+ }, undefined, false, undefined, this);
780
+ $[10] = onCancel;
781
+ $[11] = t2;
782
+ $[12] = t3;
783
+ $[13] = t4;
784
+ } else {
785
+ t4 = $[13];
786
+ }
787
+ let t5;
788
+ if ($[14] !== hookEventMetadata.description || $[15] !== onCancel || $[16] !== t4 || $[17] !== title) {
789
+ t5 = /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Dialog, {
790
+ title,
791
+ subtitle: t1,
792
+ onCancel,
793
+ children: t4
794
+ }, undefined, false, undefined, this);
795
+ $[14] = hookEventMetadata.description;
796
+ $[15] = onCancel;
797
+ $[16] = t4;
798
+ $[17] = title;
799
+ $[18] = t5;
800
+ } else {
801
+ t5 = $[18];
802
+ }
803
+ return t5;
804
+ }
805
+ function _temp2(hook, index) {
806
+ return {
807
+ label: `[${hook.config.type}] ${getHookDisplayText(hook.config)}`,
808
+ value: index.toString(),
809
+ description: hook.source === "pluginHook" && hook.pluginName ? `${hookSourceHeaderDisplayString(hook.source)} (${hook.pluginName})` : hookSourceHeaderDisplayString(hook.source)
810
+ };
811
+ }
812
+ function _temp() {
813
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
814
+ children: "Esc to go back"
815
+ }, undefined, false, undefined, this);
816
+ }
817
+ var import_compiler_runtime2, jsx_dev_runtime2;
818
+ var init_SelectHookMode = __esm(() => {
819
+ init_ink();
820
+ init_hooksSettings();
821
+ init_select();
822
+ init_Dialog();
823
+ import_compiler_runtime2 = __toESM(require_compiler_runtime(), 1);
824
+ jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
825
+ });
826
+
827
+ // src/components/hooks/SelectMatcherMode.tsx
828
+ function SelectMatcherMode(t0) {
829
+ const $ = import_compiler_runtime3.c(25);
830
+ const {
831
+ selectedEvent,
832
+ matchersForSelectedEvent,
833
+ hooksByEventAndMatcher,
834
+ eventDescription,
835
+ onSelect,
836
+ onCancel
837
+ } = t0;
838
+ let t1;
839
+ if ($[0] !== hooksByEventAndMatcher || $[1] !== matchersForSelectedEvent || $[2] !== selectedEvent) {
840
+ let t22;
841
+ if ($[4] !== hooksByEventAndMatcher || $[5] !== selectedEvent) {
842
+ t22 = (matcher) => {
843
+ const hooks = hooksByEventAndMatcher[selectedEvent]?.[matcher] || [];
844
+ const sources = Array.from(new Set(hooks.map(_temp4)));
845
+ return {
846
+ matcher,
847
+ sources,
848
+ hookCount: hooks.length
849
+ };
850
+ };
851
+ $[4] = hooksByEventAndMatcher;
852
+ $[5] = selectedEvent;
853
+ $[6] = t22;
854
+ } else {
855
+ t22 = $[6];
856
+ }
857
+ t1 = matchersForSelectedEvent.map(t22);
858
+ $[0] = hooksByEventAndMatcher;
859
+ $[1] = matchersForSelectedEvent;
860
+ $[2] = selectedEvent;
861
+ $[3] = t1;
862
+ } else {
863
+ t1 = $[3];
864
+ }
865
+ const matchersWithSources = t1;
866
+ if (matchersForSelectedEvent.length === 0) {
867
+ const t22 = `${selectedEvent} - Matchers`;
868
+ let t32;
869
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
870
+ t32 = /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
871
+ flexDirection: "column",
872
+ gap: 1,
873
+ children: [
874
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
875
+ dimColor: true,
876
+ children: "No hooks configured for this event."
877
+ }, undefined, false, undefined, this),
878
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
879
+ dimColor: true,
880
+ children: "To add hooks, edit settings.json directly or ask Claude."
881
+ }, undefined, false, undefined, this)
882
+ ]
883
+ }, undefined, true, undefined, this);
884
+ $[7] = t32;
885
+ } else {
886
+ t32 = $[7];
887
+ }
888
+ let t42;
889
+ if ($[8] !== eventDescription || $[9] !== onCancel || $[10] !== t22) {
890
+ t42 = /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Dialog, {
891
+ title: t22,
892
+ subtitle: eventDescription,
893
+ onCancel,
894
+ inputGuide: _temp22,
895
+ children: t32
896
+ }, undefined, false, undefined, this);
897
+ $[8] = eventDescription;
898
+ $[9] = onCancel;
899
+ $[10] = t22;
900
+ $[11] = t42;
901
+ } else {
902
+ t42 = $[11];
903
+ }
904
+ return t42;
905
+ }
906
+ const t2 = `${selectedEvent} - Matchers`;
907
+ let t3;
908
+ if ($[12] !== matchersWithSources) {
909
+ t3 = matchersWithSources.map(_temp3);
910
+ $[12] = matchersWithSources;
911
+ $[13] = t3;
912
+ } else {
913
+ t3 = $[13];
914
+ }
915
+ let t4;
916
+ if ($[14] !== onSelect) {
917
+ t4 = (value) => {
918
+ onSelect(value);
919
+ };
920
+ $[14] = onSelect;
921
+ $[15] = t4;
922
+ } else {
923
+ t4 = $[15];
924
+ }
925
+ let t5;
926
+ if ($[16] !== onCancel || $[17] !== t3 || $[18] !== t4) {
927
+ t5 = /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
928
+ flexDirection: "column",
929
+ children: /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Select, {
930
+ options: t3,
931
+ onChange: t4,
932
+ onCancel
933
+ }, undefined, false, undefined, this)
934
+ }, undefined, false, undefined, this);
935
+ $[16] = onCancel;
936
+ $[17] = t3;
937
+ $[18] = t4;
938
+ $[19] = t5;
939
+ } else {
940
+ t5 = $[19];
941
+ }
942
+ let t6;
943
+ if ($[20] !== eventDescription || $[21] !== onCancel || $[22] !== t2 || $[23] !== t5) {
944
+ t6 = /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Dialog, {
945
+ title: t2,
946
+ subtitle: eventDescription,
947
+ onCancel,
948
+ children: t5
949
+ }, undefined, false, undefined, this);
950
+ $[20] = eventDescription;
951
+ $[21] = onCancel;
952
+ $[22] = t2;
953
+ $[23] = t5;
954
+ $[24] = t6;
955
+ } else {
956
+ t6 = $[24];
957
+ }
958
+ return t6;
959
+ }
960
+ function _temp3(item) {
961
+ const sourceText = item.sources.map(hookSourceInlineDisplayString).join(", ");
962
+ const matcherLabel = item.matcher || "(all)";
963
+ return {
964
+ label: `[${sourceText}] ${matcherLabel}`,
965
+ value: item.matcher,
966
+ description: `${item.hookCount} ${plural(item.hookCount, "hook")}`
967
+ };
968
+ }
969
+ function _temp22() {
970
+ return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
971
+ children: "Esc to go back"
972
+ }, undefined, false, undefined, this);
973
+ }
974
+ function _temp4(h) {
975
+ return h.source;
976
+ }
977
+ var import_compiler_runtime3, jsx_dev_runtime3;
978
+ var init_SelectMatcherMode = __esm(() => {
979
+ init_ink();
980
+ init_hooksSettings();
981
+ init_stringUtils();
982
+ init_select();
983
+ init_Dialog();
984
+ import_compiler_runtime3 = __toESM(require_compiler_runtime(), 1);
985
+ jsx_dev_runtime3 = __toESM(require_jsx_dev_runtime(), 1);
986
+ });
987
+
988
+ // src/components/hooks/ViewHookMode.tsx
989
+ function ViewHookMode(t0) {
990
+ const $ = import_compiler_runtime4.c(40);
991
+ const {
992
+ selectedHook,
993
+ eventSupportsMatcher,
994
+ onCancel
995
+ } = t0;
996
+ let t1;
997
+ if ($[0] !== selectedHook.event) {
998
+ t1 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
999
+ children: [
1000
+ "Event: ",
1001
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1002
+ bold: true,
1003
+ children: selectedHook.event
1004
+ }, undefined, false, undefined, this)
1005
+ ]
1006
+ }, undefined, true, undefined, this);
1007
+ $[0] = selectedHook.event;
1008
+ $[1] = t1;
1009
+ } else {
1010
+ t1 = $[1];
1011
+ }
1012
+ let t2;
1013
+ if ($[2] !== eventSupportsMatcher || $[3] !== selectedHook.matcher) {
1014
+ t2 = eventSupportsMatcher && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1015
+ children: [
1016
+ "Matcher: ",
1017
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1018
+ bold: true,
1019
+ children: selectedHook.matcher || "(all)"
1020
+ }, undefined, false, undefined, this)
1021
+ ]
1022
+ }, undefined, true, undefined, this);
1023
+ $[2] = eventSupportsMatcher;
1024
+ $[3] = selectedHook.matcher;
1025
+ $[4] = t2;
1026
+ } else {
1027
+ t2 = $[4];
1028
+ }
1029
+ let t3;
1030
+ if ($[5] !== selectedHook.config.type) {
1031
+ t3 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1032
+ children: [
1033
+ "Type: ",
1034
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1035
+ bold: true,
1036
+ children: selectedHook.config.type
1037
+ }, undefined, false, undefined, this)
1038
+ ]
1039
+ }, undefined, true, undefined, this);
1040
+ $[5] = selectedHook.config.type;
1041
+ $[6] = t3;
1042
+ } else {
1043
+ t3 = $[6];
1044
+ }
1045
+ let t4;
1046
+ if ($[7] !== selectedHook.source) {
1047
+ t4 = hookSourceDescriptionDisplayString(selectedHook.source);
1048
+ $[7] = selectedHook.source;
1049
+ $[8] = t4;
1050
+ } else {
1051
+ t4 = $[8];
1052
+ }
1053
+ let t5;
1054
+ if ($[9] !== t4) {
1055
+ t5 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1056
+ children: [
1057
+ "Source:",
1058
+ " ",
1059
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1060
+ dimColor: true,
1061
+ children: t4
1062
+ }, undefined, false, undefined, this)
1063
+ ]
1064
+ }, undefined, true, undefined, this);
1065
+ $[9] = t4;
1066
+ $[10] = t5;
1067
+ } else {
1068
+ t5 = $[10];
1069
+ }
1070
+ let t6;
1071
+ if ($[11] !== selectedHook.pluginName) {
1072
+ t6 = selectedHook.pluginName && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1073
+ children: [
1074
+ "Plugin: ",
1075
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1076
+ dimColor: true,
1077
+ children: selectedHook.pluginName
1078
+ }, undefined, false, undefined, this)
1079
+ ]
1080
+ }, undefined, true, undefined, this);
1081
+ $[11] = selectedHook.pluginName;
1082
+ $[12] = t6;
1083
+ } else {
1084
+ t6 = $[12];
1085
+ }
1086
+ let t7;
1087
+ if ($[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t5 || $[17] !== t6) {
1088
+ t7 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
1089
+ flexDirection: "column",
1090
+ children: [
1091
+ t1,
1092
+ t2,
1093
+ t3,
1094
+ t5,
1095
+ t6
1096
+ ]
1097
+ }, undefined, true, undefined, this);
1098
+ $[13] = t1;
1099
+ $[14] = t2;
1100
+ $[15] = t3;
1101
+ $[16] = t5;
1102
+ $[17] = t6;
1103
+ $[18] = t7;
1104
+ } else {
1105
+ t7 = $[18];
1106
+ }
1107
+ let t8;
1108
+ if ($[19] !== selectedHook.config) {
1109
+ t8 = getContentFieldLabel(selectedHook.config);
1110
+ $[19] = selectedHook.config;
1111
+ $[20] = t8;
1112
+ } else {
1113
+ t8 = $[20];
1114
+ }
1115
+ let t9;
1116
+ if ($[21] !== t8) {
1117
+ t9 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1118
+ dimColor: true,
1119
+ children: [
1120
+ t8,
1121
+ ":"
1122
+ ]
1123
+ }, undefined, true, undefined, this);
1124
+ $[21] = t8;
1125
+ $[22] = t9;
1126
+ } else {
1127
+ t9 = $[22];
1128
+ }
1129
+ let t10;
1130
+ if ($[23] !== selectedHook.config) {
1131
+ t10 = getContentFieldValue(selectedHook.config);
1132
+ $[23] = selectedHook.config;
1133
+ $[24] = t10;
1134
+ } else {
1135
+ t10 = $[24];
1136
+ }
1137
+ let t11;
1138
+ if ($[25] !== t10) {
1139
+ t11 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
1140
+ borderStyle: "round",
1141
+ borderDimColor: true,
1142
+ paddingLeft: 1,
1143
+ paddingRight: 1,
1144
+ children: /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1145
+ children: t10
1146
+ }, undefined, false, undefined, this)
1147
+ }, undefined, false, undefined, this);
1148
+ $[25] = t10;
1149
+ $[26] = t11;
1150
+ } else {
1151
+ t11 = $[26];
1152
+ }
1153
+ let t12;
1154
+ if ($[27] !== t11 || $[28] !== t9) {
1155
+ t12 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
1156
+ flexDirection: "column",
1157
+ children: [
1158
+ t9,
1159
+ t11
1160
+ ]
1161
+ }, undefined, true, undefined, this);
1162
+ $[27] = t11;
1163
+ $[28] = t9;
1164
+ $[29] = t12;
1165
+ } else {
1166
+ t12 = $[29];
1167
+ }
1168
+ let t13;
1169
+ if ($[30] !== selectedHook.config) {
1170
+ t13 = "statusMessage" in selectedHook.config && selectedHook.config.statusMessage && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1171
+ children: [
1172
+ "Status message:",
1173
+ " ",
1174
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1175
+ dimColor: true,
1176
+ children: selectedHook.config.statusMessage
1177
+ }, undefined, false, undefined, this)
1178
+ ]
1179
+ }, undefined, true, undefined, this);
1180
+ $[30] = selectedHook.config;
1181
+ $[31] = t13;
1182
+ } else {
1183
+ t13 = $[31];
1184
+ }
1185
+ let t14;
1186
+ if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
1187
+ t14 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1188
+ dimColor: true,
1189
+ children: "To modify or remove this hook, edit settings.json directly or ask Claude to help."
1190
+ }, undefined, false, undefined, this);
1191
+ $[32] = t14;
1192
+ } else {
1193
+ t14 = $[32];
1194
+ }
1195
+ let t15;
1196
+ if ($[33] !== t12 || $[34] !== t13 || $[35] !== t7) {
1197
+ t15 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedBox_default, {
1198
+ flexDirection: "column",
1199
+ gap: 1,
1200
+ children: [
1201
+ t7,
1202
+ t12,
1203
+ t13,
1204
+ t14
1205
+ ]
1206
+ }, undefined, true, undefined, this);
1207
+ $[33] = t12;
1208
+ $[34] = t13;
1209
+ $[35] = t7;
1210
+ $[36] = t15;
1211
+ } else {
1212
+ t15 = $[36];
1213
+ }
1214
+ let t16;
1215
+ if ($[37] !== onCancel || $[38] !== t15) {
1216
+ t16 = /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Dialog, {
1217
+ title: "Hook details",
1218
+ onCancel,
1219
+ inputGuide: _temp6,
1220
+ children: t15
1221
+ }, undefined, false, undefined, this);
1222
+ $[37] = onCancel;
1223
+ $[38] = t15;
1224
+ $[39] = t16;
1225
+ } else {
1226
+ t16 = $[39];
1227
+ }
1228
+ return t16;
1229
+ }
1230
+ function _temp6() {
1231
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(ThemedText, {
1232
+ children: "Esc to go back"
1233
+ }, undefined, false, undefined, this);
1234
+ }
1235
+ function getContentFieldLabel(config) {
1236
+ switch (config.type) {
1237
+ case "command":
1238
+ return "Command";
1239
+ case "prompt":
1240
+ return "Prompt";
1241
+ case "agent":
1242
+ return "Prompt";
1243
+ case "http":
1244
+ return "URL";
1245
+ }
1246
+ }
1247
+ function getContentFieldValue(config) {
1248
+ switch (config.type) {
1249
+ case "command":
1250
+ return config.command;
1251
+ case "prompt":
1252
+ return config.prompt;
1253
+ case "agent":
1254
+ return config.prompt;
1255
+ case "http":
1256
+ return config.url;
1257
+ }
1258
+ }
1259
+ var import_compiler_runtime4, jsx_dev_runtime4;
1260
+ var init_ViewHookMode = __esm(() => {
1261
+ init_ink();
1262
+ init_hooksSettings();
1263
+ init_Dialog();
1264
+ import_compiler_runtime4 = __toESM(require_compiler_runtime(), 1);
1265
+ jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
1266
+ });
1267
+
1268
+ // src/components/hooks/HooksConfigMenu.tsx
1269
+ function HooksConfigMenu(t0) {
1270
+ const $ = import_compiler_runtime5.c(100);
1271
+ const {
1272
+ toolNames,
1273
+ onExit
1274
+ } = t0;
1275
+ let t1;
1276
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
1277
+ t1 = {
1278
+ mode: "select-event"
1279
+ };
1280
+ $[0] = t1;
1281
+ } else {
1282
+ t1 = $[0];
1283
+ }
1284
+ const [modeState, setModeState] = import_react.useState(t1);
1285
+ const [disabledByPolicy, setDisabledByPolicy] = import_react.useState(_temp7);
1286
+ const [restrictedByPolicy, setRestrictedByPolicy] = import_react.useState(_temp23);
1287
+ let t2;
1288
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
1289
+ t2 = (source) => {
1290
+ if (source === "policySettings") {
1291
+ const settings_0 = getSettings_DEPRECATED();
1292
+ const hooksDisabled_0 = settings_0?.disableAllHooks === true;
1293
+ setDisabledByPolicy(hooksDisabled_0 && getSettingsForSource("policySettings")?.disableAllHooks === true);
1294
+ setRestrictedByPolicy(getSettingsForSource("policySettings")?.allowManagedHooksOnly === true);
1295
+ }
1296
+ };
1297
+ $[1] = t2;
1298
+ } else {
1299
+ t2 = $[1];
1300
+ }
1301
+ useSettingsChange(t2);
1302
+ const mode = modeState.mode;
1303
+ const selectedEvent = "event" in modeState ? modeState.event : "PreToolUse";
1304
+ const selectedMatcher = "matcher" in modeState ? modeState.matcher : null;
1305
+ const mcp = useAppState(_temp32);
1306
+ const appStateStore = useAppStateStore();
1307
+ let t3;
1308
+ if ($[2] !== mcp.tools || $[3] !== toolNames) {
1309
+ t3 = [...toolNames, ...mcp.tools.map(_temp42)];
1310
+ $[2] = mcp.tools;
1311
+ $[3] = toolNames;
1312
+ $[4] = t3;
1313
+ } else {
1314
+ t3 = $[4];
1315
+ }
1316
+ const combinedToolNames = t3;
1317
+ let t4;
1318
+ if ($[5] !== appStateStore || $[6] !== combinedToolNames) {
1319
+ t4 = groupHooksByEventAndMatcher(appStateStore.getState(), combinedToolNames);
1320
+ $[5] = appStateStore;
1321
+ $[6] = combinedToolNames;
1322
+ $[7] = t4;
1323
+ } else {
1324
+ t4 = $[7];
1325
+ }
1326
+ const hooksByEventAndMatcher = t4;
1327
+ let t5;
1328
+ if ($[8] !== hooksByEventAndMatcher || $[9] !== selectedEvent) {
1329
+ t5 = getSortedMatchersForEvent(hooksByEventAndMatcher, selectedEvent);
1330
+ $[8] = hooksByEventAndMatcher;
1331
+ $[9] = selectedEvent;
1332
+ $[10] = t5;
1333
+ } else {
1334
+ t5 = $[10];
1335
+ }
1336
+ const sortedMatchersForSelectedEvent = t5;
1337
+ let t6;
1338
+ if ($[11] !== hooksByEventAndMatcher || $[12] !== selectedEvent || $[13] !== selectedMatcher) {
1339
+ t6 = getHooksForMatcher(hooksByEventAndMatcher, selectedEvent, selectedMatcher);
1340
+ $[11] = hooksByEventAndMatcher;
1341
+ $[12] = selectedEvent;
1342
+ $[13] = selectedMatcher;
1343
+ $[14] = t6;
1344
+ } else {
1345
+ t6 = $[14];
1346
+ }
1347
+ const hooksForSelectedMatcher = t6;
1348
+ let t7;
1349
+ if ($[15] !== onExit) {
1350
+ t7 = () => {
1351
+ onExit("Hooks dialog dismissed", {
1352
+ display: "system"
1353
+ });
1354
+ };
1355
+ $[15] = onExit;
1356
+ $[16] = t7;
1357
+ } else {
1358
+ t7 = $[16];
1359
+ }
1360
+ const handleExit = t7;
1361
+ const t8 = mode === "select-event";
1362
+ let t9;
1363
+ if ($[17] !== t8) {
1364
+ t9 = {
1365
+ context: "Confirmation",
1366
+ isActive: t8
1367
+ };
1368
+ $[17] = t8;
1369
+ $[18] = t9;
1370
+ } else {
1371
+ t9 = $[18];
1372
+ }
1373
+ useKeybinding("confirm:no", handleExit, t9);
1374
+ let t10;
1375
+ if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
1376
+ t10 = () => {
1377
+ setModeState({
1378
+ mode: "select-event"
1379
+ });
1380
+ };
1381
+ $[19] = t10;
1382
+ } else {
1383
+ t10 = $[19];
1384
+ }
1385
+ const t11 = mode === "select-matcher";
1386
+ let t12;
1387
+ if ($[20] !== t11) {
1388
+ t12 = {
1389
+ context: "Confirmation",
1390
+ isActive: t11
1391
+ };
1392
+ $[20] = t11;
1393
+ $[21] = t12;
1394
+ } else {
1395
+ t12 = $[21];
1396
+ }
1397
+ useKeybinding("confirm:no", t10, t12);
1398
+ let t13;
1399
+ if ($[22] !== combinedToolNames || $[23] !== modeState) {
1400
+ t13 = () => {
1401
+ if ("event" in modeState) {
1402
+ if (getMatcherMetadata(modeState.event, combinedToolNames) !== undefined) {
1403
+ setModeState({
1404
+ mode: "select-matcher",
1405
+ event: modeState.event
1406
+ });
1407
+ } else {
1408
+ setModeState({
1409
+ mode: "select-event"
1410
+ });
1411
+ }
1412
+ }
1413
+ };
1414
+ $[22] = combinedToolNames;
1415
+ $[23] = modeState;
1416
+ $[24] = t13;
1417
+ } else {
1418
+ t13 = $[24];
1419
+ }
1420
+ const t14 = mode === "select-hook";
1421
+ let t15;
1422
+ if ($[25] !== t14) {
1423
+ t15 = {
1424
+ context: "Confirmation",
1425
+ isActive: t14
1426
+ };
1427
+ $[25] = t14;
1428
+ $[26] = t15;
1429
+ } else {
1430
+ t15 = $[26];
1431
+ }
1432
+ useKeybinding("confirm:no", t13, t15);
1433
+ let t16;
1434
+ if ($[27] !== modeState) {
1435
+ t16 = () => {
1436
+ if (modeState.mode === "view-hook") {
1437
+ const {
1438
+ event,
1439
+ hook
1440
+ } = modeState;
1441
+ setModeState({
1442
+ mode: "select-hook",
1443
+ event,
1444
+ matcher: hook.matcher || ""
1445
+ });
1446
+ }
1447
+ };
1448
+ $[27] = modeState;
1449
+ $[28] = t16;
1450
+ } else {
1451
+ t16 = $[28];
1452
+ }
1453
+ const t17 = mode === "view-hook";
1454
+ let t18;
1455
+ if ($[29] !== t17) {
1456
+ t18 = {
1457
+ context: "Confirmation",
1458
+ isActive: t17
1459
+ };
1460
+ $[29] = t17;
1461
+ $[30] = t18;
1462
+ } else {
1463
+ t18 = $[30];
1464
+ }
1465
+ useKeybinding("confirm:no", t16, t18);
1466
+ let t19;
1467
+ if ($[31] !== combinedToolNames) {
1468
+ t19 = getHookEventMetadata(combinedToolNames);
1469
+ $[31] = combinedToolNames;
1470
+ $[32] = t19;
1471
+ } else {
1472
+ t19 = $[32];
1473
+ }
1474
+ const hookEventMetadata = t19;
1475
+ const settings_1 = getSettings_DEPRECATED();
1476
+ const hooksDisabled_1 = settings_1?.disableAllHooks === true;
1477
+ let t20;
1478
+ if ($[33] !== hooksByEventAndMatcher) {
1479
+ const byEvent = {};
1480
+ let total = 0;
1481
+ for (const [event_0, matchers] of Object.entries(hooksByEventAndMatcher)) {
1482
+ const eventCount = Object.values(matchers).reduce(_temp5, 0);
1483
+ byEvent[event_0] = eventCount;
1484
+ total = total + eventCount;
1485
+ }
1486
+ t20 = {
1487
+ hooksByEvent: byEvent,
1488
+ totalHooksCount: total
1489
+ };
1490
+ $[33] = hooksByEventAndMatcher;
1491
+ $[34] = t20;
1492
+ } else {
1493
+ t20 = $[34];
1494
+ }
1495
+ const {
1496
+ hooksByEvent,
1497
+ totalHooksCount
1498
+ } = t20;
1499
+ if (hooksDisabled_1) {
1500
+ let t21;
1501
+ if ($[35] === Symbol.for("react.memo_cache_sentinel")) {
1502
+ t21 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1503
+ bold: true,
1504
+ children: "disabled"
1505
+ }, undefined, false, undefined, this);
1506
+ $[35] = t21;
1507
+ } else {
1508
+ t21 = $[35];
1509
+ }
1510
+ const t22 = disabledByPolicy && " by a managed settings file";
1511
+ let t23;
1512
+ if ($[36] !== totalHooksCount) {
1513
+ t23 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1514
+ bold: true,
1515
+ children: totalHooksCount
1516
+ }, undefined, false, undefined, this);
1517
+ $[36] = totalHooksCount;
1518
+ $[37] = t23;
1519
+ } else {
1520
+ t23 = $[37];
1521
+ }
1522
+ let t24;
1523
+ if ($[38] !== totalHooksCount) {
1524
+ t24 = plural(totalHooksCount, "hook");
1525
+ $[38] = totalHooksCount;
1526
+ $[39] = t24;
1527
+ } else {
1528
+ t24 = $[39];
1529
+ }
1530
+ let t25;
1531
+ if ($[40] !== totalHooksCount) {
1532
+ t25 = plural(totalHooksCount, "is", "are");
1533
+ $[40] = totalHooksCount;
1534
+ $[41] = t25;
1535
+ } else {
1536
+ t25 = $[41];
1537
+ }
1538
+ let t26;
1539
+ if ($[42] !== t22 || $[43] !== t23 || $[44] !== t24 || $[45] !== t25) {
1540
+ t26 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1541
+ children: [
1542
+ "All hooks are currently ",
1543
+ t21,
1544
+ t22,
1545
+ ". You have",
1546
+ " ",
1547
+ t23,
1548
+ " configured",
1549
+ " ",
1550
+ t24,
1551
+ " that",
1552
+ " ",
1553
+ t25,
1554
+ " not running."
1555
+ ]
1556
+ }, undefined, true, undefined, this);
1557
+ $[42] = t22;
1558
+ $[43] = t23;
1559
+ $[44] = t24;
1560
+ $[45] = t25;
1561
+ $[46] = t26;
1562
+ } else {
1563
+ t26 = $[46];
1564
+ }
1565
+ let t27;
1566
+ let t28;
1567
+ let t29;
1568
+ let t30;
1569
+ if ($[47] === Symbol.for("react.memo_cache_sentinel")) {
1570
+ t27 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1571
+ marginTop: 1,
1572
+ children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1573
+ dimColor: true,
1574
+ children: "When hooks are disabled:"
1575
+ }, undefined, false, undefined, this)
1576
+ }, undefined, false, undefined, this);
1577
+ t28 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1578
+ dimColor: true,
1579
+ children: "\xB7 No hook commands will execute"
1580
+ }, undefined, false, undefined, this);
1581
+ t29 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1582
+ dimColor: true,
1583
+ children: "\xB7 StatusLine will not be displayed"
1584
+ }, undefined, false, undefined, this);
1585
+ t30 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1586
+ dimColor: true,
1587
+ children: "\xB7 Tool operations will proceed without hook validation"
1588
+ }, undefined, false, undefined, this);
1589
+ $[47] = t27;
1590
+ $[48] = t28;
1591
+ $[49] = t29;
1592
+ $[50] = t30;
1593
+ } else {
1594
+ t27 = $[47];
1595
+ t28 = $[48];
1596
+ t29 = $[49];
1597
+ t30 = $[50];
1598
+ }
1599
+ let t31;
1600
+ if ($[51] !== t26) {
1601
+ t31 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1602
+ flexDirection: "column",
1603
+ children: [
1604
+ t26,
1605
+ t27,
1606
+ t28,
1607
+ t29,
1608
+ t30
1609
+ ]
1610
+ }, undefined, true, undefined, this);
1611
+ $[51] = t26;
1612
+ $[52] = t31;
1613
+ } else {
1614
+ t31 = $[52];
1615
+ }
1616
+ let t32;
1617
+ if ($[53] !== disabledByPolicy) {
1618
+ t32 = !disabledByPolicy && /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1619
+ dimColor: true,
1620
+ children: 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Claude.'
1621
+ }, undefined, false, undefined, this);
1622
+ $[53] = disabledByPolicy;
1623
+ $[54] = t32;
1624
+ } else {
1625
+ t32 = $[54];
1626
+ }
1627
+ let t33;
1628
+ if ($[55] !== t31 || $[56] !== t32) {
1629
+ t33 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedBox_default, {
1630
+ flexDirection: "column",
1631
+ gap: 1,
1632
+ children: [
1633
+ t31,
1634
+ t32
1635
+ ]
1636
+ }, undefined, true, undefined, this);
1637
+ $[55] = t31;
1638
+ $[56] = t32;
1639
+ $[57] = t33;
1640
+ } else {
1641
+ t33 = $[57];
1642
+ }
1643
+ let t34;
1644
+ if ($[58] !== handleExit || $[59] !== t33) {
1645
+ t34 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Dialog, {
1646
+ title: "Hook Configuration - Disabled",
1647
+ onCancel: handleExit,
1648
+ inputGuide: _temp62,
1649
+ children: t33
1650
+ }, undefined, false, undefined, this);
1651
+ $[58] = handleExit;
1652
+ $[59] = t33;
1653
+ $[60] = t34;
1654
+ } else {
1655
+ t34 = $[60];
1656
+ }
1657
+ return t34;
1658
+ }
1659
+ switch (modeState.mode) {
1660
+ case "select-event": {
1661
+ let t21;
1662
+ if ($[61] !== combinedToolNames) {
1663
+ t21 = (event_2) => {
1664
+ if (getMatcherMetadata(event_2, combinedToolNames) !== undefined) {
1665
+ setModeState({
1666
+ mode: "select-matcher",
1667
+ event: event_2
1668
+ });
1669
+ } else {
1670
+ setModeState({
1671
+ mode: "select-hook",
1672
+ event: event_2,
1673
+ matcher: ""
1674
+ });
1675
+ }
1676
+ };
1677
+ $[61] = combinedToolNames;
1678
+ $[62] = t21;
1679
+ } else {
1680
+ t21 = $[62];
1681
+ }
1682
+ let t22;
1683
+ if ($[63] !== handleExit || $[64] !== hookEventMetadata || $[65] !== hooksByEvent || $[66] !== restrictedByPolicy || $[67] !== t21 || $[68] !== totalHooksCount) {
1684
+ t22 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectEventMode, {
1685
+ hookEventMetadata,
1686
+ hooksByEvent,
1687
+ totalHooksCount,
1688
+ restrictedByPolicy,
1689
+ onSelectEvent: t21,
1690
+ onCancel: handleExit
1691
+ }, undefined, false, undefined, this);
1692
+ $[63] = handleExit;
1693
+ $[64] = hookEventMetadata;
1694
+ $[65] = hooksByEvent;
1695
+ $[66] = restrictedByPolicy;
1696
+ $[67] = t21;
1697
+ $[68] = totalHooksCount;
1698
+ $[69] = t22;
1699
+ } else {
1700
+ t22 = $[69];
1701
+ }
1702
+ return t22;
1703
+ }
1704
+ case "select-matcher": {
1705
+ const t21 = hookEventMetadata[modeState.event];
1706
+ let t22;
1707
+ if ($[70] !== modeState.event) {
1708
+ t22 = (matcher) => {
1709
+ setModeState({
1710
+ mode: "select-hook",
1711
+ event: modeState.event,
1712
+ matcher
1713
+ });
1714
+ };
1715
+ $[70] = modeState.event;
1716
+ $[71] = t22;
1717
+ } else {
1718
+ t22 = $[71];
1719
+ }
1720
+ let t23;
1721
+ if ($[72] === Symbol.for("react.memo_cache_sentinel")) {
1722
+ t23 = () => {
1723
+ setModeState({
1724
+ mode: "select-event"
1725
+ });
1726
+ };
1727
+ $[72] = t23;
1728
+ } else {
1729
+ t23 = $[72];
1730
+ }
1731
+ let t24;
1732
+ if ($[73] !== hooksByEventAndMatcher || $[74] !== modeState.event || $[75] !== sortedMatchersForSelectedEvent || $[76] !== t21.description || $[77] !== t22) {
1733
+ t24 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectMatcherMode, {
1734
+ selectedEvent: modeState.event,
1735
+ matchersForSelectedEvent: sortedMatchersForSelectedEvent,
1736
+ hooksByEventAndMatcher,
1737
+ eventDescription: t21.description,
1738
+ onSelect: t22,
1739
+ onCancel: t23
1740
+ }, undefined, false, undefined, this);
1741
+ $[73] = hooksByEventAndMatcher;
1742
+ $[74] = modeState.event;
1743
+ $[75] = sortedMatchersForSelectedEvent;
1744
+ $[76] = t21.description;
1745
+ $[77] = t22;
1746
+ $[78] = t24;
1747
+ } else {
1748
+ t24 = $[78];
1749
+ }
1750
+ return t24;
1751
+ }
1752
+ case "select-hook": {
1753
+ const t21 = hookEventMetadata[modeState.event];
1754
+ let t22;
1755
+ if ($[79] !== modeState.event) {
1756
+ t22 = (hook_1) => {
1757
+ setModeState({
1758
+ mode: "view-hook",
1759
+ event: modeState.event,
1760
+ hook: hook_1
1761
+ });
1762
+ };
1763
+ $[79] = modeState.event;
1764
+ $[80] = t22;
1765
+ } else {
1766
+ t22 = $[80];
1767
+ }
1768
+ let t23;
1769
+ if ($[81] !== combinedToolNames || $[82] !== modeState.event) {
1770
+ t23 = () => {
1771
+ if (getMatcherMetadata(modeState.event, combinedToolNames) !== undefined) {
1772
+ setModeState({
1773
+ mode: "select-matcher",
1774
+ event: modeState.event
1775
+ });
1776
+ } else {
1777
+ setModeState({
1778
+ mode: "select-event"
1779
+ });
1780
+ }
1781
+ };
1782
+ $[81] = combinedToolNames;
1783
+ $[82] = modeState.event;
1784
+ $[83] = t23;
1785
+ } else {
1786
+ t23 = $[83];
1787
+ }
1788
+ let t24;
1789
+ if ($[84] !== hooksForSelectedMatcher || $[85] !== modeState.event || $[86] !== modeState.matcher || $[87] !== t21 || $[88] !== t22 || $[89] !== t23) {
1790
+ t24 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectHookMode, {
1791
+ selectedEvent: modeState.event,
1792
+ selectedMatcher: modeState.matcher,
1793
+ hooksForSelectedMatcher,
1794
+ hookEventMetadata: t21,
1795
+ onSelect: t22,
1796
+ onCancel: t23
1797
+ }, undefined, false, undefined, this);
1798
+ $[84] = hooksForSelectedMatcher;
1799
+ $[85] = modeState.event;
1800
+ $[86] = modeState.matcher;
1801
+ $[87] = t21;
1802
+ $[88] = t22;
1803
+ $[89] = t23;
1804
+ $[90] = t24;
1805
+ } else {
1806
+ t24 = $[90];
1807
+ }
1808
+ return t24;
1809
+ }
1810
+ case "view-hook": {
1811
+ const t21 = modeState.hook;
1812
+ let t22;
1813
+ if ($[91] !== combinedToolNames || $[92] !== modeState.event) {
1814
+ t22 = getMatcherMetadata(modeState.event, combinedToolNames);
1815
+ $[91] = combinedToolNames;
1816
+ $[92] = modeState.event;
1817
+ $[93] = t22;
1818
+ } else {
1819
+ t22 = $[93];
1820
+ }
1821
+ const t23 = t22 !== undefined;
1822
+ let t24;
1823
+ if ($[94] !== modeState) {
1824
+ t24 = () => {
1825
+ const {
1826
+ event: event_1,
1827
+ hook: hook_0
1828
+ } = modeState;
1829
+ setModeState({
1830
+ mode: "select-hook",
1831
+ event: event_1,
1832
+ matcher: hook_0.matcher || ""
1833
+ });
1834
+ };
1835
+ $[94] = modeState;
1836
+ $[95] = t24;
1837
+ } else {
1838
+ t24 = $[95];
1839
+ }
1840
+ let t25;
1841
+ if ($[96] !== modeState.hook || $[97] !== t23 || $[98] !== t24) {
1842
+ t25 = /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ViewHookMode, {
1843
+ selectedHook: t21,
1844
+ eventSupportsMatcher: t23,
1845
+ onCancel: t24
1846
+ }, undefined, false, undefined, this);
1847
+ $[96] = modeState.hook;
1848
+ $[97] = t23;
1849
+ $[98] = t24;
1850
+ $[99] = t25;
1851
+ } else {
1852
+ t25 = $[99];
1853
+ }
1854
+ return t25;
1855
+ }
1856
+ }
1857
+ }
1858
+ function _temp62() {
1859
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ThemedText, {
1860
+ children: "Esc to close"
1861
+ }, undefined, false, undefined, this);
1862
+ }
1863
+ function _temp5(sum, hooks) {
1864
+ return sum + hooks.length;
1865
+ }
1866
+ function _temp42(tool) {
1867
+ return tool.name;
1868
+ }
1869
+ function _temp32(s) {
1870
+ return s.mcp;
1871
+ }
1872
+ function _temp23() {
1873
+ return getSettingsForSource("policySettings")?.allowManagedHooksOnly === true;
1874
+ }
1875
+ function _temp7() {
1876
+ const settings = getSettings_DEPRECATED();
1877
+ const hooksDisabled = settings?.disableAllHooks === true;
1878
+ return hooksDisabled && getSettingsForSource("policySettings")?.disableAllHooks === true;
1879
+ }
1880
+ var import_compiler_runtime5, import_react, jsx_dev_runtime5;
1881
+ var init_HooksConfigMenu = __esm(() => {
1882
+ init_AppState();
1883
+ init_useSettingsChange();
1884
+ init_ink();
1885
+ init_useKeybinding();
1886
+ init_hooksConfigManager();
1887
+ init_settings();
1888
+ init_stringUtils();
1889
+ init_Dialog();
1890
+ init_SelectEventMode();
1891
+ init_SelectHookMode();
1892
+ init_SelectMatcherMode();
1893
+ init_ViewHookMode();
1894
+ import_compiler_runtime5 = __toESM(require_compiler_runtime(), 1);
1895
+ import_react = __toESM(require_react(), 1);
1896
+ jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
1897
+ });
1898
+
1899
+ // src/commands/hooks/hooks.tsx
1900
+ var jsx_dev_runtime6, call = async (onDone, context) => {
1901
+ logEvent("tengu_hooks_command", {});
1902
+ const appState = context.getAppState();
1903
+ const permissionContext = appState.toolPermissionContext;
1904
+ const toolNames = getTools(permissionContext).map((tool) => tool.name);
1905
+ return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(HooksConfigMenu, {
1906
+ toolNames,
1907
+ onExit: onDone
1908
+ }, undefined, false, undefined, this);
1909
+ };
1910
+ var init_hooks = __esm(() => {
1911
+ init_HooksConfigMenu();
1912
+ init_analytics();
1913
+ init_tools();
1914
+ jsx_dev_runtime6 = __toESM(require_jsx_dev_runtime(), 1);
1915
+ });
1916
+ init_hooks();
1917
+
1918
+ export {
1919
+ call
1920
+ };