claude-code-best 1.3.0 → 1.3.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 (260) hide show
  1. package/dist/{chunk-m7v70nw0.js → chunk-01fhgb41.js} +19 -19
  2. package/dist/{chunk-bfz9aasm.js → chunk-050pwpee.js} +1 -1
  3. package/dist/{chunk-hycjbxhs.js → chunk-0fvmdap2.js} +1 -1
  4. package/dist/{chunk-v92zfjm3.js → chunk-0jrmdacn.js} +1 -1
  5. package/dist/{chunk-eddmb0tc.js → chunk-0m5j0p72.js} +20 -20
  6. package/dist/{chunk-cabv42ex.js → chunk-0mg0k25x.js} +1 -1
  7. package/dist/{chunk-mqknmqbj.js → chunk-0pmegb1w.js} +2 -2
  8. package/dist/{chunk-b8pffs21.js → chunk-0tag2dk1.js} +27 -27
  9. package/dist/{chunk-dkz51nh3.js → chunk-0w4mrdwb.js} +3 -3
  10. package/dist/{chunk-h1nt30dj.js → chunk-0w6jz89f.js} +1 -1
  11. package/dist/{chunk-eeweb4db.js → chunk-1c9k5v15.js} +19 -19
  12. package/dist/{chunk-0d8p751v.js → chunk-1enjnwgz.js} +19 -19
  13. package/dist/{chunk-394mdv6k.js → chunk-1fgnyfsq.js} +3 -3
  14. package/dist/{chunk-sg4tpf00.js → chunk-1n7cey3j.js} +73 -73
  15. package/dist/{chunk-bpsg7rm0.js → chunk-1w08zx69.js} +7 -7
  16. package/dist/{chunk-22c48gbt.js → chunk-1wz91dsc.js} +2 -2
  17. package/dist/{chunk-pmfdbybc.js → chunk-1zgwrq7n.js} +1 -1
  18. package/dist/{chunk-9p6v7f2v.js → chunk-24g7edd0.js} +20 -20
  19. package/dist/{chunk-jx0b5fke.js → chunk-26bbhsnc.js} +19 -19
  20. package/dist/{chunk-kaa0bsrh.js → chunk-27dz7nrf.js} +1 -1
  21. package/dist/{chunk-m5aqcp3x.js → chunk-2c8n8hnq.js} +3 -3
  22. package/dist/{chunk-fv5c8gjd.js → chunk-2dq4sza8.js} +19 -19
  23. package/dist/{chunk-z1rbdm11.js → chunk-2gw5x5s3.js} +20 -20
  24. package/dist/{chunk-7rjzfjf2.js → chunk-2hr17t2q.js} +29 -29
  25. package/dist/{chunk-cbrkce20.js → chunk-2trydwx3.js} +2 -2
  26. package/dist/{chunk-tb5m6pvs.js → chunk-386edscs.js} +20 -20
  27. package/dist/{chunk-5c7hecb7.js → chunk-3900jrtx.js} +19 -19
  28. package/dist/{chunk-2222r6sq.js → chunk-39sr0h5a.js} +3 -3
  29. package/dist/{chunk-4w5k9q5e.js → chunk-3cm9fn9x.js} +6 -6
  30. package/dist/{chunk-7ms5ykvy.js → chunk-3vbc3efy.js} +2 -2
  31. package/dist/{chunk-nrv096sc.js → chunk-3wmyq7q5.js} +19 -19
  32. package/dist/{chunk-bj6fdkbq.js → chunk-43nh9gf2.js} +19 -19
  33. package/dist/{chunk-3jfd4rc4.js → chunk-462vtmnj.js} +2 -2
  34. package/dist/{chunk-c58wjfjz.js → chunk-467273by.js} +33 -33
  35. package/dist/{chunk-kmpf6g9a.js → chunk-49swb4ny.js} +22 -22
  36. package/dist/{chunk-5wdpxvmh.js → chunk-4m1z07x8.js} +13 -13
  37. package/dist/{chunk-1gxntv08.js → chunk-4xxq1g6q.js} +1 -1
  38. package/dist/{chunk-maygbm8y.js → chunk-4y2dxg0h.js} +20 -20
  39. package/dist/{chunk-838jt14c.js → chunk-511p1hxp.js} +20 -20
  40. package/dist/{chunk-0bx6wycr.js → chunk-549bvvxw.js} +2 -2
  41. package/dist/{chunk-sfmxb989.js → chunk-59t0knej.js} +19 -19
  42. package/dist/{chunk-hbctkmk8.js → chunk-5h7pp04r.js} +21 -21
  43. package/dist/{chunk-wvg1esxy.js → chunk-601ycjm2.js} +5 -5
  44. package/dist/{chunk-y0aajevx.js → chunk-60965ra9.js} +3 -3
  45. package/dist/{chunk-c0rygpkx.js → chunk-63ze8qsk.js} +1 -1
  46. package/dist/{chunk-5dx8x5s4.js → chunk-6a1xdr64.js} +19 -19
  47. package/dist/{chunk-f0r878ce.js → chunk-6c7q3e1g.js} +19 -19
  48. package/dist/{chunk-213ftqxh.js → chunk-6pjwdq37.js} +20 -20
  49. package/dist/{chunk-g7tarxmc.js → chunk-7dty9kss.js} +109 -109
  50. package/dist/{chunk-74zz0b6s.js → chunk-7gfj3vr6.js} +29 -29
  51. package/dist/{chunk-nha4ccb8.js → chunk-7jtc779k.js} +19 -19
  52. package/dist/{chunk-dcpykn1s.js → chunk-7spb4x2r.js} +25 -25
  53. package/dist/{chunk-045x8tgs.js → chunk-7tmn40ms.js} +19 -19
  54. package/dist/{chunk-npxkzvh7.js → chunk-817ta98z.js} +3 -3
  55. package/dist/{chunk-4h9yhdc6.js → chunk-81jqbdqz.js} +21 -21
  56. package/dist/{chunk-2v6p7cp3.js → chunk-8282r42g.js} +22 -22
  57. package/dist/{chunk-trmcwpe0.js → chunk-8dkjrxqz.js} +8 -8
  58. package/dist/{chunk-1nxhvdk0.js → chunk-8fk2qmtd.js} +26 -26
  59. package/dist/{chunk-5aktmgbh.js → chunk-8p2tr8tm.js} +2 -2
  60. package/dist/{chunk-1m0b0qpk.js → chunk-8xbsaj66.js} +2 -2
  61. package/dist/{chunk-wmbw8xp6.js → chunk-8yk7wcx9.js} +21 -21
  62. package/dist/{chunk-b60hfpx4.js → chunk-90xncb13.js} +23 -23
  63. package/dist/{chunk-k1034t1k.js → chunk-92dvdn2j.js} +1 -1
  64. package/dist/{chunk-m014f9d7.js → chunk-9dr6cj23.js} +5 -5
  65. package/dist/{chunk-4h134w8m.js → chunk-9g6nwdp3.js} +19 -19
  66. package/dist/{chunk-3xjxwc8k.js → chunk-9ks728q8.js} +1 -1
  67. package/dist/{chunk-mc9qxpq9.js → chunk-9pye85q2.js} +2 -2
  68. package/dist/{chunk-554yxdxw.js → chunk-9pzay1hf.js} +1 -1
  69. package/dist/{chunk-rbh7pn8z.js → chunk-9tgt3s2b.js} +19 -19
  70. package/dist/{chunk-pgr3vqs3.js → chunk-9xjs2x90.js} +2 -2
  71. package/dist/{chunk-mj08khaw.js → chunk-9yctqgqf.js} +20 -20
  72. package/dist/{chunk-6xrj7fhf.js → chunk-a66dpqvr.js} +1 -1
  73. package/dist/{chunk-qnk3xdcq.js → chunk-a962fbse.js} +29 -29
  74. package/dist/{chunk-6wpdkz60.js → chunk-adnz2wwx.js} +20 -20
  75. package/dist/{chunk-8a3p9cr6.js → chunk-ajbqe5hg.js} +19 -19
  76. package/dist/{chunk-2vpbdb0e.js → chunk-ajqnq9d8.js} +19 -19
  77. package/dist/{chunk-nzwsfphb.js → chunk-amqjx5nx.js} +2 -2
  78. package/dist/{chunk-wmjxh7n1.js → chunk-an8dr2hh.js} +1 -1
  79. package/dist/{chunk-mcp0f64h.js → chunk-awb4ksjn.js} +2 -2
  80. package/dist/{chunk-ptkdhmmr.js → chunk-b9n5fe07.js} +17 -17
  81. package/dist/{chunk-kawnay92.js → chunk-bc4mvfm9.js} +2 -2
  82. package/dist/{chunk-6bv97bvc.js → chunk-bjzwahz4.js} +1 -1
  83. package/dist/{chunk-3pwqxjgh.js → chunk-bkzej8c2.js} +20 -20
  84. package/dist/{chunk-1f0zc36w.js → chunk-bphdsgva.js} +19 -19
  85. package/dist/{chunk-w1npkbm4.js → chunk-by0gh24s.js} +20 -20
  86. package/dist/{chunk-ba1fw4a4.js → chunk-c1ddtk65.js} +2 -2
  87. package/dist/{chunk-sjy1sd8p.js → chunk-c38m15b4.js} +1 -1
  88. package/dist/{chunk-pc7fbd30.js → chunk-c5bbbeet.js} +2 -2
  89. package/dist/{chunk-2p2em9s3.js → chunk-c7bv28tq.js} +19 -19
  90. package/dist/{chunk-p09pr0b9.js → chunk-ce0azfq8.js} +21 -21
  91. package/dist/{chunk-vvfcsk0m.js → chunk-cgpdv4d1.js} +1 -1
  92. package/dist/{chunk-sm6k9v6h.js → chunk-cna35bj4.js} +4 -4
  93. package/dist/{chunk-eebvzgqf.js → chunk-cymx6f6m.js} +2 -2
  94. package/dist/{chunk-ma8rf7ks.js → chunk-cz6qw5ec.js} +9 -9
  95. package/dist/{chunk-g0eyjf77.js → chunk-d0dzma5s.js} +4 -4
  96. package/dist/{chunk-9rpdp503.js → chunk-d2ftse1n.js} +19 -19
  97. package/dist/{chunk-69enakg4.js → chunk-d2zknskm.js} +3 -3
  98. package/dist/{chunk-nd9m2fcy.js → chunk-devj67fb.js} +1 -1
  99. package/dist/{chunk-y6zj86y9.js → chunk-dewz3bgc.js} +19 -19
  100. package/dist/{chunk-ry9ssncf.js → chunk-dgdkk37z.js} +2 -2
  101. package/dist/{chunk-7tnc2act.js → chunk-dkbtqb7g.js} +23 -23
  102. package/dist/{chunk-w2r52cs1.js → chunk-dnw80c3y.js} +50 -50
  103. package/dist/{chunk-1z41ce2e.js → chunk-dr7bjgwn.js} +20 -20
  104. package/dist/{chunk-85p1xpaw.js → chunk-dxdaa8qz.js} +29 -29
  105. package/dist/{chunk-ykzn1be5.js → chunk-e5mdhyhx.js} +19 -19
  106. package/dist/{chunk-qf0vwde7.js → chunk-e8993r79.js} +1 -1
  107. package/dist/{chunk-39e8b481.js → chunk-edwk1b23.js} +3 -3
  108. package/dist/{chunk-4mfkp4e0.js → chunk-eeapc7vz.js} +19 -19
  109. package/dist/{chunk-ed0ps4v3.js → chunk-eg5qqhjn.js} +1 -1
  110. package/dist/{chunk-9c6dcfsm.js → chunk-ej6pw264.js} +2 -2
  111. package/dist/{chunk-wnfgkzsc.js → chunk-emgfv9ne.js} +3 -3
  112. package/dist/{chunk-hcp4pras.js → chunk-epb53khk.js} +1 -1
  113. package/dist/{chunk-vv74x62v.js → chunk-erg2py18.js} +8 -8
  114. package/dist/{chunk-hp82jrck.js → chunk-et5yst40.js} +19 -19
  115. package/dist/{chunk-mh3y6rp1.js → chunk-ex0ven1b.js} +30 -30
  116. package/dist/{chunk-xyq2fcnr.js → chunk-ex4ephxn.js} +20 -20
  117. package/dist/{chunk-wj3ha1cp.js → chunk-ezage7b3.js} +19 -19
  118. package/dist/{chunk-tr5pmzxb.js → chunk-f7t8nc8w.js} +1 -1
  119. package/dist/{chunk-nx1mdvj4.js → chunk-fcn1c6x1.js} +2 -2
  120. package/dist/{chunk-swtyc9pt.js → chunk-fdfws706.js} +25 -25
  121. package/dist/{chunk-9v9zx8jz.js → chunk-febe4721.js} +9 -9
  122. package/dist/{chunk-m2remj04.js → chunk-ffwvkdef.js} +19 -19
  123. package/dist/{chunk-jyzet5tq.js → chunk-fjc7rtwh.js} +1 -1
  124. package/dist/{chunk-zmyqe6tp.js → chunk-fsdgta0d.js} +19 -19
  125. package/dist/{chunk-dj02e0n1.js → chunk-ft7x94g7.js} +2 -2
  126. package/dist/{chunk-k9x48g80.js → chunk-fytwv2vm.js} +1 -1
  127. package/dist/{chunk-g8w8pe9r.js → chunk-g06stvjp.js} +19 -19
  128. package/dist/{chunk-hnn6hp3c.js → chunk-g9t125k4.js} +1 -1
  129. package/dist/{chunk-fzy5ar3g.js → chunk-gar53rp0.js} +25 -25
  130. package/dist/{chunk-vevm5kq0.js → chunk-gr98a45p.js} +2 -2
  131. package/dist/{chunk-vegpctq8.js → chunk-gtbynfdg.js} +1 -1
  132. package/dist/{chunk-sf7akcrv.js → chunk-h0wp75kr.js} +1 -1
  133. package/dist/{chunk-gtavs9d8.js → chunk-hbn7k214.js} +30 -30
  134. package/dist/{chunk-mf9jcdfr.js → chunk-hdsan89y.js} +22 -22
  135. package/dist/{chunk-1aj8hhcq.js → chunk-hk2ns3xa.js} +19 -19
  136. package/dist/{chunk-awgxvs2z.js → chunk-hnt8qsv6.js} +2 -2
  137. package/dist/{chunk-tca28hyh.js → chunk-ht0zqd84.js} +21 -21
  138. package/dist/{chunk-836qnzp6.js → chunk-ht684r1g.js} +19 -19
  139. package/dist/{chunk-xekss4ge.js → chunk-j20kwmnx.js} +3 -3
  140. package/dist/{chunk-d74a8stm.js → chunk-j964h5n1.js} +1 -1
  141. package/dist/{chunk-r7sfa5ck.js → chunk-jjvt0s07.js} +19 -19
  142. package/dist/{chunk-w4fdphav.js → chunk-jrf67z07.js} +44 -44
  143. package/dist/{chunk-s9755385.js → chunk-jshec16k.js} +1 -1
  144. package/dist/{chunk-jyj6h8cw.js → chunk-k1d33z7h.js} +19 -19
  145. package/dist/{chunk-97b0gbay.js → chunk-k1jbx6h7.js} +19 -19
  146. package/dist/{chunk-zswgxgy5.js → chunk-k4xwz0w7.js} +2 -2
  147. package/dist/{chunk-h3yhryqv.js → chunk-k8k3nj3p.js} +1 -1
  148. package/dist/{chunk-zv6q7p4g.js → chunk-k9yzz2a0.js} +1 -1
  149. package/dist/{chunk-8xtx2r94.js → chunk-kqzej7t8.js} +1 -1
  150. package/dist/{chunk-ay8j51m4.js → chunk-kzzpeawm.js} +1 -1
  151. package/dist/{chunk-rk11yzpm.js → chunk-ma6neeas.js} +21 -21
  152. package/dist/{chunk-315mjrch.js → chunk-mcct2v6y.js} +20 -20
  153. package/dist/{chunk-mkmjb03s.js → chunk-mcrsjdfc.js} +22 -22
  154. package/dist/{chunk-88eq0rc2.js → chunk-mcxsb7w2.js} +19 -19
  155. package/dist/{chunk-dn922ch4.js → chunk-mg1h998n.js} +19 -19
  156. package/dist/{chunk-6kapfy0j.js → chunk-mqmqyj64.js} +1 -1
  157. package/dist/{chunk-wrb2b3es.js → chunk-n1ee5cv5.js} +19 -19
  158. package/dist/{chunk-zg397m7w.js → chunk-n2rt10gh.js} +2 -2
  159. package/dist/{chunk-bkarexn9.js → chunk-n8h1dsqj.js} +2 -2
  160. package/dist/{chunk-tw9ks0n2.js → chunk-ngd9jj5f.js} +22 -22
  161. package/dist/{chunk-ex3h0avx.js → chunk-nmydkvsg.js} +19 -19
  162. package/dist/{chunk-ad2mhh92.js → chunk-np0xzzg5.js} +1 -1
  163. package/dist/{chunk-kswzsqg9.js → chunk-nr5skyan.js} +1 -1
  164. package/dist/{chunk-qb20jnh4.js → chunk-nw9my2y9.js} +4 -4
  165. package/dist/{chunk-803d97gs.js → chunk-nwtevv8y.js} +31 -31
  166. package/dist/{chunk-aqatdryp.js → chunk-p6n9spb6.js} +3 -3
  167. package/dist/{chunk-s7p63r6r.js → chunk-p9n4qs4w.js} +1 -1
  168. package/dist/{chunk-rxr02qh4.js → chunk-p9rtzder.js} +20 -20
  169. package/dist/{chunk-ea4sj0pm.js → chunk-pb00hbq4.js} +1 -1
  170. package/dist/{chunk-sywgdd0d.js → chunk-pftvzz65.js} +27 -27
  171. package/dist/{chunk-mbyey93c.js → chunk-phmts3a8.js} +22 -22
  172. package/dist/{chunk-krfw0afw.js → chunk-pmnes7r7.js} +2 -2
  173. package/dist/{chunk-z8bk3pqw.js → chunk-pnwk1ce7.js} +2 -2
  174. package/dist/{chunk-44ah1t5p.js → chunk-psnzmdy2.js} +2 -2
  175. package/dist/{chunk-r2j97cp4.js → chunk-px25jmm6.js} +4 -4
  176. package/dist/{chunk-abm8mzz5.js → chunk-py0p2rvr.js} +1 -1
  177. package/dist/{chunk-jycf23m2.js → chunk-pyq7qsqm.js} +1 -1
  178. package/dist/{chunk-wj8etzsm.js → chunk-q23q07sc.js} +4 -4
  179. package/dist/{chunk-k97y5vrw.js → chunk-q6vk9be3.js} +1 -1
  180. package/dist/{chunk-c0bq9g4f.js → chunk-q87h86hy.js} +1 -1
  181. package/dist/{chunk-x8ryn0sd.js → chunk-q9z14d8f.js} +2 -2
  182. package/dist/{chunk-59xdt49j.js → chunk-qa62dem1.js} +20 -20
  183. package/dist/{chunk-sgxq6mtt.js → chunk-qeg1ye4w.js} +2 -2
  184. package/dist/{chunk-ksvc2ann.js → chunk-qfex85dr.js} +3 -3
  185. package/dist/{chunk-fvxqrnrz.js → chunk-qgz6s2xm.js} +19 -19
  186. package/dist/{chunk-j4mt6rw2.js → chunk-qh5jjrbw.js} +20 -20
  187. package/dist/{chunk-9dtc364s.js → chunk-qjew74g6.js} +21 -21
  188. package/dist/{chunk-ffrsgn6x.js → chunk-qyth66h6.js} +19 -19
  189. package/dist/{chunk-w4z7b4zm.js → chunk-qzr7wsy3.js} +2 -2
  190. package/dist/{chunk-51x591cq.js → chunk-r1kqzdds.js} +2 -2
  191. package/dist/{chunk-n64a8qh1.js → chunk-r2ydq9r2.js} +19 -19
  192. package/dist/{chunk-mbvt9qys.js → chunk-r4bmt1gr.js} +24 -24
  193. package/dist/{chunk-r7wavjvv.js → chunk-r5m3r29m.js} +3 -3
  194. package/dist/{chunk-98gz3ere.js → chunk-r5ppyzqd.js} +25 -25
  195. package/dist/{chunk-2082hk1v.js → chunk-r6j5mbkt.js} +19 -19
  196. package/dist/{chunk-0frev4tj.js → chunk-r77t00rm.js} +72 -72
  197. package/dist/{chunk-c2scvgdz.js → chunk-s34pmkqt.js} +20 -20
  198. package/dist/{chunk-w9r4k1ts.js → chunk-s3ma013j.js} +5 -5
  199. package/dist/{chunk-dtn9d5ps.js → chunk-s3mvqqjd.js} +1 -1
  200. package/dist/{chunk-908037c2.js → chunk-se1q11dc.js} +19 -19
  201. package/dist/{chunk-drzrtvzm.js → chunk-sgg1tn03.js} +3 -3
  202. package/dist/{chunk-tsn8vqzc.js → chunk-str4dp84.js} +22 -22
  203. package/dist/{chunk-3tkewezp.js → chunk-sv8gqenr.js} +2 -2
  204. package/dist/{chunk-7tp0d8y6.js → chunk-svpd0j81.js} +99 -99
  205. package/dist/{chunk-6w01v7jw.js → chunk-swc4sczv.js} +2 -2
  206. package/dist/{chunk-c9ehyj0z.js → chunk-swy3hcg1.js} +1 -1
  207. package/dist/{chunk-86mzts67.js → chunk-sy3d08n0.js} +19 -19
  208. package/dist/{chunk-srcz921f.js → chunk-t69gyagr.js} +2 -2
  209. package/dist/{chunk-hxwrsk3g.js → chunk-t6w1d4xk.js} +3 -3
  210. package/dist/{chunk-1rgbbfx3.js → chunk-tb12nz5c.js} +2 -2
  211. package/dist/{chunk-2psp44fn.js → chunk-tp54yb92.js} +22 -22
  212. package/dist/{chunk-jcxpj477.js → chunk-v04r9px7.js} +1 -1
  213. package/dist/{chunk-h40d4jx6.js → chunk-v0f49rpz.js} +5 -5
  214. package/dist/{chunk-mkkwx2fp.js → chunk-v0hg9qzq.js} +3 -3
  215. package/dist/{chunk-mky5spvc.js → chunk-v638cdv3.js} +19 -19
  216. package/dist/{chunk-h5fxd0qy.js → chunk-v9jsvxra.js} +1 -1
  217. package/dist/{chunk-nbq1805f.js → chunk-v9ryjarx.js} +19 -19
  218. package/dist/{chunk-da2b7s2y.js → chunk-va9redkr.js} +2 -2
  219. package/dist/{chunk-bvq835yd.js → chunk-vd6c8vgv.js} +21 -21
  220. package/dist/{chunk-hpvbq30z.js → chunk-vhpr96x2.js} +4 -4
  221. package/dist/{chunk-eef379ac.js → chunk-vr1eqyff.js} +1 -1
  222. package/dist/{chunk-28y3xm7f.js → chunk-vtrrerj6.js} +20 -20
  223. package/dist/{chunk-4nfvhspb.js → chunk-vv5x833a.js} +2 -2
  224. package/dist/{chunk-nhxrqvx9.js → chunk-w08xc6vn.js} +20 -20
  225. package/dist/{chunk-qhyxfj9j.js → chunk-w0ehrytv.js} +20 -20
  226. package/dist/{chunk-2gcshtrs.js → chunk-w4x7kzbe.js} +2 -2
  227. package/dist/{chunk-pjkgkkgk.js → chunk-w5pjyvkb.js} +1 -1
  228. package/dist/{chunk-1xw2zktc.js → chunk-wavbjba6.js} +3 -3
  229. package/dist/{chunk-ptg70t70.js → chunk-wk3k6f59.js} +5 -5
  230. package/dist/{chunk-541thwwe.js → chunk-wtwmfvvx.js} +27 -27
  231. package/dist/{chunk-99ghae8h.js → chunk-wxjwtrt1.js} +20 -20
  232. package/dist/{chunk-6dgr99zd.js → chunk-x4r11cpg.js} +1 -1
  233. package/dist/{chunk-d37c3qdn.js → chunk-x4t9qqy6.js} +1 -1
  234. package/dist/{chunk-6sf28hta.js → chunk-xegayzjm.js} +12 -12
  235. package/dist/{chunk-z9ktn6m5.js → chunk-xfprjqtc.js} +19 -19
  236. package/dist/{chunk-w8cf9tyj.js → chunk-xn5tw4vy.js} +2 -2
  237. package/dist/{chunk-6x3etkry.js → chunk-xrphw4c4.js} +2 -2
  238. package/dist/{chunk-qxfmw5r3.js → chunk-xvmdy4n5.js} +20 -20
  239. package/dist/{chunk-m52s9sgc.js → chunk-xwybntar.js} +19 -19
  240. package/dist/{chunk-djxhhr4t.js → chunk-y2kwne82.js} +20 -20
  241. package/dist/{chunk-n861majn.js → chunk-y6xfv4b9.js} +1 -1
  242. package/dist/{chunk-yysdszkz.js → chunk-y9tdt2na.js} +4 -4
  243. package/dist/{chunk-3wa4vpe6.js → chunk-yb19pff7.js} +20 -20
  244. package/dist/{chunk-cktw45b3.js → chunk-ycww575z.js} +1 -1
  245. package/dist/{chunk-4rtpbpw6.js → chunk-yhndga2y.js} +1 -1
  246. package/dist/{chunk-7gyy3d4b.js → chunk-yhy5qy94.js} +1 -1
  247. package/dist/{chunk-tz1m8223.js → chunk-ypdqbtxz.js} +2 -2
  248. package/dist/{chunk-ge5mf4cm.js → chunk-ywnek1j6.js} +19 -19
  249. package/dist/{chunk-8dsghfa5.js → chunk-yyg2brsy.js} +11 -11
  250. package/dist/{chunk-zpvh40s6.js → chunk-yzzjpgz5.js} +30 -30
  251. package/dist/{chunk-fsb3awj1.js → chunk-z3gcdcks.js} +2 -2
  252. package/dist/{chunk-cj95nvqr.js → chunk-z9gnfxqg.js} +5 -5
  253. package/dist/{chunk-hmwgf1mv.js → chunk-zfgzz4dw.js} +1 -1
  254. package/dist/{chunk-1y6zv558.js → chunk-zr7mcfmy.js} +1 -1
  255. package/dist/{chunk-f9n7y4yt.js → chunk-zrr9r10k.js} +2 -2
  256. package/dist/{chunk-3g9q33ab.js → chunk-zx7jp3dn.js} +19 -19
  257. package/dist/cli.js +8 -8
  258. package/package.json +3 -3
  259. package/scripts/setup-chrome-mcp.mjs +46 -0
  260. package/scripts/download-ripgrep.ts +0 -335
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  exports_registerProtocol,
4
4
  init_registerProtocol
