@qitqode/qitqode-android-arm64 0.1.23 → 0.1.25
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/bundle/{chunk-hyr049cr.js → chunk-0304b7xg.js} +1 -1
- package/bundle/{chunk-ky840wjj.js → chunk-08ba67f4.js} +1 -1
- package/bundle/chunk-0eneddjj.js +2 -0
- package/bundle/{chunk-mj7rk4xs.js → chunk-0hsb4knd.js} +1 -1
- package/bundle/{chunk-k0arcqnt.js → chunk-0jaxgrq0.js} +2 -2
- package/bundle/chunk-0ke6x10y.js +5 -0
- package/bundle/{chunk-naq602da.js → chunk-0rmmg3g4.js} +1 -1
- package/bundle/chunk-0vqrakhw.js +3 -0
- package/bundle/{chunk-kn9skc0g.js → chunk-0x7dbj5e.js} +1 -1
- package/bundle/{chunk-vay29sqp.js → chunk-0xmx2zfg.js} +1 -1
- package/bundle/chunk-0yb4pxjv.js +2 -0
- package/bundle/chunk-129kq1w7.js +2 -0
- package/bundle/{chunk-2e9a9brg.js → chunk-14qvaxtp.js} +1 -1
- package/bundle/chunk-1a5hq7d5.js +2 -0
- package/bundle/{chunk-bkaprkf6.js → chunk-1ce5jpdc.js} +1 -1
- package/bundle/{chunk-gz8x3915.js → chunk-1e8mja6v.js} +1 -1
- package/bundle/{chunk-12cd1yj9.js → chunk-1n1dh6zj.js} +1 -1
- package/bundle/{chunk-q1nvfmrm.js → chunk-1txkz6dt.js} +1 -1
- package/bundle/chunk-1w3y1dkk.js +2 -0
- package/bundle/{chunk-mg03szpz.js → chunk-23f6rc7a.js} +1 -1
- package/bundle/chunk-26qt44f1.js +3 -0
- package/bundle/{chunk-101y7ce2.js → chunk-2armxd20.js} +1 -1
- package/bundle/{chunk-zx90w4mt.js → chunk-2je5tp0x.js} +1 -1
- package/bundle/{chunk-9jjjzmvn.js → chunk-2k2axg73.js} +1 -1
- package/bundle/chunk-2pkake0h.js +2 -0
- package/bundle/{chunk-576zfh1s.js → chunk-2rxt1s22.js} +2 -2
- package/bundle/{chunk-xjr0xy58.js → chunk-2s28fdbp.js} +1 -1
- package/bundle/{chunk-haw1jzwb.js → chunk-2sy1wx99.js} +1 -1
- package/bundle/{chunk-bwgnmy92.js → chunk-2z35ewwc.js} +1 -1
- package/bundle/{chunk-y62tnk9q.js → chunk-2zj3h3xj.js} +2 -2
- package/bundle/chunk-32188rww.js +2 -0
- package/bundle/chunk-334tc1rh.js +2 -0
- package/bundle/{chunk-dn1jryxz.js → chunk-3dvyfmgc.js} +1 -1
- package/bundle/{chunk-2qy760rf.js → chunk-3e8p4a3y.js} +1 -1
- package/bundle/chunk-3f054f69.js +800 -0
- package/bundle/chunk-3ff94m8r.js +2 -0
- package/bundle/{chunk-3wzpdvpg.js → chunk-3fy57jcy.js} +1 -1
- package/bundle/{chunk-hk1ha5fj.js → chunk-3h08jdq8.js} +2 -2
- package/bundle/{chunk-44amvtcs.js → chunk-3j7skhxg.js} +2 -2
- package/bundle/{chunk-qkn4039t.js → chunk-3jhx8g5d.js} +1 -1
- package/bundle/{chunk-rmmyjyr9.js → chunk-3nhth7c2.js} +1 -1
- package/bundle/{chunk-b8z4hgq0.js → chunk-3tnek022.js} +1 -1
- package/bundle/{chunk-m81z3zgm.js → chunk-3xna2rk5.js} +2 -2
- package/bundle/{chunk-an5sr6gw.js → chunk-42t25nkb.js} +1 -1
- package/bundle/{chunk-3w60y2x5.js → chunk-453wpzg6.js} +1 -1
- package/bundle/chunk-4aqd2bty.js +2 -0
- package/bundle/{chunk-y0qaz8db.js → chunk-4kb2efq3.js} +1 -1
- package/bundle/{chunk-cbfjjbfd.js → chunk-4pssh5d3.js} +2 -2
- package/bundle/{chunk-9yaw0hbp.js → chunk-4stgw33j.js} +1 -1
- package/bundle/{chunk-cz8nnm2a.js → chunk-4w5t515p.js} +1 -1
- package/bundle/chunk-4wa0gf8y.js +28 -0
- package/bundle/{chunk-z1hd38wp.js → chunk-4wgb80jm.js} +2 -2
- package/bundle/{chunk-c38ppnm8.js → chunk-4wyjapes.js} +2 -2
- package/bundle/chunk-4xg5ptk9.js +2 -0
- package/bundle/chunk-54pk7nna.js +3 -0
- package/bundle/chunk-58680z2j.js +3 -0
- package/bundle/{chunk-2qj66wf5.js → chunk-5mdsrv0a.js} +1 -1
- package/bundle/{chunk-2adsn1ca.js → chunk-5mp82az0.js} +1 -1
- package/bundle/chunk-5nm36wxa.js +2 -0
- package/bundle/{chunk-7bxe5s20.js → chunk-5zw7knvd.js} +1 -1
- package/bundle/{chunk-63pvqy8n.js → chunk-61ks7c71.js} +3 -3
- package/bundle/chunk-64jet8nc.js +2 -0
- package/bundle/chunk-6584d9m8.js +2 -0
- package/bundle/chunk-66hv9bbw.js +2 -0
- package/bundle/{chunk-qr2ave8f.js → chunk-692vn48b.js} +1 -1
- package/bundle/chunk-6a1g6jzn.js +2 -0
- package/bundle/chunk-6be8p915.js +2 -0
- package/bundle/{chunk-3xf7q4ww.js → chunk-6ddp36ar.js} +1 -1
- package/bundle/chunk-6f03158n.js +2 -0
- package/bundle/{chunk-yffkcska.js → chunk-6gbaw2pk.js} +1 -1
- package/bundle/{chunk-07szgr15.js → chunk-6rrmjrm2.js} +1 -1
- package/bundle/{chunk-y2r3zker.js → chunk-6s2f5sv4.js} +1 -1
- package/bundle/{chunk-799c17nk.js → chunk-754varfr.js} +2 -2
- package/bundle/{chunk-ecczet3b.js → chunk-78h5dd4t.js} +2 -2
- package/bundle/{chunk-ejy5404v.js → chunk-7d6jhzng.js} +1 -1
- package/bundle/{chunk-kpkbyek5.js → chunk-7fx6x8x9.js} +2 -2
- package/bundle/chunk-7jnjttqx.js +2 -0
- package/bundle/{chunk-t66hycva.js → chunk-7q5srx7q.js} +2 -2
- package/bundle/chunk-7q8pa6s8.js +2 -0
- package/bundle/{chunk-36c2avm4.js → chunk-7qvkyjjg.js} +1 -1
- package/bundle/{chunk-22tf95dw.js → chunk-7rjf9b8n.js} +2 -2
- package/bundle/{chunk-zzdbrxkh.js → chunk-7v4fzkbb.js} +1 -1
- package/bundle/chunk-7w84hfxs.js +3 -0
- package/bundle/{chunk-g8zrn0at.js → chunk-7ws3gdjq.js} +1 -1
- package/bundle/{chunk-my0kzcby.js → chunk-87x607rz.js} +310 -284
- package/bundle/{chunk-hnzs3ywg.js → chunk-8ahpk8td.js} +1 -1
- package/bundle/{chunk-62yja34m.js → chunk-8atry88r.js} +1 -1
- package/bundle/chunk-8casywce.js +2 -0
- package/bundle/chunk-8cty50g7.js +2 -0
- package/bundle/{chunk-5dpev64z.js → chunk-8gy99gfb.js} +2 -2
- package/bundle/chunk-8hxwxt5p.js +2 -0
- package/bundle/{chunk-px15ev1g.js → chunk-8jcx4tep.js} +2 -2
- package/bundle/chunk-8y8140dm.js +2 -0
- package/bundle/{chunk-fhjpfzjc.js → chunk-8za87zkr.js} +1 -1
- package/bundle/{chunk-m8njvpb8.js → chunk-99p5m2f1.js} +1 -1
- package/bundle/{chunk-c7dt464m.js → chunk-9dpn4792.js} +2 -2
- package/bundle/chunk-9dqcyt6x.js +2 -0
- package/bundle/{chunk-w6t1qmeg.js → chunk-9f6pqped.js} +1 -1
- package/bundle/chunk-9he248a8.js +2 -0
- package/bundle/{chunk-3ne6j2h5.js → chunk-9jncnqbj.js} +2 -2
- package/bundle/{chunk-mwjhyj53.js → chunk-9jvnc14g.js} +1 -1
- package/bundle/chunk-9qmmse2n.js +2 -0
- package/bundle/chunk-9r6bvkp4.js +8 -0
- package/bundle/chunk-9va5eh9s.js +3 -0
- package/bundle/chunk-9w5rx0fb.js +3 -0
- package/bundle/{chunk-g5g9r3v5.js → chunk-a27yjp71.js} +1 -1
- package/bundle/chunk-aabrsxrq.js +2 -0
- package/bundle/{chunk-shav33fq.js → chunk-ag9thqkv.js} +2 -2
- package/bundle/chunk-amx3x4kd.js +3 -0
- package/bundle/{chunk-863s0tqa.js → chunk-aqm597px.js} +2 -2
- package/bundle/chunk-atd0q4v8.js +3 -0
- package/bundle/{chunk-58w4dhb6.js → chunk-av290sja.js} +1 -1
- package/bundle/chunk-avaba4sr.js +2 -0
- package/bundle/{chunk-p33fchnf.js → chunk-aw0q4y3s.js} +1 -1
- package/bundle/{chunk-7pr4jxkn.js → chunk-b2xya6pq.js} +1 -1
- package/bundle/{chunk-hqv0s6sw.js → chunk-b50t4jc5.js} +1 -1
- package/bundle/chunk-bdy1etja.js +2 -0
- package/bundle/{chunk-bwvjft74.js → chunk-bnc4626b.js} +1 -1
- package/bundle/{chunk-k5294ajv.js → chunk-bpnpxdyv.js} +2 -2
- package/bundle/chunk-bqdvqmjc.js +2 -0
- package/bundle/chunk-bqs6a1ts.js +14 -0
- package/bundle/{chunk-n889mwgv.js → chunk-bsqcfqya.js} +1 -1
- package/bundle/{chunk-ntfh16rj.js → chunk-c1ypbbka.js} +2 -2
- package/bundle/{chunk-0136n3jt.js → chunk-c27rpvdz.js} +1 -1
- package/bundle/chunk-cdws8ggq.js +2 -0
- package/bundle/{chunk-5x19yah0.js → chunk-cjxp72dv.js} +2 -2
- package/bundle/chunk-cqs9a2cs.js +2 -0
- package/bundle/{chunk-b54t7ycj.js → chunk-crap29f6.js} +1 -1
- package/bundle/{chunk-b2k9yafd.js → chunk-d0m7nbbx.js} +2 -2
- package/bundle/chunk-d0rjst58.js +2 -0
- package/bundle/{chunk-y68fp4kt.js → chunk-d1bsxz2t.js} +1 -1
- package/bundle/{chunk-2e76kpa6.js → chunk-d5b0bqbr.js} +1 -1
- package/bundle/chunk-d833a2fj.js +2 -0
- package/bundle/{chunk-mwbcmvmh.js → chunk-dd11kryy.js} +2 -2
- package/bundle/chunk-dday4nm2.js +2 -0
- package/bundle/{chunk-05badzhy.js → chunk-ddxjc803.js} +2 -2
- package/bundle/{chunk-0vhsc0yh.js → chunk-dee1a3yk.js} +2 -2
- package/bundle/{chunk-kktcccep.js → chunk-dgggvses.js} +1 -1
- package/bundle/{chunk-2es79khv.js → chunk-dk3z4k46.js} +3 -3
- package/bundle/{chunk-24r5h0fx.js → chunk-e075v4e9.js} +2 -2
- package/bundle/{chunk-m34zrf70.js → chunk-e1pwnf0b.js} +2 -2
- package/bundle/chunk-e2sj30hk.js +2 -0
- package/bundle/{chunk-t86vj45b.js → chunk-eaatrmcg.js} +1 -1
- package/bundle/{chunk-g6gs7cc6.js → chunk-eg7drzzt.js} +1 -1
- package/bundle/chunk-enc0fykg.js +2 -0
- package/bundle/chunk-evan93av.js +2 -0
- package/bundle/{chunk-wk11xsdh.js → chunk-evmfntm3.js} +1 -1
- package/bundle/{chunk-jvkqvgae.js → chunk-ey4ktbyb.js} +1 -1
- package/bundle/{chunk-fnect0ny.js → chunk-f55txcsa.js} +1 -1
- package/bundle/chunk-f600dzsr.js +2 -0
- package/bundle/chunk-f6jzwydk.js +2 -0
- package/bundle/{chunk-f958hsha.js → chunk-f84cd0a1.js} +2 -2
- package/bundle/{chunk-5wr5gpaa.js → chunk-fgw420gb.js} +1 -1
- package/bundle/chunk-fv67ng8z.js +2 -0
- package/bundle/{chunk-g7g3zm4v.js → chunk-g3s2z5xa.js} +1 -1
- package/bundle/{chunk-wmmck56g.js → chunk-g4qwkcdv.js} +1 -1
- package/bundle/{chunk-yccm7cfm.js → chunk-g73drh98.js} +3 -3
- package/bundle/{chunk-8hh5ejmr.js → chunk-gaen9ya4.js} +2 -2
- package/bundle/{chunk-m3gsrb1x.js → chunk-gefh32jb.js} +1 -1
- package/bundle/chunk-gevazsx3.js +2 -0
- package/bundle/{chunk-tfpwfczs.js → chunk-gfmfrkxc.js} +1 -1
- package/bundle/{chunk-ac69b9tm.js → chunk-ggeena9t.js} +1 -1
- package/bundle/chunk-gh18pzkx.js +2 -0
- package/bundle/chunk-gnvvgr4y.js +2 -0
- package/bundle/chunk-grkkzrg1.js +5 -0
- package/bundle/chunk-gsbjs2ws.js +2 -0
- package/bundle/{chunk-1w8b88y5.js → chunk-gsz1wqy6.js} +1 -1
- package/bundle/{chunk-ar1by07g.js → chunk-gvtw9c44.js} +1 -1
- package/bundle/chunk-gw0j8hr9.js +3 -0
- package/bundle/{chunk-3j6nrrva.js → chunk-h19ty95q.js} +1 -1
- package/bundle/{chunk-381j1hqf.js → chunk-h2fh1g8g.js} +1 -1
- package/bundle/{chunk-n1m5qdf5.js → chunk-h56jxxvj.js} +1 -1
- package/bundle/{chunk-87pzwjjj.js → chunk-hmfefq0d.js} +4 -4
- package/bundle/{chunk-g7742sqm.js → chunk-hvpe07pt.js} +1 -1
- package/bundle/{chunk-yyarzhw3.js → chunk-hwbxehhf.js} +1 -1
- package/bundle/{chunk-agyxa9nj.js → chunk-hznsed5n.js} +2 -2
- package/bundle/{chunk-fvwys8ej.js → chunk-j5b5h08g.js} +1 -1
- package/bundle/chunk-j7pdz979.js +2 -0
- package/bundle/{chunk-9zg3y89v.js → chunk-j9s62g01.js} +2 -2
- package/bundle/chunk-jfe2qbv8.js +2 -0
- package/bundle/{chunk-1vx26nt2.js → chunk-jgs6ngte.js} +1 -1
- package/bundle/{chunk-dsny9dh8.js → chunk-jhq5bvhs.js} +2 -2
- package/bundle/{chunk-9n6f9n1c.js → chunk-jq81hb32.js} +2 -2
- package/bundle/{chunk-nb0gc3sx.js → chunk-jqzejny3.js} +1 -1
- package/bundle/{chunk-t42kh492.js → chunk-jtrcnpm7.js} +2 -2
- package/bundle/{chunk-vxc5q0wk.js → chunk-jv98gw88.js} +2 -2
- package/bundle/chunk-jvaffe5d.js +10 -0
- package/bundle/chunk-k6zvb8xm.js +2 -0
- package/bundle/{chunk-erh9y0sx.js → chunk-k8bp3jjv.js} +1 -1
- package/bundle/{chunk-q1472d56.js → chunk-kb14wxcs.js} +2 -2
- package/bundle/chunk-kcht9kvx.js +2 -0
- package/bundle/{chunk-jge74hh4.js → chunk-kdcspxvq.js} +1 -1
- package/bundle/{chunk-w6zgm4vn.js → chunk-kdct3e8s.js} +1 -1
- package/bundle/{chunk-m8tfv36b.js → chunk-kgsq240v.js} +2 -2
- package/bundle/chunk-knvsa1d4.js +2 -0
- package/bundle/chunk-kp6d68hd.js +2 -0
- package/bundle/{chunk-jq6y56m5.js → chunk-kwm87f18.js} +1 -1
- package/bundle/{chunk-29hmwttd.js → chunk-kyny0t2g.js} +2 -2
- package/bundle/{chunk-v1hvnq7y.js → chunk-m2ang7yb.js} +1 -1
- package/bundle/{chunk-r0sjwtfc.js → chunk-mbh1pdv9.js} +2 -2
- package/bundle/{chunk-g2ec45xj.js → chunk-mczw8e3s.js} +2 -2
- package/bundle/chunk-me78p9x4.js +2 -0
- package/bundle/{chunk-afpwjn78.js → chunk-meaybtcc.js} +3 -3
- package/bundle/{chunk-k0v37hc6.js → chunk-mkdyknbz.js} +1 -1
- package/bundle/{chunk-fp5mvrrx.js → chunk-mkyrg7gt.js} +2 -2
- package/bundle/{chunk-ax9yyznf.js → chunk-mr7agwgn.js} +1 -1
- package/bundle/{chunk-9y65kbcf.js → chunk-msm3r7ny.js} +2 -2
- package/bundle/chunk-mv1d7wyt.js +2 -0
- package/bundle/{chunk-gjsaw7wm.js → chunk-mybpgrjj.js} +2 -2
- package/bundle/{chunk-1eg8mr1q.js → chunk-n8dcmjph.js} +1 -1
- package/bundle/chunk-n8xmmxh5.js +2 -0
- package/bundle/chunk-n90219q9.js +2 -0
- package/bundle/chunk-nckg3ydx.js +2 -0
- package/bundle/{chunk-apv1v4tk.js → chunk-nf8gkxbk.js} +2 -2
- package/bundle/chunk-nhaenjw3.js +2 -0
- package/bundle/chunk-nhtrt5ec.js +2 -0
- package/bundle/{chunk-sgq94p3x.js → chunk-nhx2xp2x.js} +1 -1
- package/bundle/{chunk-mt8btwrv.js → chunk-nmnsf3fc.js} +1 -1
- package/bundle/{chunk-wf2mj6de.js → chunk-nqefvn28.js} +1 -1
- package/bundle/{chunk-kdr6nxmk.js → chunk-p409grvp.js} +2 -2
- package/bundle/chunk-p72n0tfq.js +2 -0
- package/bundle/{chunk-rwanncah.js → chunk-p80dc6kt.js} +2 -2
- package/bundle/{chunk-z65snfyw.js → chunk-p883sz67.js} +1 -1
- package/bundle/{chunk-eqed7tvt.js → chunk-p8enedkf.js} +1 -1
- package/bundle/chunk-pd33qvr0.js +2 -0
- package/bundle/chunk-pepn5jp4.js +3 -0
- package/bundle/chunk-pf7cj4jd.js +3 -0
- package/bundle/{chunk-q6x5bmc3.js → chunk-pfn1db1m.js} +2 -2
- package/bundle/{chunk-xtj5qqsw.js → chunk-pk0tytcm.js} +1 -1
- package/bundle/chunk-pq3622ae.js +2 -0
- package/bundle/{chunk-26m5yn5d.js → chunk-psveqqv2.js} +1 -1
- package/bundle/{chunk-w8r4gjea.js → chunk-pvee151a.js} +1 -1
- package/bundle/chunk-qatj4h6b.js +2 -0
- package/bundle/{chunk-cwkdc1cc.js → chunk-qdnxv55k.js} +1 -1
- package/bundle/{chunk-s75chpxq.js → chunk-qe0sfafy.js} +2 -2
- package/bundle/chunk-qfz0a58d.js +2 -0
- package/bundle/chunk-qjwfj51e.js +2 -0
- package/bundle/chunk-qkg73rs9.js +2 -0
- package/bundle/{chunk-7b69jj5g.js → chunk-qm9ezq93.js} +1 -1
- package/bundle/{chunk-hvcdemxe.js → chunk-qnqqrvvs.js} +2 -2
- package/bundle/{chunk-bqeyh2gx.js → chunk-qnv2v02g.js} +2 -2
- package/bundle/{chunk-kfdqfha0.js → chunk-qpm5afdz.js} +1 -1
- package/bundle/chunk-qvcfst7n.js +11 -0
- package/bundle/{chunk-xqzbcs8x.js → chunk-rgecc41f.js} +2 -2
- package/bundle/chunk-rjcptzem.js +8 -0
- package/bundle/{chunk-k1ht1sjr.js → chunk-rjf21v5c.js} +1 -1
- package/bundle/chunk-rmsqb6r4.js +10 -0
- package/bundle/{chunk-dq1wprmb.js → chunk-rq4hqwjy.js} +1 -1
- package/bundle/chunk-rqrpbcm6.js +2 -0
- package/bundle/{chunk-kbhby60s.js → chunk-rs1mm5ef.js} +1 -1
- package/bundle/{chunk-jj7wrfty.js → chunk-rze20q68.js} +1 -1
- package/bundle/chunk-s76hdgw6.js +2 -0
- package/bundle/chunk-s7vhjg9e.js +2 -0
- package/bundle/{chunk-88kt6qmd.js → chunk-se79ke63.js} +2 -2
- package/bundle/chunk-sec3a60m.js +2 -0
- package/bundle/chunk-sjnt5e6w.js +2 -0
- package/bundle/chunk-sntb757q.js +2 -0
- package/bundle/chunk-svscftd7.js +2 -0
- package/bundle/chunk-sx0cabcs.js +2 -0
- package/bundle/{chunk-6j07cgna.js → chunk-sx5m81em.js} +1 -1
- package/bundle/{chunk-yr4evt94.js → chunk-syhay5ye.js} +1 -1
- package/bundle/{chunk-5d18fd4p.js → chunk-t07a5431.js} +1 -1
- package/bundle/{chunk-hs8qwx4n.js → chunk-t0amhhsk.js} +1 -1
- package/bundle/{chunk-70gfpkxv.js → chunk-t2tsyazc.js} +1 -1
- package/bundle/{chunk-7m4camry.js → chunk-tdmaxc6n.js} +1 -1
- package/bundle/{chunk-y2h0adg5.js → chunk-tf1me2r4.js} +3 -3
- package/bundle/{chunk-cn7nnjsf.js → chunk-tfggzzqw.js} +1 -1
- package/bundle/chunk-tmdm6vm6.js +2 -0
- package/bundle/{chunk-qx9j6nz1.js → chunk-v4xgceeq.js} +1 -1
- package/bundle/chunk-v6g0ksks.js +2 -0
- package/bundle/chunk-v7ah9gg0.js +3 -0
- package/bundle/{chunk-g0vzdt58.js → chunk-vb4e7y4d.js} +1 -1
- package/bundle/chunk-vbf73c7z.js +2 -0
- package/bundle/chunk-vbf9jpas.js +2 -0
- package/bundle/{chunk-5vyper2h.js → chunk-veev25yg.js} +1 -1
- package/bundle/{chunk-sjqgmp12.js → chunk-vfj5nwab.js} +2 -2
- package/bundle/{chunk-a3te67a5.js → chunk-vmgknvxs.js} +2 -2
- package/bundle/{chunk-agx5m1ev.js → chunk-vq6bh2z9.js} +1 -1
- package/bundle/{chunk-7n994qss.js → chunk-vqq5vmh1.js} +222 -222
- package/bundle/chunk-vrcf5q4s.js +2 -0
- package/bundle/chunk-vxrsp6n7.js +2 -0
- package/bundle/chunk-w8ax3pvh.js +2 -0
- package/bundle/chunk-w98r39gd.js +9 -0
- package/bundle/chunk-wb69d52j.js +3 -0
- package/bundle/{chunk-39h565hz.js → chunk-wmrq9qqf.js} +1 -1
- package/bundle/{chunk-8k4mkrdw.js → chunk-wrgg270f.js} +1 -1
- package/bundle/{chunk-w32tj884.js → chunk-ww8ear80.js} +2 -2
- package/bundle/{chunk-zeh3mjgp.js → chunk-x36jhtex.js} +1 -1
- package/bundle/{chunk-7tthc48p.js → chunk-x6b99nt3.js} +1 -1
- package/bundle/{chunk-k3pvgwgc.js → chunk-xdde80rf.js} +2 -2
- package/bundle/{chunk-ypff4a5n.js → chunk-xjrt0dta.js} +1 -1
- package/bundle/chunk-xk2cmh49.js +2 -0
- package/bundle/{chunk-3w9k7yxx.js → chunk-xqa6qkx2.js} +1 -1
- package/bundle/{chunk-scb48j07.js → chunk-xw283h2r.js} +2 -2
- package/bundle/{chunk-qzd0q1jg.js → chunk-xy4t5qf8.js} +1 -1
- package/bundle/{chunk-8e2wwdgb.js → chunk-xyn3xxfs.js} +1 -1
- package/bundle/chunk-xzhkfctf.js +2 -0
- package/bundle/chunk-y0xt5a6g.js +2 -0
- package/bundle/{chunk-26mt118z.js → chunk-ybn8tb09.js} +1 -1
- package/bundle/chunk-ydmrvx7q.js +2 -0
- package/bundle/{chunk-9tq5yt3t.js → chunk-ydsen7w0.js} +1 -1
- package/bundle/{chunk-0svy8w30.js → chunk-yhqk8bzk.js} +2 -2
- package/bundle/{chunk-shxny9x9.js → chunk-ykfq8bem.js} +1 -1
- package/bundle/{chunk-22vvjp4g.js → chunk-ym4ydwrz.js} +2 -2
- package/bundle/{chunk-1gg4c0pq.js → chunk-yzchwmb4.js} +1 -1
- package/bundle/{chunk-3cpqdake.js → chunk-z015twaq.js} +2 -2
- package/bundle/chunk-z2rtcgad.js +3 -0
- package/bundle/{chunk-c546xxjk.js → chunk-z3zx6g09.js} +1 -1
- package/bundle/chunk-z9b3t2jm.js +2 -0
- package/bundle/{chunk-brrtcqrc.js → chunk-zbdbsagd.js} +2 -2
- package/bundle/{chunk-y3qf1kg9.js → chunk-zh808d4t.js} +1 -1
- package/bundle/{chunk-7tb9fjvq.js → chunk-zny2qaqa.js} +2 -2
- package/bundle/{chunk-gzse9pab.js → chunk-zsnbxsdx.js} +2 -2
- package/bundle/{chunk-w9vv1whr.js → chunk-zss93r48.js} +1 -1
- package/bundle/chunk-zzr8smtm.js +2 -0
- package/bundle/index.js +16 -16
- package/bundle/parser.worker.js +2 -2
- package/bundle/worker.js +1 -1
- package/package.json +1 -1
- package/bundle/chunk-1by6y9tm.js +0 -2
- package/bundle/chunk-1gjh45v5.js +0 -9
- package/bundle/chunk-1p7wqmxp.js +0 -2
- package/bundle/chunk-1v47v7vm.js +0 -3
- package/bundle/chunk-21hnx8rx.js +0 -24
- package/bundle/chunk-22pvftx8.js +0 -2
- package/bundle/chunk-2bce1njy.js +0 -2
- package/bundle/chunk-2wcwbp3t.js +0 -799
- package/bundle/chunk-338hbnza.js +0 -11
- package/bundle/chunk-3gsvbfqz.js +0 -2
- package/bundle/chunk-3sem578c.js +0 -3
- package/bundle/chunk-3vgnqaem.js +0 -2
- package/bundle/chunk-3xrhxyz9.js +0 -2
- package/bundle/chunk-3zdyrnvp.js +0 -2
- package/bundle/chunk-4nhbgva1.js +0 -2
- package/bundle/chunk-5ch23jj3.js +0 -2
- package/bundle/chunk-5hzkd9te.js +0 -2
- package/bundle/chunk-5vwhfa42.js +0 -2
- package/bundle/chunk-662x3gq6.js +0 -2
- package/bundle/chunk-6an0pk19.js +0 -2
- package/bundle/chunk-6ybqwnp7.js +0 -2
- package/bundle/chunk-7365jzj1.js +0 -2
- package/bundle/chunk-7amvpgng.js +0 -2
- package/bundle/chunk-7dcz5ytp.js +0 -2
- package/bundle/chunk-7h7bwjmm.js +0 -2
- package/bundle/chunk-7vk5fhhv.js +0 -2
- package/bundle/chunk-7vqw9wge.js +0 -2
- package/bundle/chunk-7vxk5t11.js +0 -2
- package/bundle/chunk-83fm5xcn.js +0 -2
- package/bundle/chunk-8b644ae2.js +0 -2
- package/bundle/chunk-av2q0ffj.js +0 -2
- package/bundle/chunk-avk3wfch.js +0 -7
- package/bundle/chunk-azna4wdf.js +0 -2
- package/bundle/chunk-b192q4m0.js +0 -2
- package/bundle/chunk-bh46627y.js +0 -2
- package/bundle/chunk-c267ggx2.js +0 -2
- package/bundle/chunk-c4x99ayd.js +0 -11
- package/bundle/chunk-c6kxegws.js +0 -2
- package/bundle/chunk-cek3cfz4.js +0 -2
- package/bundle/chunk-ete0y35c.js +0 -2
- package/bundle/chunk-f1mmzzsn.js +0 -2
- package/bundle/chunk-f66cvq2q.js +0 -2
- package/bundle/chunk-fd1vbz1f.js +0 -3
- package/bundle/chunk-febbrhev.js +0 -3
- package/bundle/chunk-fq4v97xn.js +0 -2
- package/bundle/chunk-fw1f6br4.js +0 -2
- package/bundle/chunk-fzzze6zd.js +0 -5
- package/bundle/chunk-g3pb8rad.js +0 -2
- package/bundle/chunk-g6tw5dvr.js +0 -14
- package/bundle/chunk-gc1yetqd.js +0 -2
- package/bundle/chunk-gtckkn15.js +0 -2
- package/bundle/chunk-gtzreftf.js +0 -2
- package/bundle/chunk-hg7kfd0t.js +0 -3
- package/bundle/chunk-j5vahbw1.js +0 -2
- package/bundle/chunk-jazpapb9.js +0 -3
- package/bundle/chunk-jek1cnfk.js +0 -3
- package/bundle/chunk-jevrajsx.js +0 -2
- package/bundle/chunk-jzdks7bv.js +0 -2
- package/bundle/chunk-k1e7w7w5.js +0 -2
- package/bundle/chunk-k33xx2z9.js +0 -2
- package/bundle/chunk-k6vf6vq6.js +0 -2
- package/bundle/chunk-kn391hb2.js +0 -2
- package/bundle/chunk-knmba0q6.js +0 -2
- package/bundle/chunk-knnemqfm.js +0 -3
- package/bundle/chunk-kx4b39v6.js +0 -2
- package/bundle/chunk-mah572rs.js +0 -2
- package/bundle/chunk-mg6nwfw3.js +0 -2
- package/bundle/chunk-pdgrang4.js +0 -2
- package/bundle/chunk-r3q82hz3.js +0 -2
- package/bundle/chunk-r4ygs0jv.js +0 -2
- package/bundle/chunk-r6xhxvjv.js +0 -2
- package/bundle/chunk-r79mz5kd.js +0 -5
- package/bundle/chunk-r99pnfra.js +0 -2
- package/bundle/chunk-rjjgnvdk.js +0 -2
- package/bundle/chunk-rq4xdyst.js +0 -2
- package/bundle/chunk-rsd3v7cg.js +0 -2
- package/bundle/chunk-rxsgbdv0.js +0 -2
- package/bundle/chunk-s4x1jhj3.js +0 -2
- package/bundle/chunk-s7sksztt.js +0 -3
- package/bundle/chunk-sx760d9d.js +0 -2
- package/bundle/chunk-tmjd3evp.js +0 -8
- package/bundle/chunk-tp1d856p.js +0 -2
- package/bundle/chunk-tpxs00p5.js +0 -2
- package/bundle/chunk-tqk12r89.js +0 -2
- package/bundle/chunk-tycgrqgq.js +0 -2
- package/bundle/chunk-tydvpy1s.js +0 -3
- package/bundle/chunk-tz8qhbk9.js +0 -3
- package/bundle/chunk-v1y3pbfv.js +0 -2
- package/bundle/chunk-v32cyrg2.js +0 -2
- package/bundle/chunk-v7pypmvk.js +0 -2
- package/bundle/chunk-vbqyddy8.js +0 -2
- package/bundle/chunk-vgx86f2r.js +0 -2
- package/bundle/chunk-w0jvqdez.js +0 -2
- package/bundle/chunk-w79yek40.js +0 -2
- package/bundle/chunk-w7nxsfbd.js +0 -3
- package/bundle/chunk-wcea06cr.js +0 -2
- package/bundle/chunk-wcx4bbvn.js +0 -2
- package/bundle/chunk-wdw183vh.js +0 -2
- package/bundle/chunk-wqd3svh6.js +0 -2
- package/bundle/chunk-wqe5spdq.js +0 -2
- package/bundle/chunk-wqww2byk.js +0 -2
- package/bundle/chunk-wybd806z.js +0 -2
- package/bundle/chunk-x1vb00hr.js +0 -2
- package/bundle/chunk-xafh07r3.js +0 -2
- package/bundle/chunk-xgzjcsad.js +0 -2
- package/bundle/chunk-xn0xhd0w.js +0 -3
- package/bundle/chunk-xnbfy5jy.js +0 -2
- package/bundle/chunk-xxed39zx.js +0 -3
- package/bundle/chunk-y6pzag4n.js +0 -2
- package/bundle/chunk-y7w6fjwt.js +0 -2
- package/bundle/chunk-z195gv71.js +0 -2
package/bundle/chunk-fd1vbz1f.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
var f={"language.en":"English","language.zh":"\u7B80\u4F53\u4E2D\u6587","language.zht":"\u7E41\u9AD4\u4E2D\u6587","language.ko":"\uD55C\uAD6D\uC5B4","language.de":"Deutsch","language.es":"Espa\xF1ol","language.fr":"Fran\xE7ais","language.da":"Dansk","language.ja":"\u65E5\u672C\u8A9E","language.pl":"Polski","language.ru":"\u0420\u0443\u0441\u0441\u043A\u0438\u0439","language.ar":"\u0627\u0644\u0639\u0631\u0628\u064A\u0629","language.no":"Norsk","language.br":"Portugu\xEAs (Brasil)","language.pt":"Portugu\xEAs","language.bs":"Bosanski","language.th":"\u0E44\u0E17\u0E22","language.tr":"T\xFCrk\xE7e","tui.prompt.placeholder.normal":"Type your message... (type / for commands)","tui.prompt.placeholder.shell":'Run a command... "{{example}}"',"tui.prompt.ghost":"{{prediction}} (Tab to accept)","tui.home.placeholder.example.todo":"Fix a TODO in the codebase","tui.home.placeholder.example.stack":"What is the tech stack of this project?","tui.home.placeholder.example.tests":"Fix broken tests","tui.home.agreement.prefix":"By using QitQode, you agree to our ","tui.home.agreement.terms":"Terms of Service","tui.home.agreement.separator":" and ","tui.home.agreement.privacy":"Privacy Policy","tui.home.agreement.suffix":"","tui.prompt.hint.attach_file":"attach file","tui.prompt.hint.subagent":"subagent","tui.prompt.hint.commands":"commands","tui.prompt.hint.switch_mode":"switch mode","tui.prompt.hint.settings":"settings","tui.tips.label":"Tip","tui.tips.plain_terminal":"QitQode looks best in iTerm2 or VS Code's integrated terminal","tui.tips.attach_file":"Hit {highlight}@{/highlight} and start typing to fuzzy-find and attach a file to your prompt","tui.tips.shell_prefix":"Prefix any message with {highlight}!{/highlight} to run it as a shell command \u2014 try {highlight}!git log{/highlight}","tui.tips.tab_agent":"{highlight}Tab{/highlight} and {highlight}Shift+Tab{/highlight} step through your Build, Plan, and Compose agents","tui.tips.theme_mode":"Switch between dark and light themes with {highlight}/dark{/highlight} or {highlight}/light{/highlight}","tui.tips.doc":"Pull up the full documentation anytime with {highlight}/doc{/highlight}","tui.tips.undo":"{highlight}/undo{/highlight} rolls back both the last message and any files it touched","tui.tips.redo":"Changed your mind? {highlight}/redo{/highlight} brings back what you just undid","tui.tips.drag_drop":"Drop images or PDFs straight into the terminal window to add them as context","tui.tips.paste_image":"Got something in your clipboard? {highlight}Ctrl+V{/highlight} pastes images directly into the prompt","tui.tips.editor":"Long prompt? Hit {highlight}Ctrl+X E{/highlight} or {highlight}/editor{/highlight} to write it in your editor of choice","tui.tips.init":"Let {highlight}/init{/highlight} read your project and generate a tailored rules file automatically","tui.tips.models":"Swap between Default, Fast, Economy, and Power with {highlight}/models{/highlight} or {highlight}Ctrl+X M{/highlight}","tui.tips.theme":`Lock your theme mode against your terminal's background \u2014 open the command palette ({highlight}Ctrl+P{/highlight}) and search for "lock"`,"tui.tips.new_session":"Start a clean slate with {highlight}Ctrl+X N{/highlight} or just type {highlight}/new{/highlight}","tui.tips.sessions":"Pick up where you left off \u2014 {highlight}/sessions{/highlight} or {highlight}Ctrl+X L{/highlight} lists all your past conversations","tui.tips.compact":"Running low on context? {highlight}/compact{/highlight} condenses the session into a concise summary","tui.tips.export":"Save any conversation as a Markdown file with {highlight}Ctrl+X X{/highlight} or {highlight}/export{/highlight}","tui.tips.copy_last":"{highlight}Ctrl+X Y{/highlight} copies QitQode's last response straight to your clipboard","tui.tips.command_palette":"Everything in one place \u2014 hit {highlight}Ctrl+P{/highlight} to open the full command palette","tui.tips.leader":"{highlight}Ctrl+X{/highlight} is your shortcut prefix \u2014 pair it with another key to trigger quick actions","tui.tips.f2":"Tap {highlight}F2{/highlight} to jump between your recently used models without opening the picker","tui.tips.sidebar":"Toggle the sidebar on or off with {highlight}Ctrl+X B{/highlight}","tui.tips.history":"Scroll through the conversation with {highlight}PageUp{/highlight} and {highlight}PageDown{/highlight}","tui.tips.jump_first":"Jump straight to the top of any conversation with {highlight}Ctrl+G{/highlight} or {highlight}Home{/highlight}","tui.tips.jump_last":"Skip to the latest message instantly with {highlight}Ctrl+Alt+G{/highlight} or {highlight}End{/highlight}","tui.tips.newline":"Need a line break in your prompt? {highlight}Shift+Enter{/highlight} or {highlight}Ctrl+J{/highlight} does it","tui.tips.clear_input":"Typed something you don't want? {highlight}Ctrl+C{/highlight} wipes the input field clean","tui.tips.escape":"Hit {highlight}Escape{/highlight} to interrupt QitQode and stop it mid-response","tui.tips.plan_agent":"The {highlight}Plan{/highlight} agent thinks through problems and proposes changes without touching any files","tui.tips.subagent":"Mention {highlight}@agent-name{/highlight} in your prompt to hand off to a specialized subagent","tui.tips.cycle_sessions":"Navigate between parent and child sessions with {highlight}Ctrl+X Right{/highlight} and {highlight}Ctrl+X Left{/highlight}","tui.tips.config_files":"{highlight}qitqode.json{/highlight} controls server behavior; {highlight}tui.json{/highlight} controls the terminal interface","tui.tips.global_config":"Your global TUI preferences live at {highlight}~/.config/qitqode/tui.json{/highlight}","tui.tips.schema":"Drop {highlight}$schema{/highlight} into your config file to unlock editor autocomplete","tui.tips.default_model":"Set the {highlight}model{/highlight} key in your config to lock in a preferred tier","tui.tips.keybinds":"Every keybind is overridable \u2014 drop it in the {highlight}keybinds{/highlight} section of {highlight}tui.json{/highlight}","tui.tips.disable_keybind":"Assign {highlight}none{/highlight} to any keybind to remove it entirely","tui.tips.mcp_config":"Wire up local or remote MCP servers through the {highlight}mcp{/highlight} section of your config","tui.tips.mcp_oauth":"Remote MCP servers that require OAuth? QitQode manages the auth flow for you","tui.tips.custom_command":"Save reusable prompts as {highlight}.md{/highlight} files in {highlight}.qitqode/command/{/highlight}","tui.tips.command_args":"Make commands dynamic with {highlight}$ARGUMENTS{/highlight}, {highlight}$1{/highlight}, and {highlight}$2{/highlight} placeholders","tui.tips.command_backticks":"Inject live shell output into any command using backticks \u2014 e.g. {highlight}`git diff`{/highlight}","tui.tips.custom_agent":"Drop a {highlight}.md{/highlight} file into {highlight}.qitqode/agent/{/highlight} to create a custom AI persona","tui.tips.agent_perms":"Each agent can have its own {highlight}edit{/highlight}, {highlight}bash{/highlight}, and {highlight}webfetch{/highlight} permission set","tui.tips.bash_allow":'Grant specific bash commands automatically \u2014 e.g. {highlight}"git *": "allow"{/highlight}',"tui.tips.bash_deny":'Block dangerous patterns outright \u2014 e.g. {highlight}"rm -rf *": "deny"{/highlight}',"tui.tips.bash_ask":'Require confirmation before certain commands run \u2014 e.g. {highlight}"git push": "ask"{/highlight}',"tui.tips.formatter":"QitQode runs prettier, gofmt, ruff, and other formatters on your files automatically","tui.tips.disable_formatter":'Turn off automatic formatting globally with {highlight}"formatter": false{/highlight} in your config',"tui.tips.custom_formatter":"Map any file extension to a custom formatter command in your config","tui.tips.lsp":"QitQode plugs into your LSP servers for deep, language-aware code understanding","tui.tips.custom_tool":"Give QitQode new capabilities by adding {highlight}.ts{/highlight} tool files to {highlight}.qitqode/tools/{/highlight}","tui.tips.tool_scripts":"Custom tools can shell out to scripts in any language \u2014 Python, Go, Bash, whatever","tui.tips.plugins":"Hook into QitQode's event lifecycle by adding {highlight}.ts{/highlight} files to {highlight}.qitqode/plugin/{/highlight}","tui.tips.plugin_notify":"Write a plugin to fire a desktop notification whenever a session finishes","tui.tips.plugin_protect":"A plugin can intercept file reads and block access to sensitive paths","tui.tips.run":"{highlight}qitqode run{/highlight} lets you drive QitQode from scripts without opening the TUI","tui.tips.continue":"Jump back into your last session from the CLI with {highlight}qitqode --continue{/highlight}","tui.tips.attach_cli":"Pass files into a non-interactive session with {highlight}qitqode run -f yourfile.ts{/highlight}","tui.tips.format_json":"Add {highlight}--format json{/highlight} to get structured output you can pipe into other tools","tui.tips.auth_list":"{highlight}qitqode auth status{/highlight} shows your current Forgewise sign-in status","tui.tips.agent_create":"Walk through building a new agent step by step with {highlight}qitqode agent create{/highlight}","tui.tips.theme_system":`Set {highlight}"theme": "system"{/highlight} to automatically follow your terminal's color scheme`,"tui.tips.theme_files":"Store custom JSON themes in {highlight}.qitqode/themes/{/highlight} to keep them project-local","tui.tips.theme_variants":"A single theme file can define both dark and light variants","tui.tips.theme_ansi":"Custom themes can reference any of the 256 ANSI terminal colors by number","tui.tips.env_var":"Pull in environment variables anywhere in your config with {highlight}{env:VAR_NAME}{/highlight}","tui.tips.file_var":"Embed the contents of any file into a config value using {highlight}{file:path}{/highlight}","tui.tips.instructions":"Point {highlight}instructions{/highlight} in your config to extra rules files to extend the agent's behavior","tui.tips.temperature":"Tune the agent's {highlight}temperature{/highlight} \u2014 lower for precision, higher for open-ended creativity","tui.tips.steps":"Cap how far the agent runs autonomously by setting a {highlight}steps{/highlight} limit in config","tui.tips.disable_tool":'Disable individual tools by setting them to {highlight}false{/highlight} under {highlight}"tools"{/highlight} in config',"tui.tips.disable_mcp_tools":`Silence an entire MCP server's toolset with {highlight}"mcp_*": false{/highlight}`,"tui.tips.tool_override":"Each agent config can override the global tool settings independently","tui.tips.doom_loop":"The {highlight}doom_loop{/highlight} permission guard stops the agent from getting stuck in runaway loops","tui.tips.external_dir":"{highlight}external_directory{/highlight} permission keeps the agent from modifying files outside your project","tui.tips.debug_config":"Something misconfigured? {highlight}qitqode debug config{/highlight} prints the resolved config for inspection","tui.tips.print_logs":"Pipe {highlight}--print-logs{/highlight} output to stderr for a full trace of what QitQode is doing","tui.tips.timeline":"Navigate directly to any message in the session with {highlight}Ctrl+X G{/highlight} or {highlight}/timeline{/highlight}","tui.tips.toggle_code":"Show or hide code blocks in the conversation with {highlight}Ctrl+X H{/highlight}","tui.tips.status":"Check what's running under the hood with {highlight}Ctrl+X S{/highlight} or {highlight}/status{/highlight}","tui.tips.scroll_accel":"Turn on {highlight}scroll_acceleration{/highlight} in {highlight}tui.json{/highlight} for fluid, physics-based scrolling","tui.tips.agents_md":"Share your project's AI rules with the whole team by committing {highlight}AGENTS.md{/highlight} to Git","tui.tips.review":"Ask QitQode to review your staged diff, branch, or open PR with {highlight}/review{/highlight}","tui.tips.help":"Lost? {highlight}/help{/highlight} or {highlight}Ctrl+X H{/highlight} surfaces the full keybind reference","tui.tips.rename":"Give your current session a proper name with {highlight}/rename{/highlight}","tui.tips.suspend.unix":"Need your shell back? {highlight}Ctrl+Z{/highlight} suspends QitQode and drops you back to the terminal","tui.tips.suspend.win":"Hit {highlight}Ctrl+Z{/highlight} to undo your last typed change in the prompt","tui.command.palette.title":"Commands","tui.command.palette.suggested":"Suggested","tui.command.category.session":"Session","tui.command.category.agent":"Agent","tui.command.category.provider":"Provider","tui.command.category.system":"System","tui.command.category.prompt":"Prompt","tui.command.category.internal":"Internal","tui.command.category.external":"External","tui.slash.init.description":"guided AGENTS.md setup","tui.slash.review.description":"review changes [commit|branch|pr], defaults to uncommitted","tui.slash.dream.description":"manually consolidate project memory from memory files and raw trajectory","tui.slash.distill.description":"find repeated workflows in recent work and package them into skills, subagents, or commands","tui.slash.goal.description":"set a stop-condition goal; runs until a judge says it's met. /goal clear to abort","tui.slash.deep-research.description":"deep multi-source, fact-checked research report (runs the deep-research workflow)","tui.command.language.switch.title":"Switch language","tui.command.language.switch.description":"Change the display language","tui.command.language.dialog.title":"Switch language","tui.language.auto":"Auto (system)","tui.language.current":"Current","tui.command.session.list.title":"Switch session","tui.command.session.new.title":"New session","tui.command.workflow.list.title":"Workflows","tui.command.model.list.title":"Switch model","tui.command.model.set_tier.title":"Switch to {{tier}}","tui.toast.model_tier_switched":"Switched to {{tier}}","tui.command.model.cycle_recent.title":"Model cycle","tui.command.model.cycle_recent_reverse.title":"Model cycle reverse","tui.command.model.cycle_favorite.title":"Favorite cycle","tui.command.model.cycle_favorite_reverse.title":"Favorite cycle reverse","tui.command.agent.list.title":"Switch agent","tui.command.mcp.list.title":"Toggle MCPs","tui.command.never_ask.title_on":"Never-ask: ON (auto-decide, permissions excluded) \u2014 click to turn off","tui.command.never_ask.title_off":"Never-ask: OFF \u2014 click to turn on (auto-decide, permissions excluded)","tui.command.never_ask.toast_on":"Never-ask ON \u2014 I won't prompt you; I'll pick the best option myself until you turn it off (/never-ask). Permission requests still need your approval.","tui.command.never_ask.toast_off":"Never-ask OFF \u2014 I'll ask you at decision points again.","tui.command.agent.cycle.title":"Agent cycle","tui.command.variant.cycle.title":"Variant cycle","tui.command.variant.list.title":"Switch model variant","tui.command.agent.cycle.reverse.title":"Agent cycle reverse","tui.command.provider.login.title":"Login","tui.command.provider.logout.title":"Logout","tui.command.console.org.switch.title":"Switch org","tui.command.qitqode.status.title":"View status","tui.command.worktree.list.title":"Worktrees","tui.command.theme.switch.title":"Switch theme","tui.command.theme.switch_mode.to_light":"Switch to light mode","tui.command.theme.switch_mode.to_dark":"Switch to dark mode","tui.command.theme.mode.unlock":"Unlock theme mode","tui.command.theme.mode.lock":"Lock theme mode","tui.command.help.show.title":"Help","tui.dialog.help.close_hint":"esc/enter/space","tui.dialog.help.accessibility":"Accessibility: toggle animations and sound from the command list. Env vars: NO_COLOR, QITQODE_TUI_ACCESSIBLE, QITQODE_REDUCE_MOTION, QITQODE_TUI_SOUND.","tui.dialog.help.announcements":"Announcements: in accessible mode, choose how chatty screen-reader announcements are (quiet, normal, verbose) from the command list or with QITQODE_TUI_ANNOUNCEMENTS. Errors are always announced.","tui.dialog.help.dialog_keys":"Dialogs: every dialog works with the keyboard alone \u2014 Esc closes, Tab or arrow keys move focus, Enter or Space activates the focused control.","tui.command.app.announcements.cycle":"Announcements: {{level}} (select to change)","tui.announcements.level.quiet":"quiet","tui.announcements.level.normal":"normal","tui.announcements.level.verbose":"verbose","tui.app.terminal_too_small":"Terminal too small ({{width}}x{{height}}). Resize to at least 40x8.","tui.dialog.help.command_list":"Press {{keybind}} to see all available actions and commands in any context.","tui.dialog.help.ok":"ok","tui.dialog.close_hint":"esc","tui.dialog.document.scroll_hint":"\u2191/\u2193 scroll \xB7 PgUp/PgDn page \xB7 esc close","tui.dialog.ok":"ok","tui.dialog.confirm.cancel":"Cancel","tui.dialog.confirm.confirm":"Confirm","tui.dialog.agreement.title":"Terms & Privacy","tui.dialog.agreement.message":"Please review and agree to continue.","tui.dialog.agreement.confirm":"Agree & Continue","tui.command.docs.terms.title":"View Terms of Service","tui.command.docs.privacy.title":"View Privacy Policy","tui.command.consent.revoke.title":"Revoke free-model agreement","tui.consent.revoked":"Free-model agreement revoked \u2014 you'll be asked to agree again","tui.dialog.select.placeholder":"Search","tui.dialog.select.no_results":"No results found","tui.dialog.prompt.placeholder":"Enter text","tui.dialog.prompt.busy":"Working...","tui.dialog.prompt.processing":"processing...","tui.dialog.prompt.submit_key":"enter","tui.dialog.prompt.submit_action":"submit","tui.dialog.export.title":"Export Options","tui.dialog.export.filename":"Filename:","tui.dialog.export.filename_placeholder":"Enter filename","tui.dialog.export.include_thinking":"Include thinking","tui.dialog.export.include_tool_details":"Include tool details","tui.dialog.export.include_assistant_metadata":"Include assistant metadata","tui.dialog.export.open_without_saving":"Open without saving","tui.dialog.export.hint.toggle_prefix":"Press","tui.dialog.export.hint.toggle_action":"to toggle","tui.dialog.export.hint.confirm_action":"to confirm","tui.dialog.export.hint.options_action":"for options","tui.toast.copied_to_clipboard":"Copied to clipboard","tui.toast.instructions_loaded":"Loaded {{files}}","tui.toast.update_available.title":"Update Available","tui.toast.update_available.confirm":"A new release v{{version}} is available. Would you like to update now?","tui.toast.update_available.updating":"Updating to v{{version}}...","tui.toast.update_available.failed":"Update failed","tui.toast.update_available.success":"Successfully updated to QitQode v{{version}}. Please restart the application.","tui.toast.updated.title":"Auto-updated","tui.toast.updated.message":"Patch update applied: v{{version}}. Restart to use the new version. Disable via autoupdate: false in config.","tui.sidebar.instructions":"Instructions","tui.sidebar.cwd":"Working Directory","tui.toast.unknown_error":"An unknown error has occurred","tui.command.docs.open.title":"Open docs","tui.command.app.exit.title":"Exit the app","tui.command.app.debug.title":"Toggle debug panel","tui.command.app.console.title":"Toggle console","tui.command.app.heap_snapshot.title":"Write heap snapshot","tui.command.terminal.suspend.title":"Suspend terminal","tui.command.terminal.title.disable":"Disable terminal title","tui.command.terminal.title.enable":"Enable terminal title","tui.command.app.toggle.animations.disable":"Disable animations","tui.command.app.toggle.animations.enable":"Enable animations","tui.command.app.toggle.diffwrap.disable":"Disable diff wrapping","tui.command.app.toggle.diffwrap.enable":"Enable diff wrapping","tui.command.app.toggle.sound.disable":"Disable sound","tui.command.app.toggle.sound.enable":"Enable sound","tui.command.logout.toast":"Logged out","tui.command.session.share.title":"Share session","tui.command.session.share.copy_link":"Copy share link","tui.command.session.rename.title":"Rename session","tui.command.session.timeline.title":"Jump to message","tui.command.session.fork.title":"Fork session","tui.command.session.compact.title":"Compact session","tui.command.session.unshare.title":"Unshare session","tui.command.session.undo.title":"Undo previous message","tui.command.session.redo.title":"Redo","tui.command.session.sidebar.show":"Show sidebar","tui.command.session.sidebar.hide":"Hide sidebar","tui.command.session.conceal.disable":"Disable code concealment","tui.command.session.conceal.enable":"Enable code concealment","tui.command.session.timestamps.show":"Show timestamps","tui.command.session.timestamps.hide":"Hide timestamps","tui.command.session.thinking.expand":"Expand thinking","tui.command.session.thinking.collapse":"Collapse thinking","tui.command.session.tool_details.show":"Show tool details","tui.command.session.tool_details.hide":"Hide tool details","tui.command.session.scrollbar.toggle":"Toggle session scrollbar","tui.command.session.generic_tool_output.show":"Show generic tool output","tui.command.session.generic_tool_output.hide":"Hide generic tool output","tui.command.session.page_up.title":"Page up","tui.command.session.page_down.title":"Page down","tui.command.session.line_up.title":"Line up","tui.command.session.line_down.title":"Line down","tui.command.session.half_page_up.title":"Half page up","tui.command.session.half_page_down.title":"Half page down","tui.command.session.first.title":"First message","tui.command.session.last.title":"Last message","tui.command.session.last_user.title":"Jump to last user message","tui.command.session.message_next.title":"Next message","tui.command.session.message_previous.title":"Previous message","tui.command.messages.copy.title":"Copy last assistant message","tui.command.session.copy.title":"Copy session transcript","tui.command.session.export.title":"Export session transcript","tui.command.session.child_first.title":"Go to child session","tui.command.session.parent.title":"Go to parent session","tui.command.session.child_next.title":"Next child session","tui.command.session.child_previous.title":"Previous child session","tui.command.prompt.clear.title":"Clear prompt","tui.command.prompt.submit.title":"Submit prompt","tui.command.prompt.paste.title":"Paste","tui.command.session.interrupt.title":"Interrupt session","tui.command.prompt.editor.title":"Open editor","tui.command.prompt.skills.title":"Skills","tui.command.voice.toggle.title":"Toggle voice input","tui.command.voice.toggle.title_on":"Voice input: ON \u2014 click to turn off","tui.command.voice.toggle.title_off":"Voice input: OFF \u2014 click to turn on","tui.command.voice.send.title":"Toggle voice send command","tui.command.voice.send.title_on":"Voice send: ON \u2014 click to turn off","tui.command.voice.send.title_off":"Voice send: OFF \u2014 click to turn on","tui.voice.enabled":"Voice input on (Chinese/English) \u2014 click [Voice] to record","tui.voice.disabled":"Voice input disabled","tui.voice.send.enabled":'Voice send enabled \u2014 after a pause, clearly say "send it" to submit',"tui.voice.send.disabled":"Voice send disabled","tui.voice.control.enabled":"Voice control enabled \u2014 using multimodal model for intelligent editing (slower)","tui.voice.control.disabled":"Voice control disabled \u2014 using fast ASR transcription","tui.command.voice.control.title":"Toggle voice control (multimodal)","tui.command.voice.control.title_on":"Voice control: ON (multimodal) \u2014 click to turn off","tui.command.voice.control.title_off":"Voice control: OFF (fast ASR) \u2014 click to turn on","tui.voice.error.no_auth":"Use /connect to sign in to QitQode, or configure voice.asr_model for another provider","tui.voice.error.no_auth_provider":'Voice provider "{{provider}}" is not authenticated, check its apiKey',"tui.voice.error.provider_not_found":'Provider "{{provider}}" not available \u2014 /connect to authenticate, or declare models in config for custom endpoints',"tui.voice.error.no_url":'Provider "{{provider}}" has no baseURL configured \u2014 set options.baseURL in the provider config',"tui.voice.error.no_device":"No microphone/audio device found \u2014 please check your system audio settings","tui.voice.error.recorder_failed":"Recording failed","tui.voice.error.no_recorder":"No recording tool found, please install sox","tui.voice.error.too_short":"Recording too short","tui.voice.error.network":"Transcription failed, please check your network","tui.voice.error.empty_send":"Nothing to send","tui.voice.error.unknown_agent":'Agent "{{name}}" not found',"tui.command.prompt.stash.title":"Stash prompt","tui.command.prompt.stash.pop.title":"Stash pop","tui.command.prompt.stash.list.title":"Stash list","tui.command.tips.toggle.show":"Show tips","tui.command.tips.toggle.hide":"Hide tips","tui.command.plugins.list.title":"Plugins","tui.command.plugins.install.title":"Install plugin","tui.dialog.login.title":"QitQode Sign In","cli.providers.select":"Select provider","cli.providers.other":"Other provider","tui.dialog.login.forgewise":"Sign in with Forgewise","tui.dialog.login.import_claude":"Import from Claude Code","tui.dialog.login.other":"Other Provider","tui.dialog.login.import_claude.no_key":"Claude Code API Key not found","tui.dialog.login.import_claude.read_failed":"Failed to read ~/.claude/settings.json","tui.dialog.login.import_claude.success":"Imported from Claude Code","tui.question.plan_enter.question":"Would you like to switch to plan mode for structured planning?","tui.question.plan_enter.header":"Plan","tui.question.plan_enter.option.0.label":"Yes","tui.question.plan_enter.option.0.description":"Switch to plan agent for read-only planning","tui.question.plan_enter.option.1.label":"No","tui.question.plan_enter.option.1.description":"Stay in current mode","tui.question.plan_exit.question":"Plan at {{plan}} is complete. Would you like to switch to the build agent and start implementing?","tui.question.plan_exit.header":"Plan","tui.question.plan_exit.option.0.label":"Yes","tui.question.plan_exit.option.0.description":"Switch to build agent and start implementing the plan","tui.question.plan_exit.option.1.label":"No","tui.question.plan_exit.option.1.description":"Stay with plan agent to continue refining the plan","tui.session.badge.auto":"Auto","trust.title":"Accessing workspace:","trust.safety_check":"Quick safety check: Is this a project you created or one you trust? (Like your own code, a well-known open source project, or work from your team). If not, take a moment to review what's in this folder first.","trust.capabilities":"QitQode will be able to read, edit, and execute files here.","trust.plugin_warn":"If malicious plugins exist in this directory, they can execute arbitrary code, read, modify, or exfiltrate your files.","trust.option.yes":"Yes, I trust this folder","trust.option.no":"No, exit","trust.dangerous.title_home":"WARNING: You are about to open your HOME DIRECTORY.","trust.dangerous.title_root":"WARNING: You are about to open the FILESYSTEM ROOT.","trust.dangerous.body_home":"The model will have access to ALL your personal files \u2014 SSH keys, credentials, browser profiles, and everything else under your home folder.","trust.dangerous.body_root":"The model will have access to the ENTIRE filesystem \u2014 system files, all user data, credentials, and everything on this machine.","trust.dangerous.advice_home":"Unless you have a very specific reason, DO NOT trust your entire home directory.","trust.dangerous.advice_root":"Unless you have a very specific reason, DO NOT trust the filesystem root.","trust.dangerous.option.yes":"I understand the risks, trust for this session","trust.dangerous.option.no":"Exit (recommended)"};
|
|
3
|
-
export{f as xd};
|
package/bundle/chunk-febbrhev.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{G as x}from"./chunk-xn0xhd0w.js";import{Sf as D}from"./chunk-s75chpxq.js";import{Bg as N,sg as B,vg as H,xg as M,yg as A}from"./chunk-1gjh45v5.js";import{Dj as C}from"./chunk-2wcwbp3t.js";import{bI as q}from"./chunk-shav33fq.js";var L="forgewise";function W(j){if(!j||j.type!=="api")return"skip";if(j.method==="api-key")return"skip";if(H(j.expiresAt))return"skip";return"probe"}function Y(j){if(j===null)return"skipped";if(!j)return"revoked";return"valid"}function b(j){if(!j||j.type!=="api")return{kind:"skip"};if(j.method==="api-key")return{kind:"skip"};if(!H(j.expiresAt))return{kind:"skip"};if(j.refreshToken)return{kind:"refresh-token",refreshToken:j.refreshToken};return{kind:"browser"}}function G(j){if(j==="invalid_grant")return{kind:"revoked"};if(j===null)return{kind:"transient"};return{kind:"persist",credential:x(j,{rotateRefreshToken:!0})}}var O=1e4;function P(j){if(!j)return;if(j.type!=="api")return{type:j.type,expiresAt:0};return{type:j.type,method:j.metadata?.method,expiresAt:Number(j.metadata?.expires_at??0),refreshToken:j.metadata?.refresh_token}}function k(){if(process.platform==="linux")return Boolean(process.env.DISPLAY||process.env.WAYLAND_DISPLAY);return process.platform==="win32"||process.platform==="darwin"}var V=()=>q.gen(function*(){let j=yield*C.Service,z=yield*q.orElseSucceed(j.get(L),()=>{return});if(W(P(z))==="skip")return"skipped";if(!z||z.type!=="api")return"skipped";let J=yield*q.orElseSucceed(q.tryPromise({try:()=>B(),catch:()=>{return}}).pipe(q.map((Z)=>Z.issuer)),()=>{return});if(!J)return"skipped";let Q=yield*q.promise(()=>M(J,z.key)),X=Y(Q);if(X==="revoked")yield*q.orElseSucceed(j.remove(L),()=>{return});return X}).pipe(q.withSpan("forgewise.validateStoredToken")),y=()=>q.gen(function*(){let j=yield*C.Service,z=yield*q.orElseSucceed(j.get(L),()=>{return}),J=b(P(z));if(J.kind==="skip")return"skipped";if(J.kind==="refresh-token"){let K=yield*q.promise(()=>A(J.refreshToken).catch(()=>null)),$=G(K);if($.kind==="revoked")return yield*q.orElseSucceed(j.remove(L),()=>{return}),"failed";if($.kind==="persist")return(yield*j.set(L,$.credential).pipe(q.map(()=>!0),q.catch(()=>q.succeed(!1))))?"ok":"failed"}if(!k())return"skipped";let Q=new AbortController,X=setTimeout(()=>Q.abort(),O),Z=yield*q.promise(()=>N({signal:Q.signal}).catch(()=>null).finally(()=>clearTimeout(X)));if(!Z)return"failed";let v=x(Z,{rotateRefreshToken:!1});return(yield*j.set(L,v).pipe(q.map(()=>!0),q.catch(()=>q.succeed(!1))))?"ok":"failed"}).pipe(q.withSpan("forgewise.refreshIfNeeded"));var p=()=>q.gen(function*(){if((yield*V())==="revoked")return yield*q.sync(()=>D.println(D.Style.TEXT_DANGER+"Your session was revoked (signed out from another device or by an admin action). Run `qitqode auth login` to sign in again."+D.Style.TEXT_NORMAL)),"revoked";if((yield*y())==="failed")yield*q.sync(()=>D.println(D.Style.TEXT_DIM+"(Session refresh failed \u2014 run `qitqode auth login` to re-authenticate)"+D.Style.TEXT_NORMAL));return"ok"});
|
|
3
|
-
export{p as g};
|
package/bundle/chunk-fq4v97xn.js
DELETED
package/bundle/chunk-fw1f6br4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{g as G}from"./chunk-febbrhev.js";import{D as x,E as F,F as Z}from"./chunk-xn0xhd0w.js";import{Od as P}from"./chunk-wmmck56g.js";import{Sf as j}from"./chunk-s75chpxq.js";import{wg as v}from"./chunk-1gjh45v5.js";import{qh as X}from"./chunk-my0kzcby.js";import"./chunk-1v47v7vm.js";import"./chunk-tmjd3evp.js";import"./chunk-q6x5bmc3.js";import"./chunk-n1m5qdf5.js";import"./chunk-zeh3mjgp.js";import"./chunk-ntfh16rj.js";import"./chunk-tz8qhbk9.js";import"./chunk-hvcdemxe.js";import{Dj as $}from"./chunk-2wcwbp3t.js";import"./chunk-3sem578c.js";import"./chunk-fzzze6zd.js";import"./chunk-afpwjn78.js";import"./chunk-c4x99ayd.js";import"./chunk-44amvtcs.js";import"./chunk-cbfjjbfd.js";import"./chunk-c7dt464m.js";import"./chunk-jazpapb9.js";import"./chunk-knnemqfm.js";import"./chunk-hqv0s6sw.js";import"./chunk-apv1v4tk.js";import"./chunk-7tb9fjvq.js";import"./chunk-fp5mvrrx.js";import"./chunk-zzdbrxkh.js";import"./chunk-cqtkxwd8.js";import"./chunk-xtj5qqsw.js";import"./chunk-w32tj884.js";import"./chunk-29hmwttd.js";import"./chunk-2qy760rf.js";import"./chunk-kfdqfha0.js";import"./chunk-t42kh492.js";import"./chunk-8hh5ejmr.js";import"./chunk-mwbcmvmh.js";import"./chunk-9y65kbcf.js";import"./chunk-24r5h0fx.js";import"./chunk-vxc5q0wk.js";import"./chunk-dsny9dh8.js";import"./chunk-scb48j07.js";import"./chunk-k33xx2z9.js";import"./chunk-tydvpy1s.js";import"./chunk-b2k9yafd.js";import"./chunk-sjqgmp12.js";import"./chunk-jek1cnfk.js";import"./chunk-s7sksztt.js";import"./chunk-22vvjp4g.js";import"./chunk-a3te67a5.js";import"./chunk-kdr6nxmk.js";import{bI as D}from"./chunk-shav33fq.js";import"./chunk-bqeyh2gx.js";import"./chunk-kpkbyek5.js";import"./chunk-naq602da.js";var Y="forgewise";function _(J){return D.gen(function*(){let z=yield*J.get(Y);if(!z||z.type!=="api")return null;let M=(z.metadata??{}).sub,V=z.key;if(!M)return null;return{sub:M,accessToken:V}})}var H=()=>D.gen(function*(){if((yield*G())==="revoked")return null;let J=yield*$.Service,z=yield*_(J);if(!z)return yield*D.sync(()=>j.println(j.Style.TEXT_DANGER+"Not signed in to Forgewise. Run `qitqode auth login` first."+j.Style.TEXT_NORMAL)),null;return z}),k=()=>D.gen(function*(){let J=yield*H();if(!J)return;let z=yield*D.tryPromise({try:()=>v(J.accessToken),catch:()=>null}).pipe(D.orElseSucceed(()=>null));if(!z){yield*D.sync(()=>j.println(j.Style.TEXT_DANGER+"Could not fetch balance."+j.Style.TEXT_NORMAL));return}yield*D.sync(()=>j.println(j.Style.TEXT_SUCCESS+"Qredits balance: "+j.Style.TEXT_NORMAL+j.Style.TEXT_HIGHLIGHT_BOLD+Z(z.balance)+j.Style.TEXT_NORMAL))}).pipe(D.withSpan("qredits.balance")),w=()=>D.gen(function*(){let J=yield*H();if(!J)return;let z=yield*D.tryPromise({try:()=>F({userId:J.sub,accessToken:J.accessToken,limit:20}),catch:(L)=>L});if(z instanceof Error){let L=z instanceof x?z.message:String(z);yield*D.sync(()=>j.println(j.Style.TEXT_DANGER+"Could not fetch history: "+L+j.Style.TEXT_NORMAL));return}if(z.length===0){yield*D.sync(()=>j.println("No spend history yet."));return}let N=j.Style.TEXT_DIM,M=j.Style.TEXT_NORMAL,V=j.Style.TEXT_DANGER;yield*D.sync(()=>{j.println(N+" Date Description Amount"+M),j.println(N+" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500"+M);for(let L of z){let K=(L.date||"").slice(0,10).padEnd(18),O=(L.description||"").slice(0,32).padEnd(32),T=(L.amount<0?"-":" ")+Z(Math.abs(L.amount)),W=L.amount<0?V:M;j.println(` ${N}${K}${M} ${O} ${W}${T}${M}`)}})}).pipe(D.withSpan("qredits.history")),g=P({command:"qredits <command>",describe:"Check Qredits balance and spend history",builder:(J)=>J.command(P({command:"balance",describe:"Show current Qredits balance",builder:(z)=>z,async handler(){j.empty(),await X.runPromise(k())}})).command(P({command:"history",describe:"Show recent Qredit spend history",builder:(z)=>z,async handler(){j.empty(),await X.runPromise(w())}})).demandCommand(),async handler(){}});export{w as historyEffect,k as balanceEffect,g as QreditsCommand};
|
package/bundle/chunk-fzzze6zd.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{$l as Qi,Vl as no,Wl as Vi,Xl as oo,Yl as ci,_l as $i}from"./chunk-afpwjn78.js";import{$m as yt,$n as Zt,Am as Er,An as Nt,Bm as Wr,Bn as Tt,Cm as Pr,Cn as lt,Dm as Ur,Dn as At,Em as Zr,En as Ot,Eo as Zi,Fm as vr,Fn as dt,Gm as Xr,Gn as Lo,Hm as Yr,Hn as Go,Im as H,In as $t,Jm as zr,Jn as Qt,Km as kr,Kn as Bt,Lm as Vr,Ln as Dt,Mm as cr,Mn as It,Nm as wr,Nn as Lt,Om as qr,On as Gt,Pm as Fr,Pn as Mt,Qm as ar,Qn as xt,Rm as jr,Rn as Ct,Sm as br,Sn as Jt,Tm as hr,Tn as Ht,Um as nt,Un as Kt,Vm as ot,Vn as Rt,Wm as rt,Wn as St,Xm as tt,Xn as Et,Ym as it,Yn as Wt,Zm as et,Zn as Pt,_m as mt,_n as Ut,am as pr,an as ft,ao as vt,bm as _r,bn as gt,bo as Xt,cm as En,cn as a,co as Yt,dm as Wn,dn as Q,do as zt,em as Nr,en as fn,eo as kt,fm as Tr,fn as yn,fo as Vt,gm as lr,gn as Yo,go as ct,hn as ut,ho as wt,im as Ar,in as X,io as qt,jm as Or,jn as so,jo as Ft,km as dr,kn as Pn,ko as at,lm as $r,ln as po,lo as jt,mm as Qr,mn as _o,mo as bt,nm as Br,nn as No,no as ht,om as Dr,on as To,oo as ni,pm as Ir,pn as lo,po as oi,qm as Lr,qn as Ao,qo as ri,rm as Gr,rn as Oo,ro as ti,sm as Mr,sn as st,so as ii,tm as xr,tn as $o,to as ei,um as Cr,un as Qo,uo as mi,vm as Jr,vn as Bo,vo as yi,wm as Hr,wn as pt,wo as ao,xm as Kr,xn as Do,xo as fi,ym as Rr,yn as _t,yo as gi,zm as Sr,zn as Io,zo as ui}from"./chunk-c4x99ayd.js";import{ip as bn,mp as hn}from"./chunk-jazpapb9.js";import{tp as Yi}from"./chunk-hqv0s6sw.js";import{up as Jo}from"./chunk-apv1v4tk.js";import{sr as Xn,tr as ro,ur as Nn,vr as Hi,wr as Wi,yr as Ki}from"./chunk-mwbcmvmh.js";import{zr as Si}from"./chunk-9y65kbcf.js";import{Fs as eo}from"./chunk-scb48j07.js";import{Js as Wo,Ws as un,et as dn,ft as nn,ot as V}from"./chunk-tydvpy1s.js";import{At as di,Dt as wo,Et as c,It as go}from"./chunk-b2k9yafd.js";import{Kt as j}from"./chunk-jek1cnfk.js";import{Xz as Tn,dA as Cn,rA as Kn}from"./chunk-kdr6nxmk.js";import{AF as h,DN as N,IE as Eo,OO as Oi,PE as kn,PN as vo,WE as sn,bI as r,gC as wn,kF as Ai,lD as Qn,qJ as Ln}from"./chunk-shav33fq.js";import{pP as On}from"./chunk-naq602da.js";var qo={};On(qo,{run:()=>ji});var mn={time_created:a().notNull().$default(()=>Date.now()),time_updated:a().notNull().$onUpdate(()=>Date.now())};var x=yn("project",{id:Q().$type().primaryKey(),worktree:Q().notNull(),vcs:Q(),name:Q(),icon_url:Q(),icon_color:Q(),...mn,time_initialized:a(),sandboxes:Q({mode:"json"}).notNull().$type(),commands:Q({mode:"json"}).$type()});var gn=yn("session",{id:Q().$type().primaryKey(),project_id:Q().$type().notNull().references(()=>x.id,{onDelete:"cascade"}),workspace_id:Q().$type(),parent_id:Q().$type(),context_from:Q().$type(),context_watermark:Q().$type(),slug:Q().notNull(),directory:Q().notNull(),title:Q().notNull(),version:Q().notNull(),share_url:Q(),summary_additions:a(),summary_deletions:a(),summary_files:a(),summary_diffs:Q({mode:"json"}).$type(),revert:Q({mode:"json"}).$type(),permission:Q({mode:"json"}).$type(),...mn,time_compacting:a(),time_archived:a(),last_checkpoint_message_id:Q().$type()},(n)=>[fn("session_project_idx").on(n.project_id),fn("session_workspace_idx").on(n.workspace_id),fn("session_parent_idx").on(n.parent_id),fn("session_context_from_idx").on(n.context_from)]),fo=yn("message",{id:Q().$type().primaryKey(),session_id:Q().$type().notNull().references(()=>gn.id,{onDelete:"cascade"}),agent_id:Q().notNull().default("main"),...mn,data:Q({mode:"json"}).notNull().$type()},(n)=>[fn("message_session_time_created_id_idx").on(n.session_id,n.time_created,n.id),fn("message_session_agent_idx").on(n.session_id,n.agent_id,n.id)]),zo=yn("part",{id:Q().$type().primaryKey(),message_id:Q().$type().notNull().references(()=>fo.id,{onDelete:"cascade"}),session_id:Q().$type().notNull(),...mn,data:Q({mode:"json"}).notNull().$type()},(n)=>[fn("part_message_id_id_idx").on(n.message_id,n.id),fn("part_session_idx").on(n.session_id)]),ko=yn("todo",{session_id:Q().$type().notNull().references(()=>gn.id,{onDelete:"cascade"}),content:Q().notNull(),status:Q().notNull(),position:a().notNull(),...mn},(n)=>[Yo({columns:[n.session_id,n.position]}),fn("todo_session_idx").on(n.session_id)]),Vo=yn("permission",{project_id:Q().primaryKey().references(()=>x.id,{onDelete:"cascade"}),...mn,data:Q({mode:"json"}).notNull().$type()});var co=yn("session_share",{session_id:Q().primaryKey().references(()=>gn.id,{onDelete:"cascade"}),id:Q().notNull(),secret:Q().notNull(),url:Q().notNull(),...mn});import k from"path";var v=V.create({service:"json-migration"});async function ji(n,o){let t=k.join(dn.Path.data,"storage");if(!await go.exists(t))return v.info("storage directory does not exist, skipping migration"),{projects:0,sessions:0,messages:0,parts:0,todos:0,permissions:0,shares:0,errors:[]};v.info("starting json to sqlite migration",{storageDir:t});let s=performance.now();n.run("PRAGMA journal_mode = WAL"),n.run("PRAGMA synchronous = OFF"),n.run("PRAGMA cache_size = 10000"),n.run("PRAGMA temp_store = MEMORY");let e={projects:0,sessions:0,messages:0,parts:0,todos:0,permissions:0,shares:0,errors:[]},l={sessions:0,todos:0,permissions:0,shares:0},_=e.errors,A=1000,C=Date.now();async function S(g){return wo.scan(g,{cwd:t,absolute:!0})}async function K(g,G,J){let B=J-G,T=Array(B);for(let P=0;P<B;P++)T[P]=go.readJson(g[G+P]);let M=await Promise.allSettled(T),Z=Array(B);for(let P=0;P<M.length;P++){let w=M[P];if(w.status==="fulfilled"){Z[P]=w.value;continue}_.push(`failed to read ${g[G+P]}: ${w.reason}`)}return Z}function R(g,G,J){if(g.length===0)return 0;try{return n.insert(G).values(g).onConflictDoNothing().run(),g.length}catch(B){return _.push(`failed to migrate ${J} batch: ${B}`),0}}v.info("scanning files...");let[E,d,D,L,u,p,m]=await Promise.all([S("project/*.json"),S("session/*/*.json"),S("message/*/*.json"),S("part/*/*.json"),S("todo/*.json"),S("permission/*.json"),S("session_share/*.json")]);v.info("file scan complete",{projects:E.length,sessions:d.length,messages:D.length,parts:L.length,todos:u.length,permissions:p.length,shares:m.length});let f=Math.max(1,E.length+d.length+D.length+L.length+u.length+p.length+m.length),i=o?.progress,y=0,$=(g,G)=>{y=Math.min(f,y+G),i?.({current:y,total:f,label:g})};i?.({current:y,total:f,label:"starting"}),n.run("BEGIN TRANSACTION");let I=new Set,O=[];for(let g=0;g<E.length;g+=A){let G=Math.min(g+A,E.length),J=await K(E,g,G);O.length=0;for(let B=0;B<J.length;B++){let T=J[B];if(!T)continue;let M=k.basename(E[g+B],".json");I.add(M),O.push({id:M,worktree:T.worktree??"/",vcs:T.vcs,name:T.name??void 0,icon_url:T.icon?.url,icon_color:T.icon?.color,time_created:T.time?.created??C,time_updated:T.time?.updated??C,time_initialized:T.time?.initialized,sandboxes:T.sandboxes??[],commands:T.commands})}e.projects+=R(O,x,"project"),$("projects",G-g)}v.info("migrated projects",{count:e.projects,duration:Math.round(performance.now()-s)});let U=d.map((g)=>k.basename(k.dirname(g))),z=new Set,en=[];for(let g=0;g<d.length;g+=A){let G=Math.min(g+A,d.length),J=await K(d,g,G);en.length=0;for(let B=0;B<J.length;B++){let T=J[B];if(!T)continue;let M=k.basename(d[g+B],".json"),Z=U[g+B];if(!I.has(Z)){l.sessions++;continue}z.add(M),en.push({id:M,project_id:Z,parent_id:T.parentID??null,slug:T.slug??"",directory:T.directory??"",title:T.title??"",version:T.version??"",share_url:T.share?.url??null,summary_additions:T.summary?.additions??null,summary_deletions:T.summary?.deletions??null,summary_files:T.summary?.files??null,summary_diffs:T.summary?.diffs??null,revert:T.revert??null,permission:T.permission??null,time_created:T.time?.created??C,time_updated:T.time?.updated??C,time_compacting:T.time?.compacting??null,time_archived:T.time?.archived??null})}e.sessions+=R(en,gn,"session"),$("sessions",G-g)}if(v.info("migrated sessions",{count:e.sessions}),l.sessions>0)v.warn("skipped orphaned sessions",{count:l.sessions});let pn=[],W=[],qn=new Map;for(let g of D){let G=k.basename(k.dirname(g));if(!z.has(G))continue;pn.push(g),W.push(G)}for(let g=0;g<pn.length;g+=A){let G=Math.min(g+A,pn.length),J=await K(pn,g,G),B=Array(J.length),T=0;for(let M=0;M<J.length;M++){let Z=J[M];if(!Z)continue;let P=pn[g+M],w=k.basename(P,".json"),Sn=W[g+M];qn.set(w,Sn);let Bn=Z;delete Bn.id,delete Bn.sessionID,B[T++]={id:w,session_id:Sn,time_created:Z.time?.created??C,time_updated:Z.time?.updated??C,data:Bn}}B.length=T,e.messages+=R(B,fo,"message"),$("messages",G-g)}v.info("migrated messages",{count:e.messages});for(let g=0;g<L.length;g+=A){let G=Math.min(g+A,L.length),J=await K(L,g,G),B=Array(J.length),T=0;for(let M=0;M<J.length;M++){let Z=J[M];if(!Z)continue;let P=L[g+M],w=k.basename(P,".json"),Sn=k.basename(k.dirname(P)),Bn=qn.get(Sn);if(!Bn){_.push(`part missing message session: ${P}`);continue}if(!z.has(Bn))continue;let jn=Z;delete jn.id,delete jn.messageID,delete jn.sessionID,B[T++]={id:w,message_id:Sn,session_id:Bn,time_created:Z.time?.created??C,time_updated:Z.time?.updated??C,data:jn}}B.length=T,e.parts+=R(B,zo,"part"),$("parts",G-g)}v.info("migrated parts",{count:e.parts});let An=u.map((g)=>k.basename(g,".json"));for(let g=0;g<u.length;g+=A){let G=Math.min(g+A,u.length),J=await K(u,g,G),B=[];for(let T=0;T<J.length;T++){let M=J[T];if(!M)continue;let Z=An[g+T];if(!z.has(Z)){l.todos++;continue}if(!Array.isArray(M)){_.push(`todo not an array: ${u[g+T]}`);continue}for(let P=0;P<M.length;P++){let w=M[P];if(!w?.content||!w?.status)continue;B.push({session_id:Z,content:w.content,status:w.status,position:P,time_created:C,time_updated:C})}}e.todos+=R(B,ko,"todo"),$("todos",G-g)}if(v.info("migrated todos",{count:e.todos}),l.todos>0)v.warn("skipped orphaned todos",{count:l.todos});let Fn=p.map((g)=>k.basename(g,".json")),Rn=[];for(let g=0;g<p.length;g+=A){let G=Math.min(g+A,p.length),J=await K(p,g,G);Rn.length=0;for(let B=0;B<J.length;B++){let T=J[B];if(!T)continue;let M=Fn[g+B];if(!I.has(M)){l.permissions++;continue}Rn.push({project_id:M,data:T})}e.permissions+=R(Rn,Vo,"permission"),$("permissions",G-g)}if(v.info("migrated permissions",{count:e.permissions}),l.permissions>0)v.warn("skipped orphaned permissions",{count:l.permissions});let an=m.map((g)=>k.basename(g,".json")),Gn=[];for(let g=0;g<m.length;g+=A){let G=Math.min(g+A,m.length),J=await K(m,g,G);Gn.length=0;for(let B=0;B<J.length;B++){let T=J[B];if(!T)continue;let M=an[g+B];if(!z.has(M)){l.shares++;continue}if(!T?.id||!T?.secret||!T?.url){_.push(`session_share missing id/secret/url: ${m[g+B]}`);continue}Gn.push({session_id:M,id:T.id,secret:T.secret,url:T.url})}e.shares+=R(Gn,co,"session_share"),$("shares",G-g)}if(v.info("migrated session shares",{count:e.shares}),l.shares>0)v.warn("skipped orphaned session shares",{count:l.shares});if(n.run("COMMIT"),v.info("json migration complete",{projects:e.projects,sessions:e.sessions,messages:e.messages,parts:e.parts,todos:e.todos,permissions:e.permissions,shares:e.shares,errorCount:e.errors.length,duration:Math.round(performance.now()-s)}),e.errors.length>0)v.warn("migration errors",{errors:e.errors.slice(0,20)});return i?.({current:f,total:f,label:"complete"}),e}var In={};On(In,{use:()=>Je,transaction:()=>Ke,textDecoder:()=>mt,sumDistinct:()=>tr,sum:()=>rr,sql:()=>H,relationsOrderToSQL:()=>ii,relationsFilterToSQL:()=>ti,relationToSQL:()=>mi,relationExtrasToSQL:()=>ei,processRelations:()=>Wt,placeholder:()=>kr,param:()=>Yr,orderSelectedFields:()=>ar,orderByOperators:()=>Vt,or:()=>po,operators:()=>kt,notLike:()=>Nt,notInArray:()=>st,notIlike:()=>lt,notExists:()=>pt,notBetween:()=>_t,not:()=>_o,noopMapper:()=>vr,noopEncoder:()=>Zr,noopDecoder:()=>Ur,ne:()=>so,name:()=>Wr,min:()=>er,max:()=>ir,mapUpdateSet:()=>br,mapResultRow:()=>Fr,mapRelationalRow:()=>wt,mapColumnsInSQLToAlias:()=>Ht,mapColumnsInAliasedSQLToAlias:()=>Jt,lte:()=>Ao,lt:()=>lo,like:()=>Io,l2Distance:()=>mr,l1Distance:()=>yr,jaccardDistance:()=>sr,isWithEnum:()=>ft,isView:()=>wr,isTable:()=>Lr,isSQLWrapper:()=>Kr,isNull:()=>$o,isNotNull:()=>Qo,isDriverValueEncoder:()=>Pr,isConfig:()=>et,is:()=>En,innerProduct:()=>fr,inArray:()=>Oo,ilike:()=>Tt,haveSameKeys:()=>jr,hasOwnEntityKind:()=>_r,hammingDistance:()=>ur,gte:()=>To,gt:()=>No,getViewSelectedFields:()=>ot,getViewName:()=>qr,getTableUniqueName:()=>Mr,getTableName:()=>Gr,getTableLikeName:()=>tt,getTableColumns:()=>nt,getTableAsAliasSQL:()=>yi,getOriginalColumnFromAlias:()=>Kt,getOrderByOperators:()=>ct,getColumns:()=>rt,getColumnTable:()=>Nr,getColumnNameAndConfig:()=>it,getChannelPath:()=>zi,fillPlaceholders:()=>Vr,fieldSelectionToSQL:()=>ri,extractTablesFromSchema:()=>ht,extractExtendedColumnType:()=>Tr,exists:()=>Bo,eq:()=>X,entityKind:()=>pr,effect:()=>He,desc:()=>Go,defineRelationsPart:()=>oi,defineRelations:()=>ni,createRelationsHelper:()=>bt,countDistinct:()=>ho,count:()=>uo,cosineDistance:()=>gr,close:()=>Ce,buildRelationsParts:()=>Ut,buildRelations:()=>Pt,bindIfParam:()=>ut,between:()=>Do,avgDistinct:()=>or,avg:()=>nr,assertUnreachable:()=>yt,asc:()=>Lo,arrayOverlaps:()=>dt,arrayContains:()=>At,arrayContained:()=>Ot,applyMixins:()=>hr,and:()=>Pn,aliasedTableColumn:()=>Ct,aliasedTable:()=>Gt,aliasedRelation:()=>xt,aliasedColumn:()=>Mt,WithSubquery:()=>Cr,ViewSelectionAliasProxyHandler:()=>Bt,ViewBaseConfig:()=>Jr,View:()=>cr,TransactionRollbackError:()=>Et,TableSchema:()=>Ar,TableColumns:()=>Or,TableAliasProxyHandler:()=>Dt,Table:()=>Ir,Subquery:()=>xr,StringChunk:()=>Rr,SQL:()=>Sr,RelationsHelperStatic:()=>jt,RelationsBuilderTable:()=>qt,RelationsBuilderJunctionColumn:()=>at,RelationsBuilderColumn:()=>Ft,RelationTableAliasProxyHandler:()=>Lt,Relation:()=>Zt,QueryPromise:()=>$t,Placeholder:()=>zr,Path:()=>Po,Param:()=>Xr,OriginalName:()=>$r,One:()=>vt,NotFoundError:()=>xe,NoopLogger:()=>ui,Name:()=>Er,Many:()=>Xt,IsAlias:()=>Br,FakePrimitiveParam:()=>Hr,ExtraConfigColumns:()=>dr,ExtraConfigBuilder:()=>Dr,DrizzleQueryError:()=>St,DrizzleError:()=>Rt,DefaultLogger:()=>gi,Count:()=>zt,ConsoleLogWriter:()=>fi,ColumnTableAliasProxyHandler:()=>Qt,ColumnBuilder:()=>lr,ColumnAliasProxyHandler:()=>It,Column:()=>Wn,Client:()=>Jn,CONSTANTS:()=>gt,BaseName:()=>Qr,AggregatedField:()=>Yt});import bi from"crypto";import Fo,{existsSync as hi,readdirSync as ne}from"fs";import{join as oe}from"path";function jo(n){if(Fo.existsSync(`${n.migrationsFolder}/meta/_journal.json`))throw Error('We detected that you have old drizzle-kit migration folders. You must upgrade drizzle-kit and run "drizzle-kit up"');let o=n.migrationsFolder,t=[],s=ne(o).map((e)=>({path:oe(o,e,"migration.sql"),name:e})).filter((e)=>hi(e.path));s.sort((e,l)=>e.name.localeCompare(l.name));for(let e of s){let l=e.path,_=e.name.slice(0,14),A=Fo.readFileSync(l).toString(),C=A.split("--> statement-breakpoint").map((K)=>{return K}),S=ao(_);t.push({sql:C,bps:!0,folderMillis:S,hash:bi.createHash("sha256").update(A).digest("hex"),name:e.name})}return t}function bo(n,o){if(Array.isArray(o)||"migrationsJournal"in o){let s=Array.isArray(o)?o:o.migrationsJournal,e=Array.isArray(o)?void 0:o.migrationsTable,l=s.map((_)=>({sql:_.sql.split("--> statement-breakpoint"),folderMillis:_.timestamp,hash:"",bps:!0,name:_.name}));return n.dialect.migrate(l,n.session,{migrationsTable:e})}let t=jo(o);return n.dialect.migrate(t,n.session,o)}function uo(n){return H`count(${n||H.raw("*")})`.mapWith(Number)}function ho(n){return H`count(distinct ${n})`.mapWith(Number)}function nr(n){return H`avg(${n})`.mapWith(String)}function or(n){return H`avg(distinct ${n})`.mapWith(String)}function rr(n){return H`sum(${n})`.mapWith(String)}function tr(n){return H`sum(distinct ${n})`.mapWith(String)}function ir(n){return H`max(${n})`.mapWith(En(n,Wn)?n:String)}function er(n){return H`min(${n})`.mapWith(En(n,Wn)?n:String)}function Mn(n){return JSON.stringify(n)}function mr(n,o){if(Array.isArray(o))return H`${n} <-> ${Mn(o)}`;return H`${n} <-> ${o}`}function yr(n,o){if(Array.isArray(o))return H`${n} <+> ${Mn(o)}`;return H`${n} <+> ${o}`}function fr(n,o){if(Array.isArray(o))return H`${n} <#> ${Mn(o)}`;return H`${n} <#> ${o}`}function gr(n,o){if(Array.isArray(o))return H`${n} <=> ${Mn(o)}`;return H`${n} <=> ${o}`}function ur(n,o){if(Array.isArray(o))return H`${n} <~> ${Mn(o)}`;return H`${n} <~> ${o}`}function sr(n,o){if(Array.isArray(o))return H`${n} <%> ${Mn(o)}`;return H`${n} <%> ${o}`}import io from"path";var Yn={};On(Yn,{workspaceID:()=>de,useEffect:()=>Be,use:()=>Qe,make:()=>$e,invalidate:()=>Ie,has:()=>De,get:()=>So,directory:()=>to,context:()=>Ro,bind:()=>Oe});import{EventEmitter as re}from"events";var Un=new re;var Mo=new Set;function si(n){return Mo.add(n),()=>{Mo.delete(n)}}async function xo(n){await Promise.allSettled([...Mo].map((o)=>o(n)))}function Zn(n){return n()}var xi={};On(xi,{setInitialized:()=>se,list:()=>ge,layer:()=>Mi,get:()=>ue,fromRow:()=>_n,defaultLayer:()=>Ko,UpdateInput:()=>fe,Service:()=>xn,Info:()=>Li,Event:()=>Gi});import*as F from"fs/promises";import*as Bi from"os";import*as $n from"path";var te=N.String.pipe(N.brand("ProjectID")),q=te.pipe(bn((n)=>({global:n.make("global"),zod:j.string().pipe(j.custom())})));import*as Dn from"fs/promises";import*as b from"path";import*as Ni from"crypto";async function Co(n){let o=b.resolve(n);while(!0){let t=b.join(o,".git"),s=await Dn.stat(t).catch(()=>null);if(s){if(s.isDirectory())return t;let _=(await Dn.readFile(t,"utf-8")).trim().match(/^gitdir:\s*(.+)$/);if(!_)return null;let A=b.isAbsolute(_[1])?_[1]:b.resolve(o,_[1]);return b.resolve(A,"../..")}let e=b.dirname(o);if(e===o)return null;o=e}}async function pi(n){let o=await Dn.readFile(n,"utf-8").catch(()=>null);if(o===null)return null;return o.trim()||null}async function _i(n){let o=await pi(n);if(o)return o;let t=Ni.randomUUID();try{return await Dn.writeFile(n,t,{flag:"wx"}),t}catch(s){if(s.code!=="EEXIST")throw s;let e=await pi(n);if(e)return e;throw Error(`Project ID file was concurrently created but is empty: ${n}`)}}async function Ti(n){let o=await Co(n);if(o){let s=b.join(o,"qitqode-project-id");return q.make(await _i(s))}let t=b.join(n,".qitqode-project-id");return q.make(await _i(t))}async function ee(n){let o=await Co(n);if(!o)return;let t=$n.join(n,".qitqode-project-id"),s=$n.join(o,"qitqode-project-id"),e=(A)=>F.access(A).then(()=>!0).catch(()=>!1);if(await e(t)){if(!await e(s)){let A=await F.readFile(t,"utf-8");await F.writeFile(s,A)}await F.unlink(t).catch(()=>{})}let l=$n.join(o,"info","exclude");if(await F.mkdir($n.dirname(l),{recursive:!0}),!(await F.readFile(l,"utf-8").catch(()=>"")).includes(".qitqode-project-id"))await F.appendFile(l,`
|
|
3
|
-
.qitqode-project-id
|
|
4
|
-
`)}var li=V.create({service:"project"}),me=262144,Ho=N.Literal("git"),Di=N.Struct({url:N.optional(N.String),override:N.optional(N.String),color:N.optional(N.String)}),Ii=N.Struct({start:N.optional(N.String.annotate({description:"Startup script to run when creating a new workspace (worktree)"}))}),ye=N.Struct({created:N.Number,updated:N.Number,initialized:N.optional(N.Number)}),Li=N.Struct({id:q,worktree:N.String,vcs:N.optional(Ho),name:N.optional(N.String),icon:N.optional(Di),commands:N.optional(Ii),time:ye,sandboxes:N.Array(N.String)}).annotate({identifier:"Project"}).pipe(bn((n)=>({zod:hn(n)}))),Gi={Updated:Qi.define("project.updated",Li.zod)};function _n(n){let o=n.icon_url||n.icon_color?{url:n.icon_url??void 0,color:n.icon_color??void 0}:void 0;return{id:n.id,worktree:n.worktree,vcs:n.vcs?N.decodeUnknownSync(Ho)(n.vcs):void 0,name:n.name??void 0,icon:o,time:{created:n.time_created,updated:n.time_updated,initialized:n.time_initialized??void 0},sandboxes:n.sandboxes,commands:n.commands??void 0}}var fe=j.object({projectID:q.zod,name:j.string().optional(),icon:hn(Di).optional(),commands:hn(Ii).optional()});class xn extends Qn.Service()("@qitqode/Project"){}var Mi=h.effect(xn,r.gen(function*(){let n=yield*c.Service,o=yield*Oi.Path,t=yield*no.ChildProcessSpawner,s=r.fnUntraced(function*(i,y){return yield*$i(t,i,y)},r.catch(()=>r.succeed({code:1,text:"",stderr:""}))),e=(i)=>r.sync(()=>In.use(i)),l=(i)=>r.sync(()=>Un.emit("event",{directory:"global",project:i.id,payload:{type:Gi.Updated.type,properties:i}})),_=N.decodeUnknownSync(N.optional(Ho))(nn.QITQODE_FAKE_VCS),A=(i,y)=>{if(!y)return i;if(y=y.replace(/[\r\n]+$/,""),!y)return i;if(y=c.windowsPath(y),o.isAbsolute(y))return o.normalize(y);return o.resolve(i,y)},C=yield*Ai.Scope,S=r.fn("Project.fromDirectory")(function*(i){li.info("fromDirectory",{directory:i});let y=yield*r.gen(function*(){if(nn.QITQODE_DISABLE_GIT)return{id:q.global,worktree:i,sandbox:i,vcs:_};let z=(yield*n.up({targets:[".git"],start:i}).pipe(r.orDie))[0];if(!z)return{id:q.global,worktree:"/",sandbox:"/",vcs:_};let en=o.dirname(z),pn=process.env.HOME??process.env.USERPROFILE??Bi.homedir();if(en===pn||$n.parse(en).root===en)return li.warn("ignoring .git at home or filesystem root, snapshots disabled",{dotgit:z}),{id:q.global,worktree:i,sandbox:i,vcs:_};let W=en,qn=yield*r.sync(()=>Jo("git")),An;if(!qn)return{id:An??q.global,worktree:W,sandbox:W,vcs:_};let Fn=yield*s(["rev-parse","--git-common-dir"],{cwd:W});if(Fn.code!==0)return{id:An??q.global,worktree:W,sandbox:W,vcs:_};let Rn=(()=>{let Gn=A(W,Fn.text.trim());return Gn===W?W:o.dirname(Gn)})();if(An==null)yield*r.promise(()=>ee(W)),An=yield*r.promise(()=>Ti(W));let an=yield*s(["rev-parse","--show-toplevel"],{cwd:W});if(an.code!==0)return{id:An,worktree:W,sandbox:W,vcs:_};return W=A(W,an.text.trim()),{id:An,sandbox:W,worktree:Rn,vcs:"git"}}),$=yield*e((U)=>U.select().from(x).where(X(x.id,y.id)).get()),I=$?_n($):{id:y.id,worktree:y.worktree,vcs:y.vcs,sandboxes:[],time:{created:Date.now(),updated:Date.now()}};if(nn.QITQODE_EXPERIMENTAL_ICON_DISCOVERY)yield*K(I).pipe(r.ignore,r.forkIn(C));let O={...I,worktree:y.worktree,vcs:y.vcs,time:{...I.time,updated:Date.now()}};if(y.sandbox!==O.worktree&&!O.sandboxes.includes(y.sandbox))O.sandboxes.push(y.sandbox);if(O.sandboxes=yield*r.forEach(O.sandboxes,(U)=>n.exists(U).pipe(r.orDie,r.map((z)=>z?U:void 0)),{concurrency:16}).pipe(r.map((U)=>U.filter((z)=>z!==void 0))),yield*e((U)=>U.insert(x).values({id:O.id,worktree:O.worktree,vcs:O.vcs??null,name:O.name,icon_url:O.icon?.url,icon_color:O.icon?.color,time_created:O.time.created,time_updated:O.time.updated,time_initialized:O.time.initialized,sandboxes:O.sandboxes,commands:O.commands}).onConflictDoUpdate({target:x.id,set:{worktree:O.worktree,vcs:O.vcs??null,name:O.name,icon_url:O.icon?.url,icon_color:O.icon?.color,time_updated:O.time.updated,time_initialized:O.time.initialized,sandboxes:O.sandboxes,commands:O.commands}}).run()),y.id!==q.global)yield*e((U)=>U.update(gn).set({project_id:y.id}).where(Pn(X(gn.project_id,q.global),X(gn.directory,y.worktree))).run());return yield*l(O),{project:O,sandbox:y.sandbox}}),K=r.fn("Project.discover")(function*(i){if(i.vcs!=="git")return;if(i.icon?.override)return;if(i.icon?.url)return;let $=(yield*n.glob("**/favicon.{ico,png,svg,jpg,jpeg,webp}",{cwd:i.worktree,absolute:!0,include:"file"}).pipe(r.orDie)).sort((pn,W)=>pn.length-W.length)[0];if(!$)return;let I=yield*n.stat($).pipe(r.orDie);if(Number(I.size)>me)return;let O=yield*n.readFile($).pipe(r.orDie),U=Buffer.from(O).toString("base64"),en=`data:${c.mimeType($)};base64,${U}`;yield*d({projectID:i.id,icon:{url:en}})}),R=r.fn("Project.list")(function*(){return yield*e((i)=>i.select().from(x).all().map(_n))}),E=r.fn("Project.get")(function*(i){let y=yield*e(($)=>$.select().from(x).where(X(x.id,i)).get());return y?_n(y):void 0}),d=r.fn("Project.update")(function*(i){let y=yield*e((I)=>I.update(x).set({name:i.name,icon_url:i.icon?.url,icon_color:i.icon?.color,commands:i.commands,time_updated:Date.now()}).where(X(x.id,i.projectID)).returning().get());if(!y)throw Error(`Project not found: ${i.projectID}`);let $=_n(y);return yield*l($),$}),D=r.fn("Project.initGit")(function*(i){if(i.project.vcs==="git")return i.project;if(!(yield*r.sync(()=>Jo("git"))))throw Error("Git is not installed");let y=yield*s(["init","--quiet"],{cwd:i.directory});if(y.code!==0)throw Error(y.stderr.trim()||y.text.trim()||"Failed to initialize git repository");let{project:$}=yield*S(i.directory);return $}),L=r.fn("Project.setInitialized")(function*(i){yield*e((y)=>y.update(x).set({time_initialized:Date.now()}).where(X(x.id,i)).run())}),u=r.fn("Project.sandboxes")(function*(i){let y=yield*e((I)=>I.select().from(x).where(X(x.id,i)).get());if(!y)return[];let $=_n(y);return yield*r.forEach($.sandboxes,(I)=>n.isDir(I).pipe(r.orDie,r.map((O)=>O?I:void 0)),{concurrency:16}).pipe(r.map((I)=>I.filter((O)=>O!==void 0)))}),p=r.fnUntraced(function*(i,y){let $=yield*e((I)=>I.update(x).set({sandboxes:y,time_updated:Date.now()}).where(X(x.id,i)).returning().get());if(!$)throw Error(`Project not found: ${i}`);yield*l(_n($))}),m=r.fn("Project.addSandbox")(function*(i,y){let $=yield*e((O)=>O.select().from(x).where(X(x.id,i)).get());if(!$)throw Error(`Project not found: ${i}`);let I=[...$.sandboxes];if(!I.includes(y))I.push(y);yield*p(i,I)}),f=r.fn("Project.removeSandbox")(function*(i,y){let $=yield*e((O)=>O.select().from(x).where(X(x.id,i)).get());if(!$)throw Error(`Project not found: ${i}`);let I=$.sandboxes.filter((O)=>O!==y);yield*p(i,I)});return xn.of({fromDirectory:S,discover:K,list:R,get:E,update:d,initGit:D,setInitialized:L,sandboxes:u,addSandbox:m,removeSandbox:f})})),Ko=Mi.pipe(h.provide(oo),h.provide(c.defaultLayer),h.provide(di.layer));function ge(){return In.use((n)=>n.select().from(x).all().map((o)=>_n(o)))}function ue(n){let o=In.use((t)=>t.select().from(x).where(X(x.id,n)).get());if(!o)return;return _n(o)}function se(n){In.use((o)=>o.update(x).set({time_initialized:Date.now()}).where(X(x.id,n)).run())}import{parse as pe}from"path";var rn=un.create("instance");Hi(()=>rn.use());var tn=new Map,_e=Ki(xn,Ko),Ne=new Set(["/etc","/proc","/sys","/dev","/boot","/root","/var","/private/etc","/private/var"]);function Te(n){if(n===pe(n).root)return"filesystem root is not a valid project directory";for(let o of Ne)if(n===o||c.contains(o,n))return"target is a protected system directory";return null}function le(n){let o=Te(n);if(o)throw Error("Access denied: "+o)}var vn={all:void 0};function Ci(n){return Zn(async()=>{let o=n.project&&n.worktree?{directory:n.directory,worktree:n.worktree,project:n.project}:await _e.runPromise((t)=>t.fromDirectory(n.directory)).then(({project:t,sandbox:s})=>({directory:n.directory,worktree:s,project:t}));return await rn.provide(o,async()=>{await n.init?.()}),o})}function Ji(n,o){let t=o.catch((s)=>{if(tn.get(n)===t)tn.delete(n);throw s});return tn.set(n,t),t}var on={async provide(n){let o=c.resolve(n.directory);le(o);let t=tn.get(o);if(!t)V.Default.info("creating instance",{directory:o}),t=Ji(o,Ci({directory:o,init:n.init}));let s=await t;return rn.provide(s,async()=>{return n.fn()})},get current(){return rn.use()},get directory(){return rn.use().directory},get worktree(){return rn.use().worktree},get project(){return rn.use().project},containsPath(n,o){let t=o??on;if(c.contains(t.directory,n))return!0;if(t.worktree==="/")return!1;return c.contains(t.worktree,n)},bind(n){let o=rn.use();return(...t)=>rn.provide(o,()=>n(...t))},restore(n,o){return rn.provide(n,o)},async reload(n){let o=c.resolve(n.directory);V.Default.info("reloading instance",{directory:o}),await xo(o),tn.delete(o);let t=Ji(o,Ci({...n,directory:o}));return Un.emit("event",{directory:o,project:n.project?.id,workspace:Nn.workspaceID,payload:{type:"server.instance.disposed",properties:{directory:o}}}),await t},async dispose(){let{directory:n,project:o}=on;V.Default.info("disposing instance",{directory:n}),await xo(n),tn.delete(n),Un.emit("event",{directory:n,project:o.id,workspace:Nn.workspaceID,payload:{type:"server.instance.disposed",properties:{directory:n}}})},async disposeAll(){if(vn.all)return vn.all;return vn.all=Zn(async()=>{V.Default.info("disposing all instances");let n=[...tn.entries()];for(let[o,t]of n){if(tn.get(o)!==t)continue;let s=await t.catch((e)=>{V.Default.warn("instance dispose failed",{key:o,error:e});return});if(!s){if(tn.get(o)===t)tn.delete(o);continue}if(tn.get(o)!==t)continue;await rn.provide(s,async()=>{await on.dispose()})}}).finally(()=>{vn.all=void 0}),vn.all}};var Ri="~qitqode/InstanceState",Oe=(n)=>{try{return on.bind(n)}catch(s){if(!(s instanceof un.NotFound))throw s}let o=Ln.getCurrent(),t=o?Qn.getReferenceUnsafe(o.context,Xn):void 0;if(!t)return n;return(...s)=>on.restore(t,()=>n(...s))},Ro=r.gen(function*(){return(yield*Xn)??on.current}),de=r.gen(function*(){return(yield*ro)??Nn.workspaceID}),to=r.map(Ro,(n)=>n.directory),$e=(n)=>r.gen(function*(){let o=yield*Cn.make({capacity:Number.POSITIVE_INFINITY,lookup:()=>r.gen(function*(){return yield*n(yield*Ro)})}),t=si((s)=>r.runPromise(Cn.invalidate(o,s).pipe(r.provide(Si))));return yield*r.addFinalizer(()=>r.sync(t)),{[Ri]:Ri,cache:o}}),So=(n)=>r.gen(function*(){return yield*Cn.get(n.cache,yield*to)}),Qe=(n,o)=>r.map(So(n),o),Be=(n,o)=>r.flatMap(So(n),o),De=(n)=>r.gen(function*(){return yield*Cn.has(n.cache,yield*to)}),Ie=(n)=>r.gen(function*(){return yield*Cn.invalidate(n.cache,yield*to)});var Pi={};On(Pi,{make:()=>Le});function Ei(n,o,t){if(n&&o!==void 0)return Nn.restore(o,()=>on.restore(n,t));if(n)return on.restore(n,t);if(o!==void 0)return Nn.restore(o,t);return t()}function Le(){return r.gen(function*(){let n=yield*r.context(),t=(yield*Xn)??(()=>{try{return on.current}catch(_){if(!(_ instanceof un.NotFound))throw _}})(),s=(yield*ro)??Nn.workspaceID,e=(_)=>Wi(_,{instance:t,workspace:s}),l=(_)=>e(_).pipe(r.provide(n));return{promise:(_)=>Ei(t,s,()=>r.runPromise(l(_))),fork:(_)=>Ei(t,s,()=>r.runFork(l(_)))}})}var Ui={};On(Ui,{make:()=>Ge,Cancelled:()=>zn});class zn extends N.TaggedErrorClass()("RunnerCancelled",{}){}var Ge=(n,o)=>{let t=Tn.makeUnsafe({_tag:"Idle"}),s=o?.onIdle??r.void,e=o?.onBusy??r.void,l=o?.onInterrupt,_=0,A=()=>Tn.getUnsafe(t),C=()=>{return _+=1,_},S=(m,f)=>kn.isFailure(f)&&Eo.hasInterruptsOnly(f.cause)?sn.fail(m,new zn).pipe(r.asVoid):sn.done(m,f).pipe(r.asVoid),K=()=>Tn.modify(t,(m)=>[m._tag==="Idle"?s:r.void,m]).pipe(r.flatten),R=(m,f,i)=>Tn.modify(t,(y)=>[r.gen(function*(){if(y._tag==="Running"&&y.run.id===m)yield*s;yield*S(f,i)}),y._tag==="Running"&&y.run.id===m?{_tag:"Idle"}:y]).pipe(r.flatten),E=(m,f)=>r.gen(function*(){let i=C(),y=yield*m.pipe(r.onExit(($)=>R(i,f,$)),r.forkIn(n));return{id:i,done:f,fiber:y}}),d=(m)=>Tn.modifyEffect(t,r.fnUntraced(function*(f){if(f._tag==="Shell"&&f.shell.id===m)return[s,{_tag:"Idle"}];if(f._tag==="ShellThenRun"&&f.shell.id===m){let i=yield*E(f.run.work,f.run.done);return[r.void,{_tag:"Running",run:i}]}return[r.void,f]})).pipe(r.flatten),D=(m)=>Ln.interrupt(m.fiber),L=(m)=>Tn.modifyEffect(t,r.fnUntraced(function*(f){switch(f._tag){case"Running":case"ShellThenRun":if(o?.onReentryWarn)yield*o.onReentryWarn({label:o.label??"(unlabeled)",existingRunId:f.run.id});return[sn.await(f.run.done),f];case"Shell":{let i={id:C(),done:yield*sn.make(),work:m};return[sn.await(i.done),{_tag:"ShellThenRun",shell:f.shell,run:i}]}case"Idle":{let i=yield*sn.make(),y=yield*E(m,i);return[sn.await(i),{_tag:"Running",run:y}]}}})).pipe(r.flatten,r.catch((f)=>f instanceof zn?l??r.die(f):r.fail(f))),u=(m)=>Tn.modifyEffect(t,r.fnUntraced(function*(f){if(f._tag!=="Idle")return[r.sync(()=>{if(o?.busy)o.busy();throw Error("Runner is busy")}),f];yield*e;let i=C(),y=yield*m.pipe(r.ensuring(d(i)),r.forkChild),$={id:i,fiber:y};return[r.gen(function*(){let I=yield*Ln.await(y);if(kn.isSuccess(I))return I.value;if(Eo.hasInterruptsOnly(I.cause)&&l)return yield*l;return yield*r.failCause(I.cause)}),{_tag:"Shell",shell:$}]})).pipe(r.flatten),p=Tn.modify(t,(m)=>{switch(m._tag){case"Idle":return[r.void,m];case"Running":return[r.gen(function*(){yield*Ln.interrupt(m.run.fiber);let f=yield*Ln.await(m.run.fiber);yield*S(m.run.done,f),yield*sn.await(m.run.done).pipe(r.exit,r.asVoid),yield*K()}),{_tag:"Idle"}];case"Shell":return[r.gen(function*(){yield*D(m.shell),yield*K()}),{_tag:"Idle"}];case"ShellThenRun":return[r.gen(function*(){yield*sn.fail(m.run.done,new zn).pipe(r.asVoid),yield*D(m.shell),yield*K()}),{_tag:"Idle"}]}}).pipe(r.flatten);return{get state(){return A()},get busy(){return A()._tag!=="Idle"},ensureRunning:L,startShell:u,cancel:p}};import{Database as Me}from"bun:sqlite";function vi(n){let o=new Me(n,{create:!0});return Zi({client:o})}var xe=eo.create("NotFoundError",j.object({message:j.string()})),Xi=V.create({service:"db"});function zi(){if(["latest","beta","prod"].includes(Wo)||nn.QITQODE_DISABLE_CHANNEL_DB)return io.join(dn.Path.data,"qitqode.db");let n=Wo.replace(/[^a-zA-Z0-9._-]/g,"-");return io.join(dn.Path.data,`qitqode-${n}.db`)}var Po=Zn(()=>{if(nn.QITQODE_DB){if(nn.QITQODE_DB===":memory:"||io.isAbsolute(nn.QITQODE_DB))return nn.QITQODE_DB;return io.join(dn.Path.data,nn.QITQODE_DB)}return zi()}),Jn=Yi(()=>{Xi.info("opening database",{path:Po});let n=vi(Po);n.run("PRAGMA journal_mode = WAL"),n.run("PRAGMA synchronous = NORMAL"),n.run("PRAGMA busy_timeout = 5000"),n.run("PRAGMA cache_size = -64000"),n.run("PRAGMA foreign_keys = ON"),n.run("PRAGMA wal_checkpoint(PASSIVE)");let o=[{sql:"CREATE TABLE `project` (\n\t`id` text PRIMARY KEY,\n\t`worktree` text NOT NULL,\n\t`vcs` text,\n\t`name` text,\n\t`icon_url` text,\n\t`icon_color` text,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\t`time_initialized` integer,\n\t`sandboxes` text NOT NULL\n);\n--> statement-breakpoint\nCREATE TABLE `message` (\n\t`id` text PRIMARY KEY,\n\t`session_id` text NOT NULL,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\t`data` text NOT NULL,\n\tCONSTRAINT `fk_message_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nCREATE TABLE `part` (\n\t`id` text PRIMARY KEY,\n\t`message_id` text NOT NULL,\n\t`session_id` text NOT NULL,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\t`data` text NOT NULL,\n\tCONSTRAINT `fk_part_message_id_message_id_fk` FOREIGN KEY (`message_id`) REFERENCES `message`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nCREATE TABLE `permission` (\n\t`project_id` text PRIMARY KEY,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\t`data` text NOT NULL,\n\tCONSTRAINT `fk_permission_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nCREATE TABLE `session` (\n\t`id` text PRIMARY KEY,\n\t`project_id` text NOT NULL,\n\t`parent_id` text,\n\t`slug` text NOT NULL,\n\t`directory` text NOT NULL,\n\t`title` text NOT NULL,\n\t`version` text NOT NULL,\n\t`share_url` text,\n\t`summary_additions` integer,\n\t`summary_deletions` integer,\n\t`summary_files` integer,\n\t`summary_diffs` text,\n\t`revert` text,\n\t`permission` text,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\t`time_compacting` integer,\n\t`time_archived` integer,\n\tCONSTRAINT `fk_session_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nCREATE TABLE `todo` (\n\t`session_id` text NOT NULL,\n\t`content` text NOT NULL,\n\t`status` text NOT NULL,\n\t`priority` text NOT NULL,\n\t`position` integer NOT NULL,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\tCONSTRAINT `todo_pk` PRIMARY KEY(`session_id`, `position`),\n\tCONSTRAINT `fk_todo_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nCREATE TABLE `session_share` (\n\t`session_id` text PRIMARY KEY,\n\t`id` text NOT NULL,\n\t`secret` text NOT NULL,\n\t`url` text NOT NULL,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\tCONSTRAINT `fk_session_share_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nCREATE INDEX `message_session_idx` ON `message` (`session_id`);--> statement-breakpoint\nCREATE INDEX `part_message_idx` ON `part` (`message_id`);--> statement-breakpoint\nCREATE INDEX `part_session_idx` ON `part` (`session_id`);--> statement-breakpoint\nCREATE INDEX `session_project_idx` ON `session` (`project_id`);--> statement-breakpoint\nCREATE INDEX `session_parent_idx` ON `session` (`parent_id`);--> statement-breakpoint\nCREATE INDEX `todo_session_idx` ON `todo` (`session_id`);",timestamp:1769552633000,name:"20260127222353_familiar_lady_ursula"},{sql:"ALTER TABLE `project` ADD `commands` text;",timestamp:1770830228000,name:"20260211171708_add_project_commands"},{sql:"CREATE TABLE `control_account` (\n\t`email` text NOT NULL,\n\t`url` text NOT NULL,\n\t`access_token` text NOT NULL,\n\t`refresh_token` text NOT NULL,\n\t`token_expiry` integer,\n\t`active` integer NOT NULL,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\tCONSTRAINT `control_account_pk` PRIMARY KEY(`email`, `url`)\n);\n",timestamp:1770993676000,name:"20260213144116_wakeful_the_professor"},{sql:"CREATE TABLE `workspace` (\n\t`id` text PRIMARY KEY,\n\t`branch` text,\n\t`project_id` text NOT NULL,\n\t`config` text NOT NULL,\n\tCONSTRAINT `fk_workspace_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n);\n",timestamp:1772056728000,name:"20260225215848_workspace"},{sql:"ALTER TABLE `session` ADD `workspace_id` text;--> statement-breakpoint\nCREATE INDEX `session_workspace_idx` ON `session` (`workspace_id`);",timestamp:1772228279000,name:"20260227213759_add_session_workspace_id"},{sql:"CREATE TABLE `account` (\n\t`id` text PRIMARY KEY,\n\t`email` text NOT NULL,\n\t`url` text NOT NULL,\n\t`access_token` text NOT NULL,\n\t`refresh_token` text NOT NULL,\n\t`token_expiry` integer,\n\t`selected_org_id` text,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL\n);\n--> statement-breakpoint\nCREATE TABLE `account_state` (\n\t`id` integer PRIMARY KEY NOT NULL,\n\t`active_account_id` text,\n\tFOREIGN KEY (`active_account_id`) REFERENCES `account`(`id`) ON UPDATE no action ON DELETE set null\n);\n",timestamp:1772310750000,name:"20260228203230_blue_harpoon"},{sql:"ALTER TABLE `workspace` ADD `type` text NOT NULL;--> statement-breakpoint\nALTER TABLE `workspace` ADD `name` text;--> statement-breakpoint\nALTER TABLE `workspace` ADD `directory` text;--> statement-breakpoint\nALTER TABLE `workspace` ADD `extra` text;--> statement-breakpoint\nALTER TABLE `workspace` DROP COLUMN `config`;",timestamp:1772579546000,name:"20260303231226_add_workspace_fields"},{sql:"ALTER TABLE `account_state` ADD `active_org_id` text;--> statement-breakpoint\nUPDATE `account_state` SET `active_org_id` = (SELECT `selected_org_id` FROM `account` WHERE `account`.`id` = `account_state`.`active_account_id`);--> statement-breakpoint\nALTER TABLE `account` DROP COLUMN `selected_org_id`;\n",timestamp:1773097200000,name:"20260309230000_move_org_to_state"},{sql:"DROP INDEX IF EXISTS `message_session_idx`;--> statement-breakpoint\nDROP INDEX IF EXISTS `part_message_idx`;--> statement-breakpoint\nCREATE INDEX `message_session_time_created_id_idx` ON `message` (`session_id`,`time_created`,`id`);--> statement-breakpoint\nCREATE INDEX `part_message_id_id_idx` ON `part` (`message_id`,`id`);",timestamp:1773290071000,name:"20260312043431_session_message_cursor"},{sql:"CREATE TABLE `event_sequence` (\n\t`aggregate_id` text PRIMARY KEY,\n\t`seq` integer NOT NULL\n);\n--> statement-breakpoint\nCREATE TABLE `event` (\n\t`id` text PRIMARY KEY,\n\t`aggregate_id` text NOT NULL,\n\t`seq` integer NOT NULL,\n\t`type` text NOT NULL,\n\t`data` text NOT NULL,\n\tCONSTRAINT `fk_event_aggregate_id_event_sequence_aggregate_id_fk` FOREIGN KEY (`aggregate_id`) REFERENCES `event_sequence`(`aggregate_id`) ON DELETE CASCADE\n);\n",timestamp:1774309702000,name:"20260323234822_events"},{sql:"PRAGMA foreign_keys=OFF;--> statement-breakpoint\nCREATE TABLE `__new_workspace` (\n\t`id` text PRIMARY KEY,\n\t`type` text NOT NULL,\n\t`name` text DEFAULT '' NOT NULL,\n\t`branch` text,\n\t`directory` text,\n\t`extra` text,\n\t`project_id` text NOT NULL,\n\tCONSTRAINT `fk_workspace_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nINSERT INTO `__new_workspace`(`id`, `type`, `branch`, `name`, `directory`, `extra`, `project_id`) SELECT `id`, `type`, `branch`, `name`, `directory`, `extra`, `project_id` FROM `workspace`;--> statement-breakpoint\nDROP TABLE `workspace`;--> statement-breakpoint\nALTER TABLE `__new_workspace` RENAME TO `workspace`;--> statement-breakpoint\nPRAGMA foreign_keys=ON;",timestamp:1775843113000,name:"20260410174513_workspace-name"},{sql:"CREATE TABLE `session_entry` (\n\t`id` text PRIMARY KEY,\n\t`session_id` text NOT NULL,\n\t`type` text NOT NULL,\n\t`time_created` integer NOT NULL,\n\t`time_updated` integer NOT NULL,\n\t`data` text NOT NULL,\n\tCONSTRAINT `fk_session_entry_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n);\n--> statement-breakpoint\nCREATE INDEX `session_entry_session_idx` ON `session_entry` (`session_id`);--> statement-breakpoint\nCREATE INDEX `session_entry_session_type_idx` ON `session_entry` (`session_id`,`type`);--> statement-breakpoint\nCREATE INDEX `session_entry_time_created_idx` ON `session_entry` (`time_created`);",timestamp:1776103196000,name:"20260413175956_chief_energizer"},{sql:"ALTER TABLE `session` ADD `context_from` text;--> statement-breakpoint\nALTER TABLE `session` ADD `context_watermark` text;--> statement-breakpoint\nCREATE INDEX `session_context_from_idx` ON `session` (`context_from`);\n",timestamp:1776873600000,name:"20260422160000_context_inheritance"},{sql:"CREATE TABLE `task_registry` (\n `id` text PRIMARY KEY,\n `parent_session_id` text NOT NULL REFERENCES `session`(`id`) ON DELETE CASCADE,\n `status` text NOT NULL,\n `agent` text NOT NULL,\n `description` text NOT NULL,\n `context_mode` text NOT NULL,\n `background` integer NOT NULL,\n `last_turn_time` integer NOT NULL,\n `turn_count` integer NOT NULL DEFAULT 0,\n `error` text,\n `time_completed` integer,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL\n);--> statement-breakpoint\nCREATE INDEX `task_registry_parent_idx` ON `task_registry` (`parent_session_id`);--> statement-breakpoint\nCREATE INDEX `task_registry_status_idx` ON `task_registry` (`status`);--> statement-breakpoint\nCREATE INDEX `task_registry_status_last_turn_idx` ON `task_registry` (`status`, `last_turn_time`);\n",timestamp:1776877200000,name:"20260422170000_task_registry"},{sql:"DROP INDEX IF EXISTS `session_entry_session_idx`;--> statement-breakpoint\nDROP INDEX IF EXISTS `session_entry_session_type_idx`;--> statement-breakpoint\nDROP INDEX IF EXISTS `session_entry_time_created_idx`;--> statement-breakpoint\nDROP TABLE IF EXISTS `session_entry`;\n",timestamp:1776956061000,name:"20260423145421_remove_session_entry"},{sql:"DROP INDEX IF EXISTS `task_registry_parent_idx`;--> statement-breakpoint\nDROP INDEX IF EXISTS `task_registry_status_idx`;--> statement-breakpoint\nDROP INDEX IF EXISTS `task_registry_status_last_turn_idx`;--> statement-breakpoint\nALTER TABLE `task_registry` RENAME TO `actor_registry`;--> statement-breakpoint\nCREATE INDEX `actor_registry_parent_idx` ON `actor_registry` (`parent_session_id`);--> statement-breakpoint\nCREATE INDEX `actor_registry_status_idx` ON `actor_registry` (`status`);--> statement-breakpoint\nCREATE INDEX `actor_registry_status_last_turn_idx` ON `actor_registry` (`status`, `last_turn_time`);\n",timestamp:1778803200000,name:"20260515000000_actor_rename"},{sql:"CREATE TABLE `memory_fts` (\n `path` text PRIMARY KEY NOT NULL,\n `scope` text NOT NULL,\n `scope_id` text DEFAULT '' NOT NULL,\n `type` text NOT NULL,\n `body` text NOT NULL,\n `fingerprint` text NOT NULL,\n `last_indexed_at` integer NOT NULL\n);\n--> statement-breakpoint\nCREATE INDEX `memory_fts_scope_idx` ON `memory_fts` (`scope`, `scope_id`);\n--> statement-breakpoint\nCREATE INDEX `memory_fts_type_idx` ON `memory_fts` (`type`);\n--> statement-breakpoint\nCREATE VIRTUAL TABLE `memory_fts_idx` USING fts5(\n body,\n content='memory_fts',\n content_rowid='rowid',\n tokenize='unicode61 remove_diacritics 1'\n);\n--> statement-breakpoint\nCREATE TRIGGER `memory_fts_ai` AFTER INSERT ON `memory_fts` BEGIN\n INSERT INTO `memory_fts_idx`(rowid, body) VALUES (NEW.rowid, NEW.body);\nEND;\n--> statement-breakpoint\nCREATE TRIGGER `memory_fts_ad` AFTER DELETE ON `memory_fts` BEGIN\n DELETE FROM `memory_fts_idx` WHERE rowid = OLD.rowid;\nEND;\n--> statement-breakpoint\nCREATE TRIGGER `memory_fts_au` AFTER UPDATE ON `memory_fts` BEGIN\n DELETE FROM `memory_fts_idx` WHERE rowid = OLD.rowid;\n INSERT INTO `memory_fts_idx`(rowid, body) VALUES (NEW.rowid, NEW.body);\nEND;\n",timestamp:1778806800000,name:"20260515010000_memory_fts"},{sql:"CREATE TABLE `task` (\n `id` text NOT NULL,\n `session_id` text NOT NULL REFERENCES `session`(`id`) ON DELETE CASCADE,\n `parent_task_id` text,\n `kind` text NOT NULL DEFAULT 'user',\n `status` text NOT NULL,\n `focus` integer NOT NULL DEFAULT 0,\n `summary` text NOT NULL,\n `created_at` integer NOT NULL,\n `last_event_at` integer NOT NULL,\n `ended_at` integer,\n `cleanup_after` integer,\n PRIMARY KEY (`session_id`, `id`)\n);--> statement-breakpoint\nCREATE INDEX `task_session_idx` ON `task` (`session_id`);--> statement-breakpoint\nCREATE INDEX `task_parent_idx` ON `task` (`session_id`, `parent_task_id`);--> statement-breakpoint\nCREATE INDEX `task_status_idx` ON `task` (`status`);--> statement-breakpoint\nCREATE INDEX `task_kind_idx` ON `task` (`kind`);--> statement-breakpoint\nCREATE UNIQUE INDEX `task_focus_per_session_idx` ON `task` (`session_id`) WHERE focus = 1;--> statement-breakpoint\nCREATE TABLE `task_event` (\n `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,\n `session_id` text NOT NULL REFERENCES `session`(`id`) ON DELETE CASCADE,\n `task_id` text NOT NULL,\n `at` integer NOT NULL,\n `kind` text NOT NULL,\n `summary` text,\n FOREIGN KEY (`session_id`, `task_id`) REFERENCES `task`(`session_id`, `id`) ON DELETE CASCADE\n);--> statement-breakpoint\nCREATE INDEX `task_event_task_idx` ON `task_event` (`session_id`, `task_id`, `at`);\n",timestamp:1778810400000,name:"20260515020000_user_task"},{sql:"ALTER TABLE `session` ADD `last_checkpoint_message_id` text;\n",timestamp:1779148800000,name:"20260519000000_last_checkpoint_message_id"},{sql:"ALTER TABLE `message` ADD `agent_id` text;--> statement-breakpoint\nCREATE INDEX `message_session_agent_idx` ON `message` (`session_id`,`agent_id`,`id`);\n",timestamp:1779321600000,name:"20260521000000_message_agent_id"},{sql:"DROP TABLE `actor_registry`;--> statement-breakpoint\nCREATE TABLE `actor_registry` (\n `session_id` text NOT NULL REFERENCES `session`(`id`) ON DELETE CASCADE,\n `actor_id` text NOT NULL,\n `mode` text NOT NULL,\n `parent_actor_id` text,\n `status` text NOT NULL,\n `agent` text NOT NULL,\n `description` text NOT NULL,\n `context_mode` text NOT NULL,\n `context_watermark` text,\n `background` integer NOT NULL,\n `tools` text,\n `last_turn_time` integer NOT NULL,\n `turn_count` integer NOT NULL DEFAULT 0,\n `error` text,\n `time_completed` integer,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n PRIMARY KEY (`session_id`, `actor_id`)\n);--> statement-breakpoint\nCREATE INDEX `actor_registry_session_agent_idx` ON `actor_registry` (`session_id`, `agent`);--> statement-breakpoint\nCREATE INDEX `actor_registry_session_parent_idx` ON `actor_registry` (`session_id`, `parent_actor_id`);--> statement-breakpoint\nCREATE INDEX `actor_registry_status_idx` ON `actor_registry` (`status`);--> statement-breakpoint\nCREATE INDEX `actor_registry_status_last_turn_idx` ON `actor_registry` (`status`, `last_turn_time`);\n",timestamp:1779321660000,name:"20260521000100_actor_registry_v6"},{sql:"DROP TRIGGER IF EXISTS `memory_fts_ai`;--> statement-breakpoint\nDROP TRIGGER IF EXISTS `memory_fts_ad`;--> statement-breakpoint\nDROP TRIGGER IF EXISTS `memory_fts_au`;--> statement-breakpoint\nDROP TABLE IF EXISTS `memory_fts_idx`;--> statement-breakpoint\nDROP TABLE IF EXISTS `memory_fts`;--> statement-breakpoint\nCREATE TABLE `memory_fts` (\n `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,\n `path` text NOT NULL UNIQUE,\n `scope` text NOT NULL,\n `scope_id` text DEFAULT '' NOT NULL,\n `type` text NOT NULL,\n `body` text NOT NULL,\n `fingerprint` text NOT NULL,\n `last_indexed_at` integer NOT NULL\n);--> statement-breakpoint\nCREATE INDEX `memory_fts_scope_idx` ON `memory_fts` (`scope`, `scope_id`);--> statement-breakpoint\nCREATE INDEX `memory_fts_type_idx` ON `memory_fts` (`type`);--> statement-breakpoint\nCREATE VIRTUAL TABLE `memory_fts_idx` USING fts5(\n body,\n content='memory_fts',\n content_rowid='id',\n tokenize='unicode61 remove_diacritics 1'\n);--> statement-breakpoint\nCREATE TRIGGER `memory_fts_ai` AFTER INSERT ON `memory_fts` BEGIN\n INSERT INTO `memory_fts_idx`(rowid, body) VALUES (NEW.id, NEW.body);\nEND;--> statement-breakpoint\nCREATE TRIGGER `memory_fts_ad` AFTER DELETE ON `memory_fts` BEGIN\n DELETE FROM `memory_fts_idx` WHERE rowid = OLD.id;\nEND;--> statement-breakpoint\nCREATE TRIGGER `memory_fts_au` AFTER UPDATE ON `memory_fts` BEGIN\n DELETE FROM `memory_fts_idx` WHERE rowid = OLD.id;\n INSERT INTO `memory_fts_idx`(rowid, body) VALUES (NEW.id, NEW.body);\nEND;\n",timestamp:1779325200000,name:"20260521010000_memory_fts_v6"},{sql:"-- Fix v6.1 trigger pattern: external content FTS5 vtab requires the 'delete'\n-- magic command to remove OLD body's tokens, NOT a plain DELETE FROM the vtab.\n-- The previous DELETE FROM pattern was contentless-mode syntax misapplied to\n-- external-content mode, leaving stale tokens accumulating until vtab corrupts.\nDROP TRIGGER IF EXISTS `memory_fts_ai`;--> statement-breakpoint\nDROP TRIGGER IF EXISTS `memory_fts_ad`;--> statement-breakpoint\nDROP TRIGGER IF EXISTS `memory_fts_au`;--> statement-breakpoint\nCREATE TRIGGER `memory_fts_ai` AFTER INSERT ON `memory_fts` BEGIN\n INSERT INTO `memory_fts_idx`(rowid, body) VALUES (NEW.id, NEW.body);\nEND;--> statement-breakpoint\nCREATE TRIGGER `memory_fts_ad` AFTER DELETE ON `memory_fts` BEGIN\n INSERT INTO `memory_fts_idx`(`memory_fts_idx`, rowid, body) VALUES('delete', OLD.id, OLD.body);\nEND;--> statement-breakpoint\nCREATE TRIGGER `memory_fts_au` AFTER UPDATE ON `memory_fts` BEGIN\n INSERT INTO `memory_fts_idx`(`memory_fts_idx`, rowid, body) VALUES('delete', OLD.id, OLD.body);\n INSERT INTO `memory_fts_idx`(rowid, body) VALUES (NEW.id, NEW.body);\nEND;\n",timestamp:1779328800000,name:"20260521020000_memory_fts_triggers"},{sql:"UPDATE `message` SET `agent_id` = 'main' WHERE `agent_id` IS NULL;--> statement-breakpoint\nCREATE TABLE `message_new` (\n `id` text PRIMARY KEY NOT NULL,\n `session_id` text NOT NULL REFERENCES `session`(`id`) ON DELETE CASCADE,\n `agent_id` text NOT NULL DEFAULT 'main',\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n `data` text NOT NULL\n);--> statement-breakpoint\nINSERT INTO `message_new` SELECT `id`, `session_id`, COALESCE(`agent_id`, 'main'), `time_created`, `time_updated`, `data` FROM `message`;--> statement-breakpoint\nDROP TABLE `message`;--> statement-breakpoint\nALTER TABLE `message_new` RENAME TO `message`;--> statement-breakpoint\nCREATE INDEX `message_session_time_created_id_idx` ON `message` (`session_id`,`time_created`,`id`);--> statement-breakpoint\nCREATE INDEX `message_session_agent_idx` ON `message` (`session_id`,`agent_id`,`id`);\n",timestamp:1779753600000,name:"20260526000000_agent_id_main"},{sql:"ALTER TABLE `actor_registry` ADD COLUMN `last_outcome` text;--> statement-breakpoint\nALTER TABLE `actor_registry` ADD COLUMN `lifecycle` text NOT NULL DEFAULT 'ephemeral';--> statement-breakpoint\nALTER TABLE `actor_registry` RENAME COLUMN `error` TO `last_error`;--> statement-breakpoint\nUPDATE `actor_registry` SET `last_outcome` = 'success' WHERE `status` = 'completed';--> statement-breakpoint\nUPDATE `actor_registry` SET `last_outcome` = 'failure' WHERE `status` = 'failed';--> statement-breakpoint\nUPDATE `actor_registry` SET `last_outcome` = 'cancelled' WHERE `status` = 'cancelled';--> statement-breakpoint\nUPDATE `actor_registry` SET `status` = 'idle' WHERE `status` IN ('completed','failed','cancelled');--> statement-breakpoint\nUPDATE `actor_registry` SET `lifecycle` = CASE `mode` WHEN 'peer' THEN 'persistent' WHEN 'main' THEN 'persistent' ELSE 'ephemeral' END;\n",timestamp:1779840000000,name:"20260527000000_actor_lifecycle"},{sql:"CREATE TABLE `inbox` (\n `id` text PRIMARY KEY NOT NULL,\n `receiver_session_id` text NOT NULL REFERENCES `session`(`id`) ON DELETE CASCADE,\n `receiver_actor_id` text NOT NULL,\n `sender_session_id` text,\n `sender_actor_id` text,\n `type` text NOT NULL DEFAULT 'text',\n `content` text NOT NULL,\n `created_at` integer NOT NULL\n);--> statement-breakpoint\nCREATE INDEX `inbox_receiver_idx` ON `inbox` (`receiver_session_id`,`receiver_actor_id`,`id`);--> statement-breakpoint\nCREATE INDEX `inbox_created_idx` ON `inbox` (`created_at`);\n",timestamp:1779840060000,name:"20260527000100_inbox"},{sql:"-- todo: drop priority column\nALTER TABLE `todo` DROP COLUMN `priority`;\n--> statement-breakpoint\n\n-- task: drop focus-dependent index before dropping its column\nDROP INDEX `task_focus_per_session_idx`;\n--> statement-breakpoint\nDROP INDEX `task_kind_idx`;\n--> statement-breakpoint\nALTER TABLE `task` DROP COLUMN `focus`;\n--> statement-breakpoint\nALTER TABLE `task` DROP COLUMN `kind`;\n--> statement-breakpoint\n\n-- migrate status values: proposed/active -> open\nUPDATE `task` SET `status` = 'open' WHERE `status` IN ('proposed', 'active');\n",timestamp:1780012800000,name:"20260529000000_task_todo_redesign"},{sql:"ALTER TABLE `task` ADD COLUMN `owner` text;\n",timestamp:1780444800000,name:"20260603000000_task_in_progress_owner"},{sql:"CREATE TABLE `workflow_run` (\n `id` text PRIMARY KEY NOT NULL,\n `session_id` text NOT NULL REFERENCES `session`(`id`) ON DELETE CASCADE,\n `name` text NOT NULL,\n `status` text NOT NULL,\n `running` integer NOT NULL DEFAULT 0,\n `succeeded` integer NOT NULL DEFAULT 0,\n `failed` integer NOT NULL DEFAULT 0,\n `current_phase` text,\n `parent_actor_id` text,\n `args` text,\n `error` text,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL\n);--> statement-breakpoint\nCREATE INDEX `workflow_run_session_idx` ON `workflow_run` (`session_id`);--> statement-breakpoint\nCREATE INDEX `workflow_run_status_idx` ON `workflow_run` (`status`);\n",timestamp:1780444800000,name:"20260603000000_workflow_run"},{sql:"ALTER TABLE `workflow_run` ADD COLUMN `script_sha` text;\n",timestamp:1780531200000,name:"20260604000000_workflow_script_sha"},{sql:"CREATE TABLE `claude_import` (\n `source_uuid` text PRIMARY KEY NOT NULL,\n `session_id` text NOT NULL,\n `source_path` text NOT NULL,\n `source_mtime` integer NOT NULL,\n `time_imported` integer NOT NULL\n);\n",timestamp:1780876800000,name:"20260608000000_claude_import"},{sql:"ALTER TABLE `claude_import` ADD `message_ids` text;\n",timestamp:1780880400000,name:"20260608010000_claude_import_message_ids"},{sql:"CREATE TABLE `history_fts` (\n `part_id` text PRIMARY KEY NOT NULL,\n `session_id` text NOT NULL,\n `message_id` text NOT NULL,\n `project_id` text NOT NULL,\n `kind` text NOT NULL,\n `tool_name` text,\n `body` text NOT NULL,\n `time_created` integer NOT NULL\n);--> statement-breakpoint\nCREATE INDEX `history_fts_session_idx` ON `history_fts` (`session_id`, `time_created`);--> statement-breakpoint\nCREATE INDEX `history_fts_project_idx` ON `history_fts` (`project_id`, `time_created`);--> statement-breakpoint\nCREATE INDEX `history_fts_message_idx` ON `history_fts` (`message_id`);--> statement-breakpoint\nCREATE VIRTUAL TABLE `history_fts_idx` USING fts5(\n body,\n content='history_fts',\n content_rowid='rowid',\n tokenize='unicode61 remove_diacritics 1'\n);--> statement-breakpoint\nCREATE TRIGGER `history_fts_ai` AFTER INSERT ON `history_fts` BEGIN\n INSERT INTO `history_fts_idx`(rowid, body) VALUES (NEW.rowid, NEW.body);\nEND;--> statement-breakpoint\nCREATE TRIGGER `history_fts_ad` AFTER DELETE ON `history_fts` BEGIN\n INSERT INTO `history_fts_idx`(`history_fts_idx`, rowid, body) VALUES('delete', OLD.rowid, OLD.body);\nEND;--> statement-breakpoint\nCREATE TRIGGER `history_fts_au` AFTER UPDATE ON `history_fts` BEGIN\n INSERT INTO `history_fts_idx`(`history_fts_idx`, rowid, body) VALUES('delete', OLD.rowid, OLD.body);\n INSERT INTO `history_fts_idx`(rowid, body) VALUES (NEW.rowid, NEW.body);\nEND;\n",timestamp:1780963200000,name:"20260609000000_history_fts"},{sql:"ALTER TABLE `workflow_run` ADD COLUMN `agent_timeout_ms` integer;\n",timestamp:1781046000000,name:"20260609230000_workflow_agent_timeout"},{sql:"CREATE TABLE `external_import` (\n `source` text NOT NULL,\n `source_key` text NOT NULL,\n `session_id` text NOT NULL,\n `source_path` text NOT NULL,\n `source_mtime` integer NOT NULL,\n `time_imported` integer NOT NULL,\n `message_ids` text,\n PRIMARY KEY (`source`, `source_key`)\n);\n\nINSERT INTO `external_import` (`source`, `source_key`, `session_id`, `source_path`, `source_mtime`, `time_imported`, `message_ids`)\nSELECT 'cc', `source_uuid`, `session_id`, `source_path`, `source_mtime`, `time_imported`, `message_ids`\nFROM `claude_import`;\n\nDROP TABLE `claude_import`;\n",timestamp:1781222400000,name:"20260612000000_external_import"}];if(o.length>0){if(Xi.info("applying migrations",{count:o.length,mode:"bundled"}),nn.QITQODE_SKIP_MIGRATIONS)for(let t of o)t.sql="select 1;";bo(n,o)}return n});function Ce(){Jn().$client.close(),Jn.reset()}var Vn=un.create("database");function Je(n){try{return n(Vn.use().tx)}catch(o){if(o instanceof un.NotFound){let t=[],s=Vn.provide({effects:t,tx:Jn()},()=>n(Jn()));for(let e of t)e();return s}throw o}}function He(n){let o=Yn.bind(n);try{Vn.use().effects.push(o)}catch{o()}}function Ke(n,o){try{return n(Vn.use().tx)}catch(t){if(t instanceof un.NotFound){let s=[],e=Yn.bind((_)=>Vn.provide({tx:_,effects:s},()=>n(_))),l=Jn().transaction(e,{behavior:o?.behavior});for(let _ of s)_();return l}throw t}}var ai={};On(ai,{layer:()=>Fi,defaultLayer:()=>we,Service:()=>yo,NotFoundError:()=>Xo});import Y from"path";var Hn={};On(Hn,{layer:()=>wi,defaultLayer:()=>Ee,Service:()=>mo,Git:()=>Hn});var Re=["--no-optional-locks","-c","core.autocrlf=false","-c","core.fsmonitor=false","-c","core.longpaths=true","-c","core.symlinks=true","-c","core.quotepath=false"],cn=(n)=>n.text().trim(),Uo=(n)=>n.split("\x00").filter(Boolean),Se=(n)=>({exitCode:1,text:()=>"",stdout:Buffer.alloc(0),stderr:Buffer.from(n instanceof Error?n.message:String(n))}),ki=(n)=>{if(n==="??")return"added";if(n.includes("U"))return"modified";if(n.includes("A")&&!n.includes("D"))return"added";if(n.includes("D")&&!n.includes("A"))return"deleted";return"modified"};class mo extends Qn.Service()("@qitqode/Git"){}var wi=h.effect(mo,r.gen(function*(){let n=yield*no.ChildProcessSpawner,o=r.fn("Git.run")(function*(u,p){let m=Vi.make("git",[...Re,...u],{cwd:p.cwd,env:p.env,extendEnv:!0,stdin:"ignore",stdout:"pipe",stderr:"pipe"}),f=yield*ci(n,m);return{exitCode:f.code,text:()=>f.text,stdout:Buffer.from(f.text),stderr:Buffer.from(f.stderr)}},r.scoped,r.catch((u)=>r.succeed(Se(u)))),t=r.fn("Git.text")(function*(u,p){return(yield*o(u,p)).text()}),s=r.fn("Git.lines")(function*(u,p){return(yield*t(u,p)).split(/\r?\n/).map((m)=>m.trim()).filter(Boolean)}),e=r.fnUntraced(function*(u){return yield*s(["for-each-ref","--format=%(refname:short)","refs/heads"],{cwd:u})}),l=r.fnUntraced(function*(u,p){let m=yield*o(["config","init.defaultBranch"],{cwd:u}),f=cn(m);if(!f||!p.includes(f))return;return{name:f,ref:f}}),_=r.fnUntraced(function*(u){let p=yield*s(["remote"],{cwd:u});if(p.includes("origin"))return"origin";if(p.length===1)return p[0];if(p.includes("upstream"))return"upstream";return p[0]}),A=r.fn("Git.branch")(function*(u){let p=yield*o(["symbolic-ref","--quiet","--short","HEAD"],{cwd:u});if(p.exitCode!==0)return;return cn(p)||void 0}),C=r.fn("Git.prefix")(function*(u){let p=yield*o(["rev-parse","--show-prefix"],{cwd:u});if(p.exitCode!==0)return"";return cn(p)}),S=r.fn("Git.defaultBranch")(function*(u){let p=yield*_(u);if(p){let i=yield*o(["symbolic-ref",`refs/remotes/${p}/HEAD`],{cwd:u});if(i.exitCode===0){let y=cn(i).replace(/^refs\/remotes\//,""),$=y.startsWith(`${p}/`)?y.slice(`${p}/`.length):"";if($)return{name:$,ref:y}}}let m=yield*e(u),f=yield*l(u,m);if(f)return f;if(m.includes("main"))return{name:"main",ref:"main"};if(m.includes("master"))return{name:"master",ref:"master"}}),K=r.fn("Git.hasHead")(function*(u){return(yield*o(["rev-parse","--verify","HEAD"],{cwd:u})).exitCode===0}),R=r.fn("Git.mergeBase")(function*(u,p,m="HEAD"){let f=yield*o(["merge-base",p,m],{cwd:u});if(f.exitCode!==0)return;return cn(f)||void 0}),E=r.fn("Git.show")(function*(u,p,m,f=""){let i=f?`${f}${m}`:m,y=yield*o(["show",`${p}:${i}`],{cwd:u});if(y.exitCode!==0)return"";if(y.stdout.includes(0))return"";return y.text()}),d=r.fn("Git.status")(function*(u){return Uo(yield*t(["status","--porcelain=v1","--untracked-files=all","--no-renames","-z","--","."],{cwd:u})).flatMap((p)=>{let m=p.slice(3);if(!m)return[];let f=p.slice(0,2);return[{file:m,code:f,status:ki(f)}]})}),D=r.fn("Git.diff")(function*(u,p){let m=Uo(yield*t(["diff","--no-ext-diff","--no-renames","--name-status","-z",p,"--","."],{cwd:u}));return m.flatMap((f,i)=>{if(i%2!==0)return[];let y=m[i+1];if(!f||!y)return[];return[{file:y,code:f,status:ki(f)}]})}),L=r.fn("Git.stats")(function*(u,p){return Uo(yield*t(["diff","--no-ext-diff","--no-renames","--numstat","-z",p,"--","."],{cwd:u})).flatMap((m)=>{let f=m.indexOf("\t"),i=m.indexOf("\t",f+1);if(f===-1||i===-1)return[];let y=m.slice(i+1);if(!y)return[];let $=m.slice(0,f),I=m.slice(f+1,i),O=$==="-"?0:Number.parseInt($||"0",10),U=I==="-"?0:Number.parseInt(I||"0",10);return[{file:y,additions:Number.isFinite(O)?O:0,deletions:Number.isFinite(U)?U:0}]})});return mo.of({run:o,branch:A,prefix:C,defaultBranch:S,hasHead:K,mergeBase:R,show:E,status:d,diff:D,stats:L})})),Ee=wi.pipe(h.provide(oo));var ln=V.create({service:"storage"}),Xo=eo.create("NotFoundError",j.object({message:j.string()})),We=N.Struct({path:N.optional(N.Struct({root:N.optional(N.String)}))}),Pe=N.Struct({id:N.String}),Ue=N.Struct({id:N.String}),Ze=N.Struct({additions:N.Number,deletions:N.Number}),ve=N.Struct({id:N.String,projectID:N.String,summary:N.Struct({diffs:N.Array(Ze)})}),Xe=N.decodeUnknownOption(We),Ye=N.decodeUnknownOption(Pe),ze=N.decodeUnknownOption(Ue),ke=N.decodeUnknownOption(ve);class yo extends Qn.Service()("@qitqode/Storage"){}function Ve(n,o){return Y.join(n,...o)+".json"}function Zo(n){if(!n||typeof n!=="object")return!1;if("code"in n&&n.code==="ENOENT")return!0;if("reason"in n&&n.reason&&typeof n.reason==="object"&&"_tag"in n.reason)return n.reason._tag==="NotFound";return!1}function ce(n){let o=Number.parseInt(n,10);return Number.isNaN(o)?0:o}var qi=[r.fn("Storage.migration.1")(function*(n,o,t){let s=Y.resolve(n,"../project");if(!(yield*o.isDir(s)))return;let e=yield*o.glob("*",{cwd:s,include:"all"});for(let l of e){let _=Y.join(s,l);if(!(yield*o.isDir(_)))continue;ln.info(`migrating project ${l}`);let A=l,C="/";if(A!=="global"){for(let R of yield*o.glob("storage/session/message/*/*.json",{cwd:_,absolute:!0})){let E=Xe(yield*o.readJson(R),{onExcessProperty:"preserve"}),d=wn.isSome(E)?E.value.path?.root:void 0;if(!d)continue;C=d;break}if(!C)continue;if(!(yield*o.isDir(C)))continue;let S=yield*t.run(["rev-list","--max-parents=0","--all"],{cwd:C}),[K]=S.text().split(`
|
|
5
|
-
`).filter(Boolean).map((R)=>R.trim()).toSorted();if(!K)continue;A=K,yield*o.writeWithDirs(Y.join(n,"project",A+".json"),JSON.stringify({id:K,vcs:"git",worktree:C,time:{created:Date.now(),initialized:Date.now()}},null,2)),ln.info(`migrating sessions for project ${A}`);for(let R of yield*o.glob("storage/session/info/*.json",{cwd:_,absolute:!0})){let E=Y.join(n,"session",A,Y.basename(R));ln.info("copying",{sessionFile:R,dest:E});let d=yield*o.readJson(R),D=Ye(d,{onExcessProperty:"preserve"});if(yield*o.writeWithDirs(E,JSON.stringify(d,null,2)),wn.isNone(D))continue;ln.info(`migrating messages for session ${D.value.id}`);for(let L of yield*o.glob(`storage/session/message/${D.value.id}/*.json`,{cwd:_,absolute:!0})){let u=Y.join(n,"message",D.value.id,Y.basename(L));ln.info("copying",{msgFile:L,dest:u});let p=yield*o.readJson(L),m=ze(p,{onExcessProperty:"preserve"});if(yield*o.writeWithDirs(u,JSON.stringify(p,null,2)),wn.isNone(m))continue;ln.info(`migrating parts for message ${m.value.id}`);for(let f of yield*o.glob(`storage/session/part/${D.value.id}/${m.value.id}/*.json`,{cwd:_,absolute:!0})){let i=Y.join(n,"part",m.value.id,Y.basename(f)),y=yield*o.readJson(f);ln.info("copying",{partFile:f,dest:i}),yield*o.writeWithDirs(i,JSON.stringify(y,null,2))}}}}}}),r.fn("Storage.migration.2")(function*(n,o){for(let t of yield*o.glob("session/*/*.json",{cwd:n,absolute:!0})){let s=yield*o.readJson(t),e=ke(s,{onExcessProperty:"preserve"});if(wn.isNone(e))continue;let l=e.value.summary.diffs;yield*o.writeWithDirs(Y.join(n,"session_diff",e.value.id+".json"),JSON.stringify(l,null,2)),yield*o.writeWithDirs(Y.join(n,"session",e.value.projectID,e.value.id+".json"),JSON.stringify({...s,summary:{additions:l.reduce((_,A)=>_+A.additions,0),deletions:l.reduce((_,A)=>_+A.deletions,0)}},null,2))}})],Fi=h.effect(yo,r.gen(function*(){let n=yield*c.Service,o=yield*Hn.Service,t=yield*vo.make({lookup:()=>Kn.make(),idleTimeToLive:0}),s=yield*r.cached(r.gen(function*(){let d=Y.join(dn.Path.data,"storage"),D=Y.join(d,"migration"),L=yield*n.readFileString(D).pipe(r.map(ce),r.catchIf(Zo,()=>r.succeed(0)),r.orElseSucceed(()=>0));for(let u=L;u<qi.length;u++){ln.info("running migration",{index:u});let p=qi[u],m=yield*r.exit(p(d,n,o));if(kn.isFailure(m)){ln.error("failed to run migration",{index:u,cause:m.cause});break}yield*n.writeWithDirs(D,String(u+1))}return{dir:d}})),e=(d)=>r.fail(new Xo({message:`Resource not found: ${d}`})),l=(d,D)=>D.pipe(r.catchIf(Zo,()=>e(d))),_=r.fnUntraced(function*(d,D){yield*n.writeWithDirs(d,JSON.stringify(D,null,2))}),A=(d,D)=>r.scoped(r.gen(function*(){let L=Ve((yield*s).dir,d);return yield*D(L,yield*vo.get(t,L))})),C=r.fn("Storage.remove")(function*(d){yield*A(d,(D,L)=>Kn.withWriteLock(L,n.remove(D).pipe(r.catchIf(Zo,()=>r.void))))}),S=(d)=>r.gen(function*(){return yield*A(d,(L,u)=>Kn.withReadLock(u,l(L,n.readJson(L))))}),K=(d,D)=>r.gen(function*(){return yield*A(d,(u,p)=>Kn.withWriteLock(p,r.gen(function*(){let m=yield*l(u,n.readJson(u));return D(m),yield*_(u,m),m})))}),R=(d,D)=>r.gen(function*(){yield*A(d,(L,u)=>Kn.withWriteLock(u,_(L,D)))}),E=r.fn("Storage.list")(function*(d){let D=(yield*s).dir,L=Y.join(D,...d);return(yield*n.glob("**/*",{cwd:L,include:"file"}).pipe(r.catch(()=>r.succeed([])))).map((p)=>[...d,...p.slice(0,-5).split(Y.sep)]).toSorted((p,m)=>p.join("/").localeCompare(m.join("/")))});return yo.of({remove:C,read:S,update:K,write:R,list:E})})),we=Fi.pipe(h.provide(c.defaultLayer),h.provide(Hn.defaultLayer));export{Un as sl,si as tl,Zn as ul,mn as vl,x as wl,gn as xl,fo as yl,zo as zl,ko as Al,Vo as Bl,co as Cl,qo as Dl,uo as El,In as Fl,Hn as Gl,Xo as Hl,ai as Il,q as Jl,Co as Kl,Ti as Ll,se as Ml,xi as Nl,Te as Ol,on as Pl,Yn as Ql,Le as Rl,Pi as Sl,Ui as Tl};
|
package/bundle/chunk-g3pb8rad.js
DELETED