@zyycn/claudex 1.0.3-fork.3767904
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.
- package/LICENSE.md +5 -0
- package/README.md +468 -0
- package/bin/claudex.js +40 -0
- package/dist/chunk-028383m5.js +654 -0
- package/dist/chunk-03metnxx.js +83 -0
- package/dist/chunk-06saje2v.js +39 -0
- package/dist/chunk-0731m51q.js +8 -0
- package/dist/chunk-0b8kwsg7.js +1322 -0
- package/dist/chunk-0ef5aqfn.js +266 -0
- package/dist/chunk-0paqc2yw.js +15 -0
- package/dist/chunk-0q2xkmse.js +58 -0
- package/dist/chunk-0vkfrmqm.js +690 -0
- package/dist/chunk-0xjaqda8.js +1124 -0
- package/dist/chunk-0xkvxzm1.js +788 -0
- package/dist/chunk-1141xmr4.js +8 -0
- package/dist/chunk-16egjxjg.js +606 -0
- package/dist/chunk-197ypc6t.js +281 -0
- package/dist/chunk-1bznajh9.js +87 -0
- package/dist/chunk-1c04yf47.js +98 -0
- package/dist/chunk-1cbn5kxf.js +7 -0
- package/dist/chunk-1ed0q5rg.js +825 -0
- package/dist/chunk-1h2famwb.js +49 -0
- package/dist/chunk-1pq0cspt.js +5393 -0
- package/dist/chunk-1vsjpj70.js +584 -0
- package/dist/chunk-1xkekb9y.js +19 -0
- package/dist/chunk-1zmd9pc1.js +98 -0
- package/dist/chunk-21tvhhzh.js +470 -0
- package/dist/chunk-238g70xa.js +36 -0
- package/dist/chunk-27xc1csx.js +104 -0
- package/dist/chunk-28eznw6x.js +266 -0
- package/dist/chunk-29pq2e6e.js +162 -0
- package/dist/chunk-2a42s11t.js +412 -0
- package/dist/chunk-2degyn49.js +696 -0
- package/dist/chunk-2eykm0j0.js +20 -0
- package/dist/chunk-2gzv8nrw.js +205 -0
- package/dist/chunk-2k995y2x.js +880 -0
- package/dist/chunk-2nayx6q1.js +63 -0
- package/dist/chunk-2nhwtayn.js +285 -0
- package/dist/chunk-2pfz17d6.js +89 -0
- package/dist/chunk-2q98zgr7.js +120 -0
- package/dist/chunk-2r6p51j7.js +40 -0
- package/dist/chunk-2t3vw4tx.js +22820 -0
- package/dist/chunk-30rst83v.js +168 -0
- package/dist/chunk-34c7ey17.js +155 -0
- package/dist/chunk-34sv2j2s.js +690 -0
- package/dist/chunk-37jrk2jd.js +117 -0
- package/dist/chunk-38700exh.js +42 -0
- package/dist/chunk-38qkmq6a.js +274 -0
- package/dist/chunk-3b00105q.js +17 -0
- package/dist/chunk-3b6pmmxx.js +195 -0
- package/dist/chunk-3bbk64vc.js +8966 -0
- package/dist/chunk-3c25bcsw.js +17 -0
- package/dist/chunk-3cdajpj8.js +90 -0
- package/dist/chunk-3cr1nha2.js +198 -0
- package/dist/chunk-3d9rvrf3.js +103 -0
- package/dist/chunk-3dzknnm6.js +38 -0
- package/dist/chunk-3es29zn5.js +105 -0
- package/dist/chunk-3h8a89gy.js +46 -0
- package/dist/chunk-3pfbtkm1.js +105 -0
- package/dist/chunk-3pka9vsd.js +129 -0
- package/dist/chunk-3raf9w1p.js +115 -0
- package/dist/chunk-3vs3nm7w.js +31 -0
- package/dist/chunk-3w31rhxj.js +98 -0
- package/dist/chunk-3w6s9m5w.js +16 -0
- package/dist/chunk-3ze6jmfd.js +74 -0
- package/dist/chunk-40er4qb4.js +202 -0
- package/dist/chunk-40nmwkst.js +2838 -0
- package/dist/chunk-42ytstxy.js +109 -0
- package/dist/chunk-44fpr6jq.js +434 -0
- package/dist/chunk-495d85x1.js +8066 -0
- package/dist/chunk-49eehs1a.js +165 -0
- package/dist/chunk-4bfhat6k.js +89 -0
- package/dist/chunk-4cfef3e8.js +602 -0
- package/dist/chunk-4g3v8y12.js +23 -0
- package/dist/chunk-4jm600zv.js +13 -0
- package/dist/chunk-4n6x67m0.js +88 -0
- package/dist/chunk-4qz9vbs1.js +349 -0
- package/dist/chunk-4r4hb7td.js +564 -0
- package/dist/chunk-4tabtkpc.js +496 -0
- package/dist/chunk-4yd15ach.js +84 -0
- package/dist/chunk-4zfkzkt6.js +37 -0
- package/dist/chunk-50kxdgx6.js +255 -0
- package/dist/chunk-55wgxwa9.js +13877 -0
- package/dist/chunk-56jgazae.js +28 -0
- package/dist/chunk-56xwtm1c.js +229 -0
- package/dist/chunk-5nvye4tw.js +69 -0
- package/dist/chunk-5qe9gb40.js +99 -0
- package/dist/chunk-5vx14htd.js +87 -0
- package/dist/chunk-5y1tah98.js +756 -0
- package/dist/chunk-64wxa5zw.js +810 -0
- package/dist/chunk-65s8h28p.js +123 -0
- package/dist/chunk-6bd8brc4.js +48 -0
- package/dist/chunk-6dec7yq0.js +79 -0
- package/dist/chunk-6dj5t602.js +341 -0
- package/dist/chunk-6ghjp8m8.js +87 -0
- package/dist/chunk-6gr3c3w9.js +378 -0
- package/dist/chunk-6n2qgm9v.js +8 -0
- package/dist/chunk-6tq2v3rk.js +186 -0
- package/dist/chunk-6v4a0yqc.js +299 -0
- package/dist/chunk-73rpbt04.js +1947 -0
- package/dist/chunk-760252na.js +101 -0
- package/dist/chunk-7739pg2c.js +4261 -0
- package/dist/chunk-7956bsy7.js +85 -0
- package/dist/chunk-7aw745vx.js +40175 -0
- package/dist/chunk-7e6ahfxz.js +61 -0
- package/dist/chunk-7en5fc51.js +263 -0
- package/dist/chunk-7gf30dzb.js +184 -0
- package/dist/chunk-7kpp8d5g.js +644 -0
- package/dist/chunk-7m2nd8da.js +110 -0
- package/dist/chunk-7wb627p2.js +418 -0
- package/dist/chunk-7wm5s02e.js +216 -0
- package/dist/chunk-7x9kyp5a.js +780 -0
- package/dist/chunk-7zaxrfnt.js +42 -0
- package/dist/chunk-808756xy.js +348 -0
- package/dist/chunk-819jqhcr.js +192 -0
- package/dist/chunk-83hfzbx3.js +10 -0
- package/dist/chunk-83myqqga.js +642 -0
- package/dist/chunk-84xggq3w.js +713 -0
- package/dist/chunk-85n4mydq.js +100 -0
- package/dist/chunk-86czeeyf.js +38 -0
- package/dist/chunk-8aww16wk.js +26840 -0
- package/dist/chunk-8bedvdm1.js +32 -0
- package/dist/chunk-8hq5kk3y.js +44 -0
- package/dist/chunk-8jmc7234.js +3198 -0
- package/dist/chunk-8jq1r68j.js +5946 -0
- package/dist/chunk-8mtb0zzs.js +40 -0
- package/dist/chunk-8qm7hxn7.js +27 -0
- package/dist/chunk-8tnsngw2.js +31 -0
- package/dist/chunk-8y0qvap3.js +333 -0
- package/dist/chunk-8y12jxg8.js +10 -0
- package/dist/chunk-8ymf4e6z.js +48 -0
- package/dist/chunk-90c8d4yc.js +1549 -0
- package/dist/chunk-90wp6wez.js +10510 -0
- package/dist/chunk-97q4f0d5.js +160 -0
- package/dist/chunk-9gbamk79.js +93 -0
- package/dist/chunk-9k2drwej.js +106 -0
- package/dist/chunk-9nta4x35.js +726 -0
- package/dist/chunk-9v90tzwk.js +175 -0
- package/dist/chunk-a8ejc632.js +3094 -0
- package/dist/chunk-a8fvd2bk.js +224 -0
- package/dist/chunk-a8pyxxmz.js +374 -0
- package/dist/chunk-a9vdeb6y.js +258 -0
- package/dist/chunk-a9zh40sj.js +48 -0
- package/dist/chunk-abmaztjr.js +157 -0
- package/dist/chunk-actwcnvp.js +69 -0
- package/dist/chunk-acy41n63.js +339 -0
- package/dist/chunk-ah8ppcb2.js +176 -0
- package/dist/chunk-aj276jn4.js +95 -0
- package/dist/chunk-ajs4f0bc.js +4521 -0
- package/dist/chunk-as7vh4kb.js +140 -0
- package/dist/chunk-atjpyqps.js +250 -0
- package/dist/chunk-azzv8k3w.js +724 -0
- package/dist/chunk-b2k6rctr.js +225 -0
- package/dist/chunk-b3e5kx55.js +602 -0
- package/dist/chunk-b4wg70y1.js +54 -0
- package/dist/chunk-b5x836wt.js +114 -0
- package/dist/chunk-b75fzr8e.js +969 -0
- package/dist/chunk-b8m6vy4x.js +86 -0
- package/dist/chunk-b8x1gk3y.js +1299 -0
- package/dist/chunk-bjqw6798.js +328 -0
- package/dist/chunk-bm1qb16p.js +17 -0
- package/dist/chunk-bpkdecb4.js +267 -0
- package/dist/chunk-bqfnp99q.js +477 -0
- package/dist/chunk-bvp4dgm4.js +182 -0
- package/dist/chunk-bwwtzjsw.js +28 -0
- package/dist/chunk-by7f0myv.js +91 -0
- package/dist/chunk-by9nr4w6.js +442 -0
- package/dist/chunk-c2nsc73g.js +1579 -0
- package/dist/chunk-c5dc5tw8.js +275 -0
- package/dist/chunk-cdz5yb0r.js +57 -0
- package/dist/chunk-cfv996bs.js +22 -0
- package/dist/chunk-cgfdkzhb.js +12 -0
- package/dist/chunk-cjxa22k7.js +438 -0
- package/dist/chunk-crkef7n3.js +10476 -0
- package/dist/chunk-cssdmv6r.js +127 -0
- package/dist/chunk-d69y9a95.js +1316 -0
- package/dist/chunk-d6qpsqd1.js +91 -0
- package/dist/chunk-d6rxfmhy.js +4389 -0
- package/dist/chunk-d88jf4t3.js +525 -0
- package/dist/chunk-d8ksq0y0.js +26 -0
- package/dist/chunk-d9kz373t.js +122 -0
- package/dist/chunk-ddk0ak7r.js +63 -0
- package/dist/chunk-ddqs9xnj.js +173 -0
- package/dist/chunk-detc4mva.js +99 -0
- package/dist/chunk-dfg36kvt.js +691 -0
- package/dist/chunk-dgqrcy74.js +48 -0
- package/dist/chunk-dhd6zm3z.js +1095 -0
- package/dist/chunk-dnh7jtpb.js +37 -0
- package/dist/chunk-dq9afpqh.js +432 -0
- package/dist/chunk-dqqfd54g.js +672 -0
- package/dist/chunk-dstxhxsx.js +121 -0
- package/dist/chunk-dv1wfr85.js +6373 -0
- package/dist/chunk-dw5yr66c.js +109 -0
- package/dist/chunk-dx6pnab5.js +56 -0
- package/dist/chunk-dz5j8gp2.js +66 -0
- package/dist/chunk-e5pntxye.js +37 -0
- package/dist/chunk-ec2tspnc.js +253 -0
- package/dist/chunk-eebcvtbb.js +1646 -0
- package/dist/chunk-egentr97.js +328 -0
- package/dist/chunk-ehtwnxpg.js +1591 -0
- package/dist/chunk-en4dwrtx.js +674 -0
- package/dist/chunk-enjbm16s.js +212 -0
- package/dist/chunk-epf7hfx9.js +130 -0
- package/dist/chunk-eqp1rfft.js +17 -0
- package/dist/chunk-er596fa7.js +246 -0
- package/dist/chunk-ewadzrm8.js +103 -0
- package/dist/chunk-ey1kf1m1.js +96 -0
- package/dist/chunk-f2xj33w0.js +59 -0
- package/dist/chunk-f5ma3nh5.js +3436 -0
- package/dist/chunk-f8vjkfqy.js +169 -0
- package/dist/chunk-fbpftpf0.js +69 -0
- package/dist/chunk-fbv4apne.js +51 -0
- package/dist/chunk-fka484jr.js +142 -0
- package/dist/chunk-fmkhaba7.js +1585 -0
- package/dist/chunk-fny8kwbq.js +88 -0
- package/dist/chunk-fvjqz54k.js +297 -0
- package/dist/chunk-fxdk70se.js +457 -0
- package/dist/chunk-fyc5fepv.js +10 -0
- package/dist/chunk-fytfjpnf.js +400 -0
- package/dist/chunk-fz99t69n.js +152 -0
- package/dist/chunk-g0j0t6qk.js +26 -0
- package/dist/chunk-g338npwr.js +1061 -0
- package/dist/chunk-g3t0act8.js +8 -0
- package/dist/chunk-g5xn13xx.js +143 -0
- package/dist/chunk-gc1s3jhh.js +40767 -0
- package/dist/chunk-gd397pcz.js +54 -0
- package/dist/chunk-gee88a3c.js +2642 -0
- package/dist/chunk-gmwkf29y.js +372 -0
- package/dist/chunk-gsxnne70.js +6106 -0
- package/dist/chunk-gv0tqhg0.js +118 -0
- package/dist/chunk-gx25wmv5.js +71 -0
- package/dist/chunk-gyj242zr.js +20 -0
- package/dist/chunk-gzzfhtdv.js +7189 -0
- package/dist/chunk-h0qngp9w.js +157 -0
- package/dist/chunk-h0rbjg6x.js +55 -0
- package/dist/chunk-h0xeqdrp.js +258 -0
- package/dist/chunk-h5f90qy3.js +220 -0
- package/dist/chunk-hakdhagh.js +16606 -0
- package/dist/chunk-hamj71dy.js +40 -0
- package/dist/chunk-hbrqcjwt.js +2334 -0
- package/dist/chunk-heg1nmw6.js +16 -0
- package/dist/chunk-hh7cmy4k.js +20 -0
- package/dist/chunk-hhxj3n5k.js +153 -0
- package/dist/chunk-hk9xz7gk.js +118 -0
- package/dist/chunk-hmxkx429.js +108 -0
- package/dist/chunk-hq6y1jbc.js +89 -0
- package/dist/chunk-hqmz36b3.js +552 -0
- package/dist/chunk-hrqdc2z6.js +208 -0
- package/dist/chunk-hzhe8ygc.js +547 -0
- package/dist/chunk-j0xd989k.js +655 -0
- package/dist/chunk-j2k4p94p.js +55 -0
- package/dist/chunk-j3a4p81y.js +184 -0
- package/dist/chunk-j5hc27hv.js +444 -0
- package/dist/chunk-j64ga6ta.js +8035 -0
- package/dist/chunk-janw82mh.js +1864 -0
- package/dist/chunk-jce5r25x.js +18 -0
- package/dist/chunk-jd32zbps.js +15 -0
- package/dist/chunk-jdgeec04.js +4249 -0
- package/dist/chunk-jgpqexxb.js +83 -0
- package/dist/chunk-jja22ke5.js +81 -0
- package/dist/chunk-jm91zc2r.js +102 -0
- package/dist/chunk-jnhkref0.js +30 -0
- package/dist/chunk-jrhwm6kh.js +1556 -0
- package/dist/chunk-jttemgp6.js +532 -0
- package/dist/chunk-jtx453jx.js +281 -0
- package/dist/chunk-jwft70vy.js +476 -0
- package/dist/chunk-jx817w05.js +11 -0
- package/dist/chunk-jzmz18nn.js +65 -0
- package/dist/chunk-k0p9w03v.js +4957 -0
- package/dist/chunk-k0ymf9zj.js +113 -0
- package/dist/chunk-k1tve81h.js +345 -0
- package/dist/chunk-k2bkmhp4.js +385 -0
- package/dist/chunk-k2qkkhf9.js +463 -0
- package/dist/chunk-k542zrk6.js +88 -0
- package/dist/chunk-kez03ppq.js +490 -0
- package/dist/chunk-kgmzdyrz.js +242 -0
- package/dist/chunk-khs0jvy0.js +216 -0
- package/dist/chunk-kr244txf.js +306 -0
- package/dist/chunk-ksawj46w.js +536 -0
- package/dist/chunk-kwekc97v.js +18 -0
- package/dist/chunk-kz6f106c.js +6956 -0
- package/dist/chunk-kzmfv2aw.js +745 -0
- package/dist/chunk-m26pp852.js +87 -0
- package/dist/chunk-m4pma84k.js +2057 -0
- package/dist/chunk-mfp30vsr.js +458 -0
- package/dist/chunk-mjn6p2km.js +92 -0
- package/dist/chunk-mk6tjz0j.js +469 -0
- package/dist/chunk-mqcwefg3.js +105 -0
- package/dist/chunk-mqm3kg01.js +61 -0
- package/dist/chunk-mt25echc.js +6157 -0
- package/dist/chunk-mw9ve19d.js +277 -0
- package/dist/chunk-mxt2wn9a.js +131 -0
- package/dist/chunk-n0qaeaa5.js +256 -0
- package/dist/chunk-n154ybpk.js +1919 -0
- package/dist/chunk-n2ktrmm8.js +62 -0
- package/dist/chunk-n59gj2nk.js +438 -0
- package/dist/chunk-n7ttdtk0.js +641 -0
- package/dist/chunk-nb9z2xs5.js +128 -0
- package/dist/chunk-nh8ssb02.js +88 -0
- package/dist/chunk-nj17bhkh.js +125 -0
- package/dist/chunk-njmw3yt4.js +173564 -0
- package/dist/chunk-njwzgb7j.js +61 -0
- package/dist/chunk-nka1g8f4.js +773 -0
- package/dist/chunk-nq0fxyxh.js +752 -0
- package/dist/chunk-nt837qt9.js +21 -0
- package/dist/chunk-nwsmn6zm.js +15 -0
- package/dist/chunk-nx4e896a.js +208 -0
- package/dist/chunk-p2816w9z.js +1486 -0
- package/dist/chunk-p2d5nh3g.js +342 -0
- package/dist/chunk-p331ghzg.js +391 -0
- package/dist/chunk-p4qrpz5a.js +99 -0
- package/dist/chunk-p8syd69s.js +47 -0
- package/dist/chunk-pdyq9kvn.js +83 -0
- package/dist/chunk-pkb4qnmq.js +1391 -0
- package/dist/chunk-pkcx8qa3.js +154 -0
- package/dist/chunk-pmsp9ed2.js +34 -0
- package/dist/chunk-pnmh6v4t.js +373 -0
- package/dist/chunk-ps49ymvj.js +43 -0
- package/dist/chunk-pwwa7s62.js +11 -0
- package/dist/chunk-pxy618ae.js +714 -0
- package/dist/chunk-py5y9jh1.js +38 -0
- package/dist/chunk-pzz93fck.js +173 -0
- package/dist/chunk-q25bjaev.js +15 -0
- package/dist/chunk-q756tpn6.js +765 -0
- package/dist/chunk-qbt1tq74.js +145 -0
- package/dist/chunk-qkkj0em0.js +104 -0
- package/dist/chunk-qnfx3qtx.js +617 -0
- package/dist/chunk-qp2qdcda.js +100 -0
- package/dist/chunk-qpkxg63w.js +160 -0
- package/dist/chunk-qqfa0dqg.js +2343 -0
- package/dist/chunk-qsd1r4pm.js +9300 -0
- package/dist/chunk-qseetcxd.js +908 -0
- package/dist/chunk-qvt2hjv0.js +849 -0
- package/dist/chunk-qxdv72g8.js +93 -0
- package/dist/chunk-qy0vwqgp.js +194 -0
- package/dist/chunk-qz2x630m.js +49145 -0
- package/dist/chunk-qzqagb7y.js +87 -0
- package/dist/chunk-r14xvkat.js +641 -0
- package/dist/chunk-r6b58y3x.js +17 -0
- package/dist/chunk-r6z6t5wr.js +97 -0
- package/dist/chunk-r855fz3z.js +41 -0
- package/dist/chunk-raqgs410.js +116 -0
- package/dist/chunk-rd5rdsdz.js +95 -0
- package/dist/chunk-renve22b.js +524 -0
- package/dist/chunk-res7qrc9.js +820 -0
- package/dist/chunk-rk7ns7gp.js +220 -0
- package/dist/chunk-rm0q8bwx.js +271 -0
- package/dist/chunk-rm56f6q8.js +41 -0
- package/dist/chunk-rn0v1hk8.js +34 -0
- package/dist/chunk-rrxeqt07.js +73 -0
- package/dist/chunk-rvgeep5b.js +117 -0
- package/dist/chunk-rx4c84ah.js +86 -0
- package/dist/chunk-s3pzvdss.js +50 -0
- package/dist/chunk-s5vqcxp0.js +54 -0
- package/dist/chunk-s88vzmek.js +542 -0
- package/dist/chunk-sazb7y67.js +279 -0
- package/dist/chunk-sbbj6ta3.js +1711 -0
- package/dist/chunk-sd36yzx8.js +954 -0
- package/dist/chunk-sdj9b9wh.js +782 -0
- package/dist/chunk-shb6nvk6.js +27 -0
- package/dist/chunk-szj5wvdy.js +28 -0
- package/dist/chunk-t0rgmccj.js +39 -0
- package/dist/chunk-t1jh3jk8.js +3036 -0
- package/dist/chunk-t3360k46.js +75 -0
- package/dist/chunk-t3h6pwp3.js +112 -0
- package/dist/chunk-t5ymtx9c.js +1493 -0
- package/dist/chunk-t6p76a55.js +120 -0
- package/dist/chunk-t7fdh24y.js +648 -0
- package/dist/chunk-texzbcna.js +716 -0
- package/dist/chunk-tjw7n4me.js +21933 -0
- package/dist/chunk-tjyhp966.js +24 -0
- package/dist/chunk-tnd5xbeh.js +802 -0
- package/dist/chunk-trfa7dbr.js +998 -0
- package/dist/chunk-ts2p6bv1.js +224 -0
- package/dist/chunk-tssr3fyd.js +287 -0
- package/dist/chunk-ttk5dzz8.js +25 -0
- package/dist/chunk-tvhjre1h.js +316 -0
- package/dist/chunk-txndc2j2.js +70 -0
- package/dist/chunk-v1kzp02e.js +785 -0
- package/dist/chunk-v2pc6h28.js +32 -0
- package/dist/chunk-v78fj8by.js +145 -0
- package/dist/chunk-v90xv5n9.js +157 -0
- package/dist/chunk-v9smspw2.js +4301 -0
- package/dist/chunk-vest0y6x.js +3830 -0
- package/dist/chunk-vf5sd1nq.js +12 -0
- package/dist/chunk-vhjx5fag.js +56 -0
- package/dist/chunk-vjtbtamj.js +165 -0
- package/dist/chunk-vkkay00s.js +229 -0
- package/dist/chunk-vqc05a0b.js +121 -0
- package/dist/chunk-vqk1n5qr.js +63 -0
- package/dist/chunk-vqvd3qz0.js +151 -0
- package/dist/chunk-vtp96y1a.js +90 -0
- package/dist/chunk-vyjeh50y.js +2149 -0
- package/dist/chunk-vz6s9tzt.js +43 -0
- package/dist/chunk-w3agqtpz.js +42 -0
- package/dist/chunk-w3dz905t.js +22 -0
- package/dist/chunk-w8yw30sd.js +15 -0
- package/dist/chunk-wa6b7bv9.js +467 -0
- package/dist/chunk-wb36q47x.js +128 -0
- package/dist/chunk-wbnv75aa.js +114 -0
- package/dist/chunk-wcepsp07.js +1013 -0
- package/dist/chunk-wecrhvf7.js +247 -0
- package/dist/chunk-wfz0qffj.js +3939 -0
- package/dist/chunk-wgcssf6v.js +722 -0
- package/dist/chunk-wn2268qd.js +335 -0
- package/dist/chunk-wtr5hjf7.js +3443 -0
- package/dist/chunk-wzpdet3m.js +843 -0
- package/dist/chunk-x0328bb5.js +305 -0
- package/dist/chunk-x5psxyg8.js +20 -0
- package/dist/chunk-x8b7vft8.js +132 -0
- package/dist/chunk-x8n22y7f.js +5017 -0
- package/dist/chunk-xq4cfvpn.js +213 -0
- package/dist/chunk-xqdvndvx.js +3394 -0
- package/dist/chunk-xrv9qadt.js +44 -0
- package/dist/chunk-xsq9ae7x.js +90 -0
- package/dist/chunk-xszk7n10.js +14358 -0
- package/dist/chunk-xx6h50zt.js +338 -0
- package/dist/chunk-y1784krc.js +19 -0
- package/dist/chunk-yfcsc3s4.js +153 -0
- package/dist/chunk-yngvgvqm.js +103 -0
- package/dist/chunk-yntm0ebf.js +500 -0
- package/dist/chunk-yw9xqzna.js +71 -0
- package/dist/chunk-ywxd4qw4.js +22 -0
- package/dist/chunk-yysj6sxt.js +336 -0
- package/dist/chunk-yzhxz894.js +32 -0
- package/dist/chunk-yztq1rhb.js +60 -0
- package/dist/chunk-z06751ss.js +16386 -0
- package/dist/chunk-z2dp53wn.js +17 -0
- package/dist/chunk-z5cvbngc.js +520 -0
- package/dist/chunk-z6vf0bdm.js +101 -0
- package/dist/chunk-zbqfbyfb.js +247 -0
- package/dist/chunk-zc6g0qqe.js +29 -0
- package/dist/chunk-zj863fgn.js +92 -0
- package/dist/chunk-zjd1m23p.js +1152 -0
- package/dist/chunk-zk2wsm7d.js +15 -0
- package/dist/chunk-zmwhk0zy.js +750 -0
- package/dist/chunk-zpywc76a.js +862 -0
- package/dist/chunk-zqm995gk.js +71 -0
- package/dist/chunk-zsfxha74.js +17655 -0
- package/dist/cli.js +89 -0
- package/package.json +36 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
Select,
|
|
4
|
+
Spinner,
|
|
5
|
+
cleanupWorktree,
|
|
6
|
+
exports_sessionStorage,
|
|
7
|
+
getCurrentWorktreeSession,
|
|
8
|
+
getPlansDirectory,
|
|
9
|
+
gracefulShutdown,
|
|
10
|
+
init_Shell,
|
|
11
|
+
init_Spinner,
|
|
12
|
+
init_gracefulShutdown,
|
|
13
|
+
init_plans,
|
|
14
|
+
init_sample,
|
|
15
|
+
init_select,
|
|
16
|
+
init_sessionStorage,
|
|
17
|
+
init_worktree,
|
|
18
|
+
keepWorktree,
|
|
19
|
+
killTmuxSession,
|
|
20
|
+
sample_default,
|
|
21
|
+
setCwd
|
|
22
|
+
} from "./chunk-njmw3yt4.js";
|
|
23
|
+
import {
|
|
24
|
+
Dialog,
|
|
25
|
+
init_Dialog
|
|
26
|
+
} from "./chunk-k2qkkhf9.js";
|
|
27
|
+
import {
|
|
28
|
+
ThemedBox_default,
|
|
29
|
+
ThemedText,
|
|
30
|
+
init_ink,
|
|
31
|
+
require_compiler_runtime
|
|
32
|
+
} from "./chunk-8aww16wk.js";
|
|
33
|
+
import {
|
|
34
|
+
require_jsx_dev_runtime,
|
|
35
|
+
require_react
|
|
36
|
+
} from "./chunk-g338npwr.js";
|
|
37
|
+
import {
|
|
38
|
+
init_analytics,
|
|
39
|
+
logEvent
|
|
40
|
+
} from "./chunk-h0rbjg6x.js";
|
|
41
|
+
import {
|
|
42
|
+
execFileNoThrow,
|
|
43
|
+
init_execFileNoThrow
|
|
44
|
+
} from "./chunk-gzzfhtdv.js";
|
|
45
|
+
import {
|
|
46
|
+
init_debug,
|
|
47
|
+
logForDebugging
|
|
48
|
+
} from "./chunk-sbbj6ta3.js";
|
|
49
|
+
import {
|
|
50
|
+
__esm,
|
|
51
|
+
__toCommonJS,
|
|
52
|
+
__toESM
|
|
53
|
+
} from "./chunk-qp2qdcda.js";
|
|
54
|
+
|
|
55
|
+
// src/components/WorktreeExitDialog.tsx
|
|
56
|
+
function recordWorktreeExit() {
|
|
57
|
+
(init_sessionStorage(), __toCommonJS(exports_sessionStorage)).saveWorktreeState(null);
|
|
58
|
+
}
|
|
59
|
+
function WorktreeExitDialog({
|
|
60
|
+
onDone,
|
|
61
|
+
onCancel
|
|
62
|
+
}) {
|
|
63
|
+
const [status, setStatus] = import_react.useState("loading");
|
|
64
|
+
const [changes, setChanges] = import_react.useState([]);
|
|
65
|
+
const [commitCount, setCommitCount] = import_react.useState(0);
|
|
66
|
+
const [resultMessage, setResultMessage] = import_react.useState();
|
|
67
|
+
const worktreeSession = getCurrentWorktreeSession();
|
|
68
|
+
import_react.useEffect(() => {
|
|
69
|
+
async function loadChanges() {
|
|
70
|
+
let changeLines = [];
|
|
71
|
+
const gitStatus = await execFileNoThrow("git", ["status", "--porcelain"]);
|
|
72
|
+
if (gitStatus.stdout) {
|
|
73
|
+
changeLines = gitStatus.stdout.split(`
|
|
74
|
+
`).filter((_) => _.trim() !== "");
|
|
75
|
+
setChanges(changeLines);
|
|
76
|
+
}
|
|
77
|
+
if (worktreeSession) {
|
|
78
|
+
const {
|
|
79
|
+
stdout: commitsStr
|
|
80
|
+
} = await execFileNoThrow("git", ["rev-list", "--count", `${worktreeSession.originalHeadCommit}..HEAD`]);
|
|
81
|
+
const count = parseInt(commitsStr.trim()) || 0;
|
|
82
|
+
setCommitCount(count);
|
|
83
|
+
if (changeLines.length === 0 && count === 0) {
|
|
84
|
+
setStatus("removing");
|
|
85
|
+
cleanupWorktree().then(() => {
|
|
86
|
+
process.chdir(worktreeSession.originalCwd);
|
|
87
|
+
setCwd(worktreeSession.originalCwd);
|
|
88
|
+
recordWorktreeExit();
|
|
89
|
+
getPlansDirectory.cache.clear?.();
|
|
90
|
+
setResultMessage("Worktree removed (no changes)");
|
|
91
|
+
}).catch((error) => {
|
|
92
|
+
logForDebugging(`Failed to clean up worktree: ${error}`, {
|
|
93
|
+
level: "error"
|
|
94
|
+
});
|
|
95
|
+
setResultMessage("Worktree cleanup failed, exiting anyway");
|
|
96
|
+
}).then(() => {
|
|
97
|
+
setStatus("done");
|
|
98
|
+
});
|
|
99
|
+
return;
|
|
100
|
+
} else {
|
|
101
|
+
setStatus("asking");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
loadChanges();
|
|
106
|
+
}, [worktreeSession]);
|
|
107
|
+
import_react.useEffect(() => {
|
|
108
|
+
if (status === "done") {
|
|
109
|
+
onDone(resultMessage);
|
|
110
|
+
}
|
|
111
|
+
}, [status, onDone, resultMessage]);
|
|
112
|
+
if (!worktreeSession) {
|
|
113
|
+
onDone("No active worktree session found", {
|
|
114
|
+
display: "system"
|
|
115
|
+
});
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
if (status === "loading" || status === "done") {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
async function handleSelect(value) {
|
|
122
|
+
if (!worktreeSession)
|
|
123
|
+
return;
|
|
124
|
+
const hasTmux = Boolean(worktreeSession.tmuxSessionName);
|
|
125
|
+
if (value === "keep" || value === "keep-with-tmux") {
|
|
126
|
+
setStatus("keeping");
|
|
127
|
+
logEvent("tengu_worktree_kept", {
|
|
128
|
+
commits: commitCount,
|
|
129
|
+
changed_files: changes.length
|
|
130
|
+
});
|
|
131
|
+
await keepWorktree();
|
|
132
|
+
process.chdir(worktreeSession.originalCwd);
|
|
133
|
+
setCwd(worktreeSession.originalCwd);
|
|
134
|
+
recordWorktreeExit();
|
|
135
|
+
getPlansDirectory.cache.clear?.();
|
|
136
|
+
if (hasTmux) {
|
|
137
|
+
setResultMessage(`Worktree kept. Your work is saved at ${worktreeSession.worktreePath} on branch ${worktreeSession.worktreeBranch}. Reattach to tmux session with: tmux attach -t ${worktreeSession.tmuxSessionName}`);
|
|
138
|
+
} else {
|
|
139
|
+
setResultMessage(`Worktree kept. Your work is saved at ${worktreeSession.worktreePath} on branch ${worktreeSession.worktreeBranch}`);
|
|
140
|
+
}
|
|
141
|
+
setStatus("done");
|
|
142
|
+
} else if (value === "keep-kill-tmux") {
|
|
143
|
+
setStatus("keeping");
|
|
144
|
+
logEvent("tengu_worktree_kept", {
|
|
145
|
+
commits: commitCount,
|
|
146
|
+
changed_files: changes.length
|
|
147
|
+
});
|
|
148
|
+
if (worktreeSession.tmuxSessionName) {
|
|
149
|
+
await killTmuxSession(worktreeSession.tmuxSessionName);
|
|
150
|
+
}
|
|
151
|
+
await keepWorktree();
|
|
152
|
+
process.chdir(worktreeSession.originalCwd);
|
|
153
|
+
setCwd(worktreeSession.originalCwd);
|
|
154
|
+
recordWorktreeExit();
|
|
155
|
+
getPlansDirectory.cache.clear?.();
|
|
156
|
+
setResultMessage(`Worktree kept at ${worktreeSession.worktreePath} on branch ${worktreeSession.worktreeBranch}. Tmux session terminated.`);
|
|
157
|
+
setStatus("done");
|
|
158
|
+
} else if (value === "remove" || value === "remove-with-tmux") {
|
|
159
|
+
setStatus("removing");
|
|
160
|
+
logEvent("tengu_worktree_removed", {
|
|
161
|
+
commits: commitCount,
|
|
162
|
+
changed_files: changes.length
|
|
163
|
+
});
|
|
164
|
+
if (worktreeSession.tmuxSessionName) {
|
|
165
|
+
await killTmuxSession(worktreeSession.tmuxSessionName);
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
await cleanupWorktree();
|
|
169
|
+
process.chdir(worktreeSession.originalCwd);
|
|
170
|
+
setCwd(worktreeSession.originalCwd);
|
|
171
|
+
recordWorktreeExit();
|
|
172
|
+
getPlansDirectory.cache.clear?.();
|
|
173
|
+
} catch (error) {
|
|
174
|
+
logForDebugging(`Failed to clean up worktree: ${error}`, {
|
|
175
|
+
level: "error"
|
|
176
|
+
});
|
|
177
|
+
setResultMessage("Worktree cleanup failed, exiting anyway");
|
|
178
|
+
setStatus("done");
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const tmuxNote = hasTmux ? " Tmux session terminated." : "";
|
|
182
|
+
if (commitCount > 0 && changes.length > 0) {
|
|
183
|
+
setResultMessage(`Worktree removed. ${commitCount} ${commitCount === 1 ? "commit" : "commits"} and uncommitted changes were discarded.${tmuxNote}`);
|
|
184
|
+
} else if (commitCount > 0) {
|
|
185
|
+
setResultMessage(`Worktree removed. ${commitCount} ${commitCount === 1 ? "commit" : "commits"} on ${worktreeSession.worktreeBranch} ${commitCount === 1 ? "was" : "were"} discarded.${tmuxNote}`);
|
|
186
|
+
} else if (changes.length > 0) {
|
|
187
|
+
setResultMessage(`Worktree removed. Uncommitted changes were discarded.${tmuxNote}`);
|
|
188
|
+
} else {
|
|
189
|
+
setResultMessage(`Worktree removed.${tmuxNote}`);
|
|
190
|
+
}
|
|
191
|
+
setStatus("done");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (status === "keeping") {
|
|
195
|
+
return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
|
|
196
|
+
flexDirection: "row",
|
|
197
|
+
marginY: 1,
|
|
198
|
+
children: [
|
|
199
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
200
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
|
|
201
|
+
children: "Keeping worktree\u2026"
|
|
202
|
+
}, undefined, false, undefined, this)
|
|
203
|
+
]
|
|
204
|
+
}, undefined, true, undefined, this);
|
|
205
|
+
}
|
|
206
|
+
if (status === "removing") {
|
|
207
|
+
return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
|
|
208
|
+
flexDirection: "row",
|
|
209
|
+
marginY: 1,
|
|
210
|
+
children: [
|
|
211
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
212
|
+
/* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
|
|
213
|
+
children: "Removing worktree\u2026"
|
|
214
|
+
}, undefined, false, undefined, this)
|
|
215
|
+
]
|
|
216
|
+
}, undefined, true, undefined, this);
|
|
217
|
+
}
|
|
218
|
+
const branchName = worktreeSession.worktreeBranch;
|
|
219
|
+
const hasUncommitted = changes.length > 0;
|
|
220
|
+
const hasCommits = commitCount > 0;
|
|
221
|
+
let subtitle = "";
|
|
222
|
+
if (hasUncommitted && hasCommits) {
|
|
223
|
+
subtitle = `You have ${changes.length} uncommitted ${changes.length === 1 ? "file" : "files"} and ${commitCount} ${commitCount === 1 ? "commit" : "commits"} on ${branchName}. All will be lost if you remove.`;
|
|
224
|
+
} else if (hasUncommitted) {
|
|
225
|
+
subtitle = `You have ${changes.length} uncommitted ${changes.length === 1 ? "file" : "files"}. These will be lost if you remove the worktree.`;
|
|
226
|
+
} else if (hasCommits) {
|
|
227
|
+
subtitle = `You have ${commitCount} ${commitCount === 1 ? "commit" : "commits"} on ${branchName}. The branch will be deleted if you remove the worktree.`;
|
|
228
|
+
} else {
|
|
229
|
+
subtitle = "You are working in a worktree. Keep it to continue working there, or remove it to clean up.";
|
|
230
|
+
}
|
|
231
|
+
function handleCancel() {
|
|
232
|
+
if (onCancel) {
|
|
233
|
+
onCancel();
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
handleSelect("keep");
|
|
237
|
+
}
|
|
238
|
+
const removeDescription = hasUncommitted || hasCommits ? "All changes and commits will be lost." : "Clean up the worktree directory.";
|
|
239
|
+
const hasTmuxSession = Boolean(worktreeSession.tmuxSessionName);
|
|
240
|
+
const options = hasTmuxSession ? [{
|
|
241
|
+
label: "Keep worktree and tmux session",
|
|
242
|
+
value: "keep-with-tmux",
|
|
243
|
+
description: `Stays at ${worktreeSession.worktreePath}. Reattach with: tmux attach -t ${worktreeSession.tmuxSessionName}`
|
|
244
|
+
}, {
|
|
245
|
+
label: "Keep worktree, kill tmux session",
|
|
246
|
+
value: "keep-kill-tmux",
|
|
247
|
+
description: `Keeps worktree at ${worktreeSession.worktreePath}, terminates tmux session.`
|
|
248
|
+
}, {
|
|
249
|
+
label: "Remove worktree and tmux session",
|
|
250
|
+
value: "remove-with-tmux",
|
|
251
|
+
description: removeDescription
|
|
252
|
+
}] : [{
|
|
253
|
+
label: "Keep worktree",
|
|
254
|
+
value: "keep",
|
|
255
|
+
description: `Stays at ${worktreeSession.worktreePath}`
|
|
256
|
+
}, {
|
|
257
|
+
label: "Remove worktree",
|
|
258
|
+
value: "remove",
|
|
259
|
+
description: removeDescription
|
|
260
|
+
}];
|
|
261
|
+
const defaultValue = hasTmuxSession ? "keep-with-tmux" : "keep";
|
|
262
|
+
return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Dialog, {
|
|
263
|
+
title: "Exiting worktree session",
|
|
264
|
+
subtitle,
|
|
265
|
+
onCancel: handleCancel,
|
|
266
|
+
children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Select, {
|
|
267
|
+
defaultFocusValue: defaultValue,
|
|
268
|
+
options,
|
|
269
|
+
onChange: handleSelect
|
|
270
|
+
}, undefined, false, undefined, this)
|
|
271
|
+
}, undefined, false, undefined, this);
|
|
272
|
+
}
|
|
273
|
+
var import_react, jsx_dev_runtime;
|
|
274
|
+
var init_WorktreeExitDialog = __esm(() => {
|
|
275
|
+
init_analytics();
|
|
276
|
+
init_debug();
|
|
277
|
+
init_ink();
|
|
278
|
+
init_execFileNoThrow();
|
|
279
|
+
init_plans();
|
|
280
|
+
init_Shell();
|
|
281
|
+
init_worktree();
|
|
282
|
+
init_select();
|
|
283
|
+
init_Dialog();
|
|
284
|
+
init_Spinner();
|
|
285
|
+
import_react = __toESM(require_react(), 1);
|
|
286
|
+
jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
// src/components/ExitFlow.tsx
|
|
290
|
+
function getRandomGoodbyeMessage() {
|
|
291
|
+
return sample_default(GOODBYE_MESSAGES) ?? "Goodbye!";
|
|
292
|
+
}
|
|
293
|
+
function ExitFlow(t0) {
|
|
294
|
+
const $ = import_compiler_runtime.c(5);
|
|
295
|
+
const {
|
|
296
|
+
showWorktree,
|
|
297
|
+
onDone,
|
|
298
|
+
onCancel
|
|
299
|
+
} = t0;
|
|
300
|
+
let t1;
|
|
301
|
+
if ($[0] !== onDone) {
|
|
302
|
+
t1 = async function onExit2(resultMessage) {
|
|
303
|
+
onDone(resultMessage ?? getRandomGoodbyeMessage());
|
|
304
|
+
await gracefulShutdown(0, "prompt_input_exit");
|
|
305
|
+
};
|
|
306
|
+
$[0] = onDone;
|
|
307
|
+
$[1] = t1;
|
|
308
|
+
} else {
|
|
309
|
+
t1 = $[1];
|
|
310
|
+
}
|
|
311
|
+
const onExit = t1;
|
|
312
|
+
if (showWorktree) {
|
|
313
|
+
let t2;
|
|
314
|
+
if ($[2] !== onCancel || $[3] !== onExit) {
|
|
315
|
+
t2 = /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(WorktreeExitDialog, {
|
|
316
|
+
onDone: onExit,
|
|
317
|
+
onCancel
|
|
318
|
+
}, undefined, false, undefined, this);
|
|
319
|
+
$[2] = onCancel;
|
|
320
|
+
$[3] = onExit;
|
|
321
|
+
$[4] = t2;
|
|
322
|
+
} else {
|
|
323
|
+
t2 = $[4];
|
|
324
|
+
}
|
|
325
|
+
return t2;
|
|
326
|
+
}
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
var import_compiler_runtime, jsx_dev_runtime2, GOODBYE_MESSAGES;
|
|
330
|
+
var init_ExitFlow = __esm(() => {
|
|
331
|
+
init_sample();
|
|
332
|
+
init_gracefulShutdown();
|
|
333
|
+
init_WorktreeExitDialog();
|
|
334
|
+
import_compiler_runtime = __toESM(require_compiler_runtime(), 1);
|
|
335
|
+
jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
|
|
336
|
+
GOODBYE_MESSAGES = ["Goodbye!", "See ya!", "Bye!", "Catch you later!"];
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
export { ExitFlow, init_ExitFlow };
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
init_sink,
|
|
4
|
+
initializeAnalyticsSink
|
|
5
|
+
} from "./chunk-gx25wmv5.js";
|
|
6
|
+
import {
|
|
7
|
+
CACHE_PATHS,
|
|
8
|
+
attachErrorLogSink,
|
|
9
|
+
dateToFilename,
|
|
10
|
+
init_cachePaths,
|
|
11
|
+
init_log
|
|
12
|
+
} from "./chunk-yysj6sxt.js";
|
|
13
|
+
import {
|
|
14
|
+
createBufferedWriter,
|
|
15
|
+
getFsImplementation,
|
|
16
|
+
init_bufferedWriter,
|
|
17
|
+
init_cleanupRegistry,
|
|
18
|
+
init_debug,
|
|
19
|
+
init_fsOperations,
|
|
20
|
+
init_slowOperations,
|
|
21
|
+
jsonStringify,
|
|
22
|
+
logForDebugging,
|
|
23
|
+
registerCleanup
|
|
24
|
+
} from "./chunk-sbbj6ta3.js";
|
|
25
|
+
import {
|
|
26
|
+
getSessionId,
|
|
27
|
+
init_state
|
|
28
|
+
} from "./chunk-qqfa0dqg.js";
|
|
29
|
+
import {
|
|
30
|
+
axios_default,
|
|
31
|
+
init_axios
|
|
32
|
+
} from "./chunk-xszk7n10.js";
|
|
33
|
+
|
|
34
|
+
// src/utils/sinks.ts
|
|
35
|
+
init_sink();
|
|
36
|
+
|
|
37
|
+
// src/utils/errorLogSink.ts
|
|
38
|
+
init_axios();
|
|
39
|
+
init_state();
|
|
40
|
+
init_bufferedWriter();
|
|
41
|
+
init_cachePaths();
|
|
42
|
+
init_cleanupRegistry();
|
|
43
|
+
init_debug();
|
|
44
|
+
init_fsOperations();
|
|
45
|
+
init_log();
|
|
46
|
+
init_slowOperations();
|
|
47
|
+
import { dirname, join } from "path";
|
|
48
|
+
var DATE = dateToFilename(new Date);
|
|
49
|
+
function getErrorsPath() {
|
|
50
|
+
return join(CACHE_PATHS.errors(), DATE + ".jsonl");
|
|
51
|
+
}
|
|
52
|
+
function getMCPLogsPath(serverName) {
|
|
53
|
+
return join(CACHE_PATHS.mcpLogs(serverName), DATE + ".jsonl");
|
|
54
|
+
}
|
|
55
|
+
function createJsonlWriter(options) {
|
|
56
|
+
const writer = createBufferedWriter(options);
|
|
57
|
+
return {
|
|
58
|
+
write(obj) {
|
|
59
|
+
writer.write(jsonStringify(obj) + `
|
|
60
|
+
`);
|
|
61
|
+
},
|
|
62
|
+
flush: writer.flush,
|
|
63
|
+
dispose: writer.dispose
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
var logWriters = new Map;
|
|
67
|
+
function getLogWriter(path) {
|
|
68
|
+
let writer = logWriters.get(path);
|
|
69
|
+
if (!writer) {
|
|
70
|
+
const dir = dirname(path);
|
|
71
|
+
writer = createJsonlWriter({
|
|
72
|
+
writeFn: (content) => {
|
|
73
|
+
try {
|
|
74
|
+
getFsImplementation().appendFileSync(path, content);
|
|
75
|
+
} catch {
|
|
76
|
+
getFsImplementation().mkdirSync(dir);
|
|
77
|
+
getFsImplementation().appendFileSync(path, content);
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
flushIntervalMs: 1000,
|
|
81
|
+
maxBufferSize: 50
|
|
82
|
+
});
|
|
83
|
+
logWriters.set(path, writer);
|
|
84
|
+
registerCleanup(async () => writer?.dispose());
|
|
85
|
+
}
|
|
86
|
+
return writer;
|
|
87
|
+
}
|
|
88
|
+
function appendToLog(path, message) {
|
|
89
|
+
if (process.env.USER_TYPE !== "ant") {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const messageWithTimestamp = {
|
|
93
|
+
timestamp: new Date().toISOString(),
|
|
94
|
+
...message,
|
|
95
|
+
cwd: getFsImplementation().cwd(),
|
|
96
|
+
userType: process.env.USER_TYPE,
|
|
97
|
+
sessionId: getSessionId(),
|
|
98
|
+
version: "1.0.3-fork.3767904"
|
|
99
|
+
};
|
|
100
|
+
getLogWriter(path).write(messageWithTimestamp);
|
|
101
|
+
}
|
|
102
|
+
function extractServerMessage(data) {
|
|
103
|
+
if (typeof data === "string") {
|
|
104
|
+
return data;
|
|
105
|
+
}
|
|
106
|
+
if (data && typeof data === "object") {
|
|
107
|
+
const obj = data;
|
|
108
|
+
if (typeof obj.message === "string") {
|
|
109
|
+
return obj.message;
|
|
110
|
+
}
|
|
111
|
+
if (typeof obj.error === "object" && obj.error && "message" in obj.error && typeof obj.error.message === "string") {
|
|
112
|
+
return obj.error.message;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
function logErrorImpl(error) {
|
|
118
|
+
const errorStr = error.stack || error.message;
|
|
119
|
+
let context = "";
|
|
120
|
+
if (axios_default.isAxiosError(error) && error.config?.url) {
|
|
121
|
+
const parts = [`url=${error.config.url}`];
|
|
122
|
+
if (error.response?.status !== undefined) {
|
|
123
|
+
parts.push(`status=${error.response.status}`);
|
|
124
|
+
}
|
|
125
|
+
const serverMessage = extractServerMessage(error.response?.data);
|
|
126
|
+
if (serverMessage) {
|
|
127
|
+
parts.push(`body=${serverMessage}`);
|
|
128
|
+
}
|
|
129
|
+
context = `[${parts.join(",")}] `;
|
|
130
|
+
}
|
|
131
|
+
logForDebugging(`${error.name}: ${context}${errorStr}`, { level: "error" });
|
|
132
|
+
appendToLog(getErrorsPath(), {
|
|
133
|
+
error: `${context}${errorStr}`
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
function logMCPErrorImpl(serverName, error) {
|
|
137
|
+
logForDebugging(`MCP server "${serverName}" ${error}`, { level: "error" });
|
|
138
|
+
const logFile = getMCPLogsPath(serverName);
|
|
139
|
+
const errorStr = error instanceof Error ? error.stack || error.message : String(error);
|
|
140
|
+
const errorInfo = {
|
|
141
|
+
error: errorStr,
|
|
142
|
+
timestamp: new Date().toISOString(),
|
|
143
|
+
sessionId: getSessionId(),
|
|
144
|
+
cwd: getFsImplementation().cwd()
|
|
145
|
+
};
|
|
146
|
+
getLogWriter(logFile).write(errorInfo);
|
|
147
|
+
}
|
|
148
|
+
function logMCPDebugImpl(serverName, message) {
|
|
149
|
+
logForDebugging(`MCP server "${serverName}": ${message}`);
|
|
150
|
+
const logFile = getMCPLogsPath(serverName);
|
|
151
|
+
const debugInfo = {
|
|
152
|
+
debug: message,
|
|
153
|
+
timestamp: new Date().toISOString(),
|
|
154
|
+
sessionId: getSessionId(),
|
|
155
|
+
cwd: getFsImplementation().cwd()
|
|
156
|
+
};
|
|
157
|
+
getLogWriter(logFile).write(debugInfo);
|
|
158
|
+
}
|
|
159
|
+
function initializeErrorLogSink() {
|
|
160
|
+
attachErrorLogSink({
|
|
161
|
+
logError: logErrorImpl,
|
|
162
|
+
logMCPError: logMCPErrorImpl,
|
|
163
|
+
logMCPDebug: logMCPDebugImpl,
|
|
164
|
+
getErrorsPath,
|
|
165
|
+
getMCPLogsPath
|
|
166
|
+
});
|
|
167
|
+
logForDebugging("Error log sink initialized");
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// src/utils/sinks.ts
|
|
171
|
+
function initSinks() {
|
|
172
|
+
initializeErrorLogSink();
|
|
173
|
+
initializeAnalyticsSink();
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export { initSinks };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
BASH_TOOL_NAME,
|
|
4
|
+
getAllowRules,
|
|
5
|
+
getAskRules,
|
|
6
|
+
getDenyRules,
|
|
7
|
+
init_permissions,
|
|
8
|
+
init_toolName,
|
|
9
|
+
permissionRuleSourceDisplayString
|
|
10
|
+
} from "./chunk-njmw3yt4.js";
|
|
11
|
+
import {
|
|
12
|
+
__esm
|
|
13
|
+
} from "./chunk-qp2qdcda.js";
|
|
14
|
+
|
|
15
|
+
// src/utils/permissions/shadowedRuleDetection.ts
|
|
16
|
+
function isSharedSettingSource(source) {
|
|
17
|
+
return source === "projectSettings" || source === "policySettings" || source === "command";
|
|
18
|
+
}
|
|
19
|
+
function formatSource(source) {
|
|
20
|
+
return permissionRuleSourceDisplayString(source);
|
|
21
|
+
}
|
|
22
|
+
function generateFixSuggestion(shadowType, shadowingRule, shadowedRule) {
|
|
23
|
+
const shadowingSource = formatSource(shadowingRule.source);
|
|
24
|
+
const shadowedSource = formatSource(shadowedRule.source);
|
|
25
|
+
const toolName = shadowingRule.ruleValue.toolName;
|
|
26
|
+
if (shadowType === "deny") {
|
|
27
|
+
return `Remove the "${toolName}" deny rule from ${shadowingSource}, or remove the specific allow rule from ${shadowedSource}`;
|
|
28
|
+
}
|
|
29
|
+
return `Remove the "${toolName}" ask rule from ${shadowingSource}, or remove the specific allow rule from ${shadowedSource}`;
|
|
30
|
+
}
|
|
31
|
+
function isAllowRuleShadowedByAskRule(allowRule, askRules, options) {
|
|
32
|
+
const { toolName, ruleContent } = allowRule.ruleValue;
|
|
33
|
+
if (ruleContent === undefined) {
|
|
34
|
+
return { shadowed: false };
|
|
35
|
+
}
|
|
36
|
+
const shadowingAskRule = askRules.find((askRule) => askRule.ruleValue.toolName === toolName && askRule.ruleValue.ruleContent === undefined);
|
|
37
|
+
if (!shadowingAskRule) {
|
|
38
|
+
return { shadowed: false };
|
|
39
|
+
}
|
|
40
|
+
if (toolName === BASH_TOOL_NAME && options.sandboxAutoAllowEnabled) {
|
|
41
|
+
if (!isSharedSettingSource(shadowingAskRule.source)) {
|
|
42
|
+
return { shadowed: false };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return { shadowed: true, shadowedBy: shadowingAskRule, shadowType: "ask" };
|
|
46
|
+
}
|
|
47
|
+
function isAllowRuleShadowedByDenyRule(allowRule, denyRules) {
|
|
48
|
+
const { toolName, ruleContent } = allowRule.ruleValue;
|
|
49
|
+
if (ruleContent === undefined) {
|
|
50
|
+
return { shadowed: false };
|
|
51
|
+
}
|
|
52
|
+
const shadowingDenyRule = denyRules.find((denyRule) => denyRule.ruleValue.toolName === toolName && denyRule.ruleValue.ruleContent === undefined);
|
|
53
|
+
if (!shadowingDenyRule) {
|
|
54
|
+
return { shadowed: false };
|
|
55
|
+
}
|
|
56
|
+
return { shadowed: true, shadowedBy: shadowingDenyRule, shadowType: "deny" };
|
|
57
|
+
}
|
|
58
|
+
function detectUnreachableRules(context, options) {
|
|
59
|
+
const unreachable = [];
|
|
60
|
+
const allowRules = getAllowRules(context);
|
|
61
|
+
const askRules = getAskRules(context);
|
|
62
|
+
const denyRules = getDenyRules(context);
|
|
63
|
+
for (const allowRule of allowRules) {
|
|
64
|
+
const denyResult = isAllowRuleShadowedByDenyRule(allowRule, denyRules);
|
|
65
|
+
if (denyResult.shadowed) {
|
|
66
|
+
const shadowSource = formatSource(denyResult.shadowedBy.source);
|
|
67
|
+
unreachable.push({
|
|
68
|
+
rule: allowRule,
|
|
69
|
+
reason: `Blocked by "${denyResult.shadowedBy.ruleValue.toolName}" deny rule (from ${shadowSource})`,
|
|
70
|
+
shadowedBy: denyResult.shadowedBy,
|
|
71
|
+
shadowType: "deny",
|
|
72
|
+
fix: generateFixSuggestion("deny", denyResult.shadowedBy, allowRule)
|
|
73
|
+
});
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const askResult = isAllowRuleShadowedByAskRule(allowRule, askRules, options);
|
|
77
|
+
if (askResult.shadowed) {
|
|
78
|
+
const shadowSource = formatSource(askResult.shadowedBy.source);
|
|
79
|
+
unreachable.push({
|
|
80
|
+
rule: allowRule,
|
|
81
|
+
reason: `Shadowed by "${askResult.shadowedBy.ruleValue.toolName}" ask rule (from ${shadowSource})`,
|
|
82
|
+
shadowedBy: askResult.shadowedBy,
|
|
83
|
+
shadowType: "ask",
|
|
84
|
+
fix: generateFixSuggestion("ask", askResult.shadowedBy, allowRule)
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return unreachable;
|
|
89
|
+
}
|
|
90
|
+
var init_shadowedRuleDetection = __esm(() => {
|
|
91
|
+
init_toolName();
|
|
92
|
+
init_permissions();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
export { detectUnreachableRules, init_shadowedRuleDetection };
|