5
- } from "./chunk-ea4sj0pm.js";
5
+ } from "./chunk-pb00hbq4.js";
6
6
  import {
7
7
  autoUpdateMarketplacesAndPluginsInBackground,
8
8
  init_pluginAutoupdate
9
- } from "./chunk-hpvbq30z.js";
9
+ } from "./chunk-vhpr96x2.js";
10
10
  import {
11
11
  initMagicDocs,
12
12
  init_magicDocs
13
- } from "./chunk-22c48gbt.js";
13
+ } from "./chunk-1wz91dsc.js";
14
14
  import {
15
15
  TOOL_RESULTS_SUBDIR,
16
16
  asSystemPrompt,
@@ -43,7 +43,7 @@ import {
43
43
  init_toolResultStorage,
44
44
  init_worktree,
45
45
  queryModelWithoutStreaming
46
- } from "./chunk-g7tarxmc.js";
46
+ } from "./chunk-7dty9kss.js";
47
47
  import {
48
48
  getSettings_DEPRECATED,
49
49
  getSmallFastModel,
@@ -51,7 +51,7 @@ import {
51
51
  init_model,
52
52
  init_settings1 as init_settings,
53
53
  rawSettingsContainsKey
54
- } from "./chunk-pmfdbybc.js";
54
+ } from "./chunk-1zgwrq7n.js";
55
55
  import {
56
56
  init_array,
57
57
  init_lockfile,
@@ -8,7 +8,7 @@ import {
8
8
  init_grove,
9
9
  markGroveNoticeViewed,
10
10
  updateGroveSettings
11
- } from "./chunk-g7tarxmc.js";
11
+ } from "./chunk-7dty9kss.js";
12
12
  import {
13
13
  Byline,
14
14
  Dialog,
@@ -4,7 +4,7 @@ import {
4
4
  init_authFileDescriptor,
5
5
  maybePersistTokenForSubprocesses,
6
6
  readTokenFromWellKnownFile
7
- } from "./chunk-pmfdbybc.js";
7
+ } from "./chunk-1zgwrq7n.js";
8
8
  import {
9
9
  init_diagLogs,
10
10
  logForDiagnosticsNoPII
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  Messages,
4
4
  init_Messages
5
- } from "./chunk-5wdpxvmh.js";
5
+ } from "./chunk-4m1z07x8.js";
6
6
  import {
7
7
  init_staticRender,
8
8
  renderToAnsiString
@@ -13,7 +13,7 @@ import {
13
13
  init_KeybindingContext,
14
14
  init_loadUserBindings,
15
15
  loadKeybindingsSyncWithWarnings
16
- } from "./chunk-g7tarxmc.js";
16
+ } from "./chunk-7dty9kss.js";
17
17
  import {
18
18
  KeybindingProvider,
19
19
  init_strip_ansi,
@@ -65,51 +65,51 @@ import {
65
65
  resetMicrocompactState,
66
66
  runAgent,
67
67
  toArray
68
- } from "./chunk-g7tarxmc.js";
69
- import"./chunk-1y6zv558.js";
70
- import"./chunk-nd9m2fcy.js";
68
+ } from "./chunk-7dty9kss.js";
69
+ import"./chunk-zr7mcfmy.js";
70
+ import"./chunk-devj67fb.js";
71
71
  import"./chunk-3c161502.js";
72
- import"./chunk-554yxdxw.js";
72
+ import"./chunk-9pzay1hf.js";
73
73
  import"./chunk-qe3qr56q.js";
74
74
  import {
75
75
  init_pluginIdentifier,
76
76
  isOfficialMarketplaceName,
77
77
  parsePluginIdentifier
78
- } from "./chunk-hcp4pras.js";
78
+ } from "./chunk-epb53khk.js";
79
79
  import"./chunk-var1et7e.js";
80
80
  import"./chunk-ehtwnxpg.js";
81
- import"./chunk-tz1m8223.js";
82
- import"./chunk-sf7akcrv.js";
81
+ import"./chunk-ypdqbtxz.js";
82
+ import"./chunk-h0wp75kr.js";
83
83
  import"./chunk-2f6hs25r.js";
84
- import"./chunk-6kapfy0j.js";
84
+ import"./chunk-mqmqyj64.js";
85
85
  import"./chunk-2gzv8nrw.js";
86
86
  import"./chunk-cgfdkzhb.js";
87
87
  import"./chunk-s38qgqfs.js";
88
- import"./chunk-sjy1sd8p.js";
89
- import"./chunk-1m0b0qpk.js";
88
+ import"./chunk-c38m15b4.js";
89
+ import"./chunk-8xbsaj66.js";
90
90
  import"./chunk-9r28w6ye.js";
91
- import"./chunk-jycf23m2.js";
92
- import"./chunk-3xjxwc8k.js";
91
+ import"./chunk-pyq7qsqm.js";
92
+ import"./chunk-9ks728q8.js";
93
93
  import"./chunk-5ycqyqbj.js";
94
94
  import"./chunk-t0twk3e5.js";
95
95
  import"./chunk-ps49ymvj.js";
96
96
  import"./chunk-p7vkh4wx.js";
97
97
  import"./chunk-4tre5ddg.js";
98
- import"./chunk-s9755385.js";
98
+ import"./chunk-jshec16k.js";
99
99
  import"./chunk-3nmhzccb.js";
100
100
  import"./chunk-4jm600zv.js";
101
101
  import"./chunk-hgjn6jcc.js";
102
- import"./chunk-h3yhryqv.js";
102
+ import"./chunk-k8k3nj3p.js";
103
103
  import"./chunk-rkmwx1yz.js";
104
104
  import {
105
105
  init_events,
106
106
  logOTelEvent,
107
107
  redactIfDisabled
108
- } from "./chunk-pjkgkkgk.js";
108
+ } from "./chunk-w5pjyvkb.js";
109
109
  import"./chunk-ykr5qx9v.js";
110
- import"./chunk-c9ehyj0z.js";
111
- import"./chunk-k9x48g80.js";
112
- import"./chunk-6xrj7fhf.js";
110
+ import"./chunk-swy3hcg1.js";
111
+ import"./chunk-fytwv2vm.js";
112
+ import"./chunk-a66dpqvr.js";
113
113
  import"./chunk-2n45kpbz.js";
114
114
  import"./chunk-j50zvssc.js";
115
115
  import"./chunk-d6vexw90.js";
@@ -122,7 +122,7 @@ import {
122
122
  init_agentSdkTypes,
123
123
  init_file,
124
124
  init_workloadContext
125
- } from "./chunk-pmfdbybc.js";
125
+ } from "./chunk-1zgwrq7n.js";
126
126
  import"./chunk-w9pdqmwg.js";
127
127
  import"./chunk-mbv3f2vm.js";
128
128
  import"./chunk-z1hsgc00.js";
package/dist/cli.js CHANGED
@@ -52,7 +52,7 @@ async function main() {
52
52
  if (false) {}
53
53
  if (process.argv[2] === "--claude-in-chrome-mcp") {
54
54
  profileCheckpoint("cli_claude_in_chrome_mcp_path");
55
- const { runClaudeInChromeMcpServer } = await import("./chunk-4h9yhdc6.js");
55
+ const { runClaudeInChromeMcpServer } = await import("./chunk-81jqbdqz.js");
56
56
  await runClaudeInChromeMcpServer();
57
57
  return;
58
58
  } else if (process.argv[2] === "--chrome-native-host") {
@@ -62,21 +62,21 @@ async function main() {
62
62
  return;
63
63
  } else if (process.argv[2] === "--computer-use-mcp") {
64
64
  profileCheckpoint("cli_computer_use_mcp_path");
65
- const { runComputerUseMcpServer } = await import("./chunk-4w5k9q5e.js");
65
+ const { runComputerUseMcpServer } = await import("./chunk-3cm9fn9x.js");
66
66
  await runComputerUseMcpServer();
67
67
  return;
68
68
  }
69
69
  if (args[0] === "--daemon-worker") {
70
- const { runDaemonWorker } = await import("./chunk-541thwwe.js");
70
+ const { runDaemonWorker } = await import("./chunk-wtwmfvvx.js");
71
71
  await runDaemonWorker(args[1]);
72
72
  return;
73
73
  }
74
74
  if (false) {}
75
75
  if (args[0] === "daemon") {
76
76
  profileCheckpoint("cli_daemon_path");
77
- const { enableConfigs } = await import("./chunk-k97y5vrw.js");
77
+ const { enableConfigs } = await import("./chunk-q6vk9be3.js");
78
78
  enableConfigs();
79
- const { initSinks } = await import("./chunk-w9r4k1ts.js");
79
+ const { initSinks } = await import("./chunk-s3ma013j.js");
80
80
  initSinks();
81
81
  const { daemonMain } = await import("./chunk-fn510gqw.js");
82
82
  await daemonMain(args.slice(1));
@@ -97,11 +97,11 @@ async function main() {
97
97
  const hasTmuxFlag = args.includes("--tmux") || args.includes("--tmux=classic");
98
98
  if (hasTmuxFlag && (args.includes("-w") || args.includes("--worktree") || args.some((a) => a.startsWith("--worktree=")))) {
99
99
  profileCheckpoint("cli_tmux_worktree_fast_path");
100
- const { enableConfigs } = await import("./chunk-k97y5vrw.js");
100
+ const { enableConfigs } = await import("./chunk-q6vk9be3.js");
101
101
  enableConfigs();
102
102
  const { isWorktreeModeEnabled } = await import("./chunk-pwwa7s62.js");
103
103
  if (isWorktreeModeEnabled()) {
104
- const { execIntoTmuxWorktree } = await import("./chunk-bj6fdkbq.js");
104
+ const { execIntoTmuxWorktree } = await import("./chunk-43nh9gf2.js");
105
105
  const result = await execIntoTmuxWorktree(args);
106
106
  if (result.handled) {
107
107
  return;
@@ -121,7 +121,7 @@ async function main() {
121
121
  const { startCapturingEarlyInput } = await import("./chunk-qtfc6wdh.js");
122
122
  startCapturingEarlyInput();
123
123
  profileCheckpoint("cli_before_main_import");
124
- const { main: cliMain } = await import("./chunk-7tp0d8y6.js");
124
+ const { main: cliMain } = await import("./chunk-svpd0j81.js");
125
125
  profileCheckpoint("cli_after_main_import");
126
126
  await cliMain();
127
127
  profileCheckpoint("cli_after_main_complete");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-best",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Reverse-engineered Anthropic Claude Code CLI — interactive AI coding assistant in the terminal",
5
5
  "type": "module",
6
6
  "author": "claude-code-best <claude-code-best@proton.me>",
@@ -35,8 +35,8 @@
35
35
  ],
36
36
  "files": [
37
37
  "dist",
38
- "scripts/download-ripgrep.ts",
39
- "scripts/postinstall.cjs"
38
+ "scripts/postinstall.cjs",
39
+ "scripts/setup-chrome-mcp.mjs"
40
40
  ],
41
41
  "scripts": {
42
42
  "build": "bun run build.ts",
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Unified Chrome MCP setup script.
5
+ *
6
+ * Usage:
7
+ * node scripts/setup-chrome-mcp.mjs # Run full setup (fix-permissions → register → doctor)
8
+ * node scripts/setup-chrome-mcp.mjs doctor # Run a single sub-command
9
+ */
10
+
11
+ import { execFileSync } from "node:child_process";
12
+ import { dirname, join } from "node:path";
13
+ import { fileURLToPath } from "node:url";
14
+
15
+ const __dirname = dirname(fileURLToPath(import.meta.url));
16
+ const cliPath = join(
17
+ __dirname,
18
+ "..",
19
+ "node_modules",
20
+ "mcp-chrome-bridge",
21
+ "dist",
22
+ "cli.js",
23
+ );
24
+
25
+ const userArgs = process.argv.slice(2);
26
+
27
+ if (userArgs.length > 0) {
28
+ // Forward single sub-command
29
+ execFileSync("node", [cliPath, ...userArgs], { stdio: "inherit" });
30
+ } else {
31
+ // Full setup sequence
32
+ const steps = [
33
+ ["fix-permissions"],
34
+ ["register", "--browser", "chrome"],
35
+ ["doctor"],
36
+ ];
37
+
38
+ for (let i = 0; i < steps.length; i++) {
39
+ const args = steps[i];
40
+ const isLast = i === steps.length - 1;
41
+ if (isLast) console.log(`\n[${i + 1}/${steps.length}] ${args.join(" ")}`);
42
+ execFileSync("node", [cliPath, ...args], { stdio: isLast ? "inherit" : "pipe" });
43
+ }
44
+
45
+ console.log("\nChrome MCP setup complete!");
46
+ }
@@ -1,335 +0,0 @@
1
- /**
2
- * Download ripgrep binary from GitHub releases.
3
- *
4
- * Run automatically via `bun install` (postinstall hook),
5
- * or manually: `bun run scripts/download-ripgrep.ts [--force]`
6
- *
7
- * Idempotent — skips download if the binary already exists.
8
- * Use --force to re-download.
9
- *
10
- * Environment:
11
- * - HTTPS_PROXY / HTTP_PROXY — when set, download uses `undici` + EnvHttpProxyAgent.
12
- * - RIPGREP_DOWNLOAD_BASE — override release URL prefix, e.g. mirror:
13
- * `https://ghproxy.net/https://github.com/microsoft/ripgrep-prebuilt/releases/download/v15.0.1`
14
- */
15
-
16
- import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync } from 'fs'
17
- import { setDefaultResultOrder } from 'node:dns'
18
- import { tmpdir } from 'os'
19
- import { chmodSync } from 'fs'
20
- import { spawnSync } from 'child_process'
21
- import * as path from 'path'
22
- import { fileURLToPath } from 'url'
23
-
24
- const __filename = fileURLToPath(import.meta.url)
25
- const __dirname = path.dirname(__filename)
26
-
27
- // Prefer IPv4 first — Bun on Windows sometimes fails GitHub over broken IPv6 paths.
28
- try {
29
- setDefaultResultOrder('ipv4first')
30
- } catch {
31
- /* ignore */
32
- }
33
-
34
- const RG_VERSION = '15.0.1'
35
- const DEFAULT_RELEASE_BASE = `https://github.com/microsoft/ripgrep-prebuilt/releases/download/v${RG_VERSION}`
36
- const RELEASE_BASE = (process.env.RIPGREP_DOWNLOAD_BASE ?? DEFAULT_RELEASE_BASE).replace(/\/$/, '')
37
-
38
- // --- Platform mapping ---
39
-
40
- type PlatformMapping = {
41
- target: string
42
- ext: 'tar.gz' | 'zip'
43
- }
44
-
45
- function getPlatformMapping(): PlatformMapping {
46
- const arch = process.arch
47
- const platform = process.platform
48
-
49
- if (platform === 'darwin') {
50
- if (arch === 'arm64') return { target: 'aarch64-apple-darwin', ext: 'tar.gz' }
51
- if (arch === 'x64') return { target: 'x86_64-apple-darwin', ext: 'tar.gz' }
52
- throw new Error(`Unsupported macOS arch: ${arch}`)
53
- }
54
-
55
- if (platform === 'win32') {
56
- if (arch === 'x64') return { target: 'x86_64-pc-windows-msvc', ext: 'zip' }
57
- if (arch === 'arm64') return { target: 'aarch64-pc-windows-msvc', ext: 'zip' }
58
- throw new Error(`Unsupported Windows arch: ${arch}`)
59
- }
60
-
61
- if (platform === 'linux') {
62
- const isMusl = detectMusl()
63
- if (arch === 'x64') {
64
- // x64 Linux always uses musl (statically linked, most portable)
65
- return { target: 'x86_64-unknown-linux-musl', ext: 'tar.gz' }
66
- }
67
- if (arch === 'arm64') {
68
- return isMusl
69
- ? { target: 'aarch64-unknown-linux-musl', ext: 'tar.gz' }
70
- : { target: 'aarch64-unknown-linux-gnu', ext: 'tar.gz' }
71
- }
72
- throw new Error(`Unsupported Linux arch: ${arch}`)
73
- }
74
-
75
- throw new Error(`Unsupported platform: ${platform}`)
76
- }
77
-
78
- function detectMusl(): boolean {
79
- const muslArch = process.arch === 'x64' ? 'x86_64' : 'aarch64'
80
- try {
81
- statSync(`/lib/libc.musl-${muslArch}.so.1`)
82
- return true
83
- } catch {
84
- return false
85
- }
86
- }
87
-
88
- // --- Target vendor path (must match ripgrep.ts logic) ---
89
-
90
- function getVendorDir(): string {
91
- const packageRoot = path.resolve(__dirname, '..')
92
-
93
- // Dev mode: package root has src/ directory
94
- // ripgrep.ts at src/utils/ripgrep.ts: __dirname = src/utils/
95
- // vendor path = src/utils/vendor/ripgrep/
96
- if (existsSync(path.join(packageRoot, 'src'))) {
97
- return path.resolve(packageRoot, 'src', 'utils', 'vendor', 'ripgrep')
98
- }
99
-
100
- // Published mode: compiled chunks are flat in dist/
101
- // ripgrep chunk at dist/xxxx.js: __dirname = dist/
102
- // vendor path = dist/vendor/ripgrep/
103
- return path.resolve(packageRoot, 'dist', 'vendor', 'ripgrep')
104
- }
105
-
106
- function getBinaryPath(): string {
107
- const dir = getVendorDir()
108
- const subdir = `${process.arch}-${process.platform}`
109
- const binary = process.platform === 'win32' ? 'rg.exe' : 'rg'
110
- return path.resolve(dir, subdir, binary)
111
- }
112
-
113
- // --- Download & extract ---
114
-
115
- function proxyEnvSet(): boolean {
116
- const v = (s: string | undefined) => (s ?? '').trim()
117
- return !!(
118
- v(process.env.HTTPS_PROXY) ||
119
- v(process.env.HTTP_PROXY) ||
120
- v(process.env.ALL_PROXY) ||
121
- v(process.env.https_proxy) ||
122
- v(process.env.http_proxy)
123
- )
124
- }
125
-
126
- async function fetchRelease(url: string): Promise<Response> {
127
- if (proxyEnvSet()) {
128
- const { EnvHttpProxyAgent, fetch: undiciFetch } = await import('undici')
129
- return (await undiciFetch(url, {
130
- redirect: 'follow',
131
- dispatcher: new EnvHttpProxyAgent(),
132
- })) as unknown as Response
133
- }
134
- return await fetch(url, { redirect: 'follow' })
135
- }
136
-
137
- function tryPowerShellDownload(url: string, dest: string): boolean {
138
- const u = url.replace(/'/g, "''")
139
- const d = dest.replace(/'/g, "''")
140
- const cmd = `Invoke-WebRequest -Uri '${u}' -OutFile '${d}' -UseBasicParsing`
141
- const result = spawnSync(
142
- 'powershell.exe',
143
- ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', cmd],
144
- { stdio: 'pipe', windowsHide: true },
145
- )
146
- return result.status === 0 && existsSync(dest) && statSync(dest).size > 0
147
- }
148
-
149
- function tryCurlDownload(url: string, dest: string): boolean {
150
- const curl = process.platform === 'win32' ? 'curl.exe' : 'curl'
151
- const result = spawnSync(curl, ['-fsSL', '-L', '--fail', '-o', dest, url], {
152
- stdio: 'pipe',
153
- windowsHide: true,
154
- })
155
- return result.status === 0 && existsSync(dest) && statSync(dest).size > 0
156
- }
157
-
158
- /** Bun `fetch` on Windows can fail while browser / WinINET still works — use subprocess fallbacks. */
159
- async function downloadUrlToBuffer(url: string): Promise<Buffer> {
160
- const response = await fetchRelease(url)
161
- if (!response.ok) {
162
- throw new Error(`Download failed: ${response.status} ${response.statusText}`)
163
- }
164
- return Buffer.from(await response.arrayBuffer())
165
- }
166
-
167
- async function downloadUrlToBufferWithFallback(url: string): Promise<Buffer> {
168
- let firstError: unknown
169
- try {
170
- return await downloadUrlToBuffer(url)
171
- } catch (e) {
172
- firstError = e
173
- }
174
-
175
- const tmpRoot = path.join(tmpdir(), `ripgrep-dl-${process.pid}-${Date.now()}`)
176
- const tmpFile = path.join(tmpRoot, 'archive')
177
- mkdirSync(tmpRoot, { recursive: true })
178
- try {
179
- if (process.platform === 'win32' && tryPowerShellDownload(url, tmpFile)) {
180
- return readFileSync(tmpFile)
181
- }
182
- if (tryCurlDownload(url, tmpFile)) {
183
- return readFileSync(tmpFile)
184
- }
185
- } finally {
186
- rmSync(tmpRoot, { recursive: true, force: true })
187
- }
188
-
189
- throw firstError
190
- }
191
-
192
- function findZipEntryKey(files: Record<string, Uint8Array>, want: string): string | undefined {
193
- return Object.keys(files).find(k => {
194
- const norm = k.replace(/\\/g, '/')
195
- return norm === want || norm.endsWith(`/${want}`)
196
- })
197
- }
198
-
199
- async function downloadAndExtract(): Promise<void> {
200
- const { target, ext } = getPlatformMapping()
201
- const assetName = `ripgrep-v${RG_VERSION}-${target}.${ext}`
202
- const downloadUrl = `${RELEASE_BASE}/${assetName}`
203
-
204
- const binaryPath = getBinaryPath()
205
- const binaryDir = path.dirname(binaryPath)
206
-
207
- // Idempotent: skip if binary exists and has content
208
- const force = process.argv.includes('--force')
209
- if (!force && existsSync(binaryPath)) {
210
- const stat = statSync(binaryPath)
211
- if (stat.size > 0) {
212
- console.log(`[ripgrep] Binary already exists at ${binaryPath}, skipping.`)
213
- return
214
- }
215
- }
216
-
217
- console.log(`[ripgrep] Downloading v${RG_VERSION} for ${target}...`)
218
- console.log(`[ripgrep] URL: ${downloadUrl}`)
219
-
220
- const extractedBinary = process.platform === 'win32' ? 'rg.exe' : 'rg'
221
- const { writeFileSync } = await import('fs')
222
-
223
- try {
224
- const buffer = await downloadUrlToBufferWithFallback(downloadUrl)
225
- console.log(`[ripgrep] Downloaded ${Math.round(buffer.length / 1024)} KB`)
226
-
227
- mkdirSync(binaryDir, { recursive: true })
228
-
229
- if (ext === 'tar.gz') {
230
- const tmpDir = path.join(binaryDir, '.tmp-download')
231
- rmSync(tmpDir, { recursive: true, force: true })
232
- mkdirSync(tmpDir, { recursive: true })
233
- try {
234
- const archivePath = path.join(tmpDir, assetName)
235
- writeFileSync(archivePath, buffer)
236
- const result = spawnSync('tar', ['xzf', archivePath, '-C', tmpDir], {
237
- stdio: 'pipe',
238
- })
239
- if (result.status !== 0) {
240
- throw new Error(`tar extract failed: ${result.stderr?.toString()}`)
241
- }
242
- const srcBinary = path.join(tmpDir, extractedBinary)
243
- if (!existsSync(srcBinary)) {
244
- throw new Error(`Binary not found at expected path: ${srcBinary}`)
245
- }
246
- renameSync(srcBinary, binaryPath)
247
- } finally {
248
- rmSync(tmpDir, { recursive: true, force: true })
249
- }
250
- } else {
251
- let fflateError: unknown
252
- try {
253
- const { unzipSync } = await import('fflate')
254
- const unzipped = unzipSync(new Uint8Array(buffer))
255
- const key = findZipEntryKey(unzipped, extractedBinary)
256
- if (!key) {
257
- throw new Error(`Binary ${extractedBinary} not found in zip`)
258
- }
259
- writeFileSync(binaryPath, Buffer.from(unzipped[key]))
260
- fflateError = undefined
261
- } catch (e) {
262
- fflateError = e
263
- }
264
-
265
- if (fflateError) {
266
- // fflate failed — try PowerShell Expand-Archive on Windows, then unzip CLI
267
- const tmpDir = path.join(binaryDir, '.tmp-download')
268
- rmSync(tmpDir, { recursive: true, force: true })
269
- mkdirSync(tmpDir, { recursive: true })
270
- try {
271
- const archivePath = path.join(tmpDir, assetName)
272
- writeFileSync(archivePath, buffer)
273
-
274
- let extracted = false
275
-
276
- // On Windows, prefer PowerShell Expand-Archive
277
- if (process.platform === 'win32') {
278
- const psCmd = `Expand-Archive -Path '${archivePath.replace(/'/g, "''")}' -DestinationPath '${tmpDir.replace(/'/g, "''")}' -Force`
279
- const psResult = spawnSync(
280
- 'powershell.exe',
281
- ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', psCmd],
282
- { stdio: 'pipe', windowsHide: true },
283
- )
284
- if (psResult.status === 0) {
285
- extracted = true
286
- } else {
287
- const psErr = psResult.stderr?.toString().trim() || 'unknown error'
288
- console.log(`[ripgrep] PowerShell Expand-Archive failed: ${psErr}`)
289
- }
290
- }
291
-
292
- // Fallback: unzip CLI (Git for Windows, MSYS2, or Unix)
293
- if (!extracted) {
294
- const result = spawnSync('unzip', ['-o', archivePath, '-d', tmpDir], {
295
- stdio: 'pipe',
296
- })
297
- if (result.status !== 0) {
298
- const unzipErr = result.stderr?.toString().trim() || 'command not found'
299
- const fflateMsg = fflateError instanceof Error ? fflateError.message : String(fflateError)
300
- throw new Error(`zip extraction failed (fflate: ${fflateMsg}; unzip: ${unzipErr})`)
301
- }
302
- }
303
-
304
- const srcBinary = path.join(tmpDir, extractedBinary)
305
- if (!existsSync(srcBinary)) {
306
- throw new Error(`Binary not found at expected path: ${srcBinary}`)
307
- }
308
- renameSync(srcBinary, binaryPath)
309
- } finally {
310
- rmSync(tmpDir, { recursive: true, force: true })
311
- }
312
- }
313
- }
314
-
315
- if (process.platform !== 'win32') {
316
- chmodSync(binaryPath, 0o755)
317
- }
318
-
319
- console.log(`[ripgrep] Installed to ${binaryPath}`)
320
- } catch (e) {
321
- const msg = e instanceof Error ? e.message : String(e)
322
- const hint =
323
- 'Check network or set HTTPS_PROXY. If GitHub is blocked, set RIPGREP_DOWNLOAD_BASE to a mirror (see script header).'
324
- throw new Error(`${msg} ${hint}`)
325
- }
326
- }
327
-
328
- // --- Main ---
329
-
330
- downloadAndExtract().catch(error => {
331
- console.error(`[ripgrep] Download failed: ${error.message}`)
332
- console.error(`[ripgrep] You can install ripgrep manually: https://github.com/BurntSushi/ripgrep#installation`)
333
- // Don't exit with error code — postinstall should not break bun install
334
- process.exit(0)
335
- })