@juspay/shooter 1.24.0 → 1.24.2
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/bin/lib/service-manager.cjs +148 -0
- package/bin/shooter.cjs +151 -62
- package/build/client/_app/immutable/chunks/{Dd1KNHg-.js → BBuzUXZ9.js} +1 -1
- package/build/client/_app/immutable/chunks/BBuzUXZ9.js.br +0 -0
- package/build/client/_app/immutable/chunks/BBuzUXZ9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPIV28L3.js +3 -0
- package/build/client/_app/immutable/chunks/BPIV28L3.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPIV28L3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D868VwmX.js → BPIlDnhM.js} +1 -1
- package/build/client/_app/immutable/chunks/BPIlDnhM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPIlDnhM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{2rBV5OkJ.js → BQJR1fvD.js} +1 -1
- package/build/client/_app/immutable/chunks/BQJR1fvD.js.br +0 -0
- package/build/client/_app/immutable/chunks/BQJR1fvD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DLu6yJIZ.js → BjXFD2Pv.js} +1 -1
- package/build/client/_app/immutable/chunks/BjXFD2Pv.js.br +0 -0
- package/build/client/_app/immutable/chunks/BjXFD2Pv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C4Hns_Wl.js → CnsJhNGt.js} +1 -1
- package/build/client/_app/immutable/chunks/CnsJhNGt.js.br +0 -0
- package/build/client/_app/immutable/chunks/CnsJhNGt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DomZZqvG.js → DFa6kKPT.js} +1 -1
- package/build/client/_app/immutable/chunks/DFa6kKPT.js.br +0 -0
- package/build/client/_app/immutable/chunks/DFa6kKPT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BcpydfqI.js → DcXdn821.js} +1 -1
- package/build/client/_app/immutable/chunks/DcXdn821.js.br +0 -0
- package/build/client/_app/immutable/chunks/DcXdn821.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dk1NUsIU.js +61 -0
- package/build/client/_app/immutable/chunks/Dk1NUsIU.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dk1NUsIU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DoGIJDSZ.js +2 -0
- package/build/client/_app/immutable/chunks/DoGIJDSZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DoGIJDSZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{V8pbM9cl.js → Dqmsaccg.js} +1 -1
- package/build/client/_app/immutable/chunks/Dqmsaccg.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dqmsaccg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B1bOvemT.js → aiM7Bbhi.js} +8 -8
- package/build/client/_app/immutable/chunks/aiM7Bbhi.js.br +0 -0
- package/build/client/_app/immutable/chunks/aiM7Bbhi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CJulw9ux.js → etLjvmY8.js} +1 -1
- package/build/client/_app/immutable/chunks/{CJulw9ux.js.br → etLjvmY8.js.br} +0 -0
- package/build/client/_app/immutable/chunks/etLjvmY8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kzeZOqU5.js +1 -0
- package/build/client/_app/immutable/chunks/kzeZOqU5.js.br +0 -0
- package/build/client/_app/immutable/chunks/kzeZOqU5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{i5iZvmIH.js → oIHVoAuz.js} +1 -1
- package/build/client/_app/immutable/chunks/oIHVoAuz.js.br +0 -0
- package/build/client/_app/immutable/chunks/oIHVoAuz.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Bu4nq_bk.js +2 -0
- package/build/client/_app/immutable/entry/app.Bu4nq_bk.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Bu4nq_bk.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CbpzR6Gp.js +1 -0
- package/build/client/_app/immutable/entry/start.CbpzR6Gp.js.br +2 -0
- package/build/client/_app/immutable/entry/start.CbpzR6Gp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.BRFdS_ay.js → 0.CnSSjKHX.js} +1 -1
- package/build/client/_app/immutable/nodes/0.CnSSjKHX.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CnSSjKHX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.B1pgwYu3.js → 1.D_5wZINa.js} +1 -1
- package/build/client/_app/immutable/nodes/1.D_5wZINa.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.D_5wZINa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{10.558mUFIl.js → 10.C_B2eMms.js} +1 -1
- package/build/client/_app/immutable/nodes/10.C_B2eMms.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.C_B2eMms.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{11.CdmPyt4k.js → 11.DUKnn5ja.js} +2 -2
- package/build/client/_app/immutable/nodes/11.DUKnn5ja.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.DUKnn5ja.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.1tiK5o4L.js → 2.C37CZKYv.js} +1 -1
- package/build/client/_app/immutable/nodes/2.C37CZKYv.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.C37CZKYv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.DyQTorXE.js → 3.C48G514u.js} +1 -1
- package/build/client/_app/immutable/nodes/3.C48G514u.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.C48G514u.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.BFYS2g9C.js → 4.C9fv_m2R.js} +1 -1
- package/build/client/_app/immutable/nodes/4.C9fv_m2R.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.C9fv_m2R.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.DziEu9rx.js → 5.vMR5XEA6.js} +1 -1
- package/build/client/_app/immutable/nodes/5.vMR5XEA6.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.vMR5XEA6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.Chn2ZM2V.js → 6.DGlutNk6.js} +1 -1
- package/build/client/_app/immutable/nodes/6.DGlutNk6.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DGlutNk6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.DhJ2K3GQ.js → 7.BXAYsEHF.js} +1 -1
- package/build/client/_app/immutable/nodes/7.BXAYsEHF.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BXAYsEHF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.B4pLxBkI.js → 8.D-SxCq24.js} +1 -1
- package/build/client/_app/immutable/nodes/8.D-SxCq24.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.D-SxCq24.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.CVsskPw5.js → 9.Bek2YR4U.js} +1 -1
- package/build/client/_app/immutable/nodes/9.Bek2YR4U.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.Bek2YR4U.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-DZO0pCuJ.js → 0-ByOnI9Md.js} +3 -3
- package/build/server/chunks/{0-DZO0pCuJ.js.map → 0-ByOnI9Md.js.map} +1 -1
- package/build/server/chunks/1-DcJwehLu.js +9 -0
- package/build/server/chunks/{1-D2SDQFeq.js.map → 1-DcJwehLu.js.map} +1 -1
- package/build/server/chunks/10-B5bdfDfK.js +9 -0
- package/build/server/chunks/{10-CEJDEhpQ.js.map → 10-B5bdfDfK.js.map} +1 -1
- package/build/server/chunks/11-DOJ9j7KC.js +9 -0
- package/build/server/chunks/{11-CMC_i3co.js.map → 11-DOJ9j7KC.js.map} +1 -1
- package/build/server/chunks/{2-C1XSBNj7.js → 2-BY0LGSMl.js} +3 -3
- package/build/server/chunks/{2-C1XSBNj7.js.map → 2-BY0LGSMl.js.map} +1 -1
- package/build/server/chunks/{3-DRjTDzaV.js → 3-DEa6RtDT.js} +3 -3
- package/build/server/chunks/{3-DRjTDzaV.js.map → 3-DEa6RtDT.js.map} +1 -1
- package/build/server/chunks/{4-D92KnTmb.js → 4-w2W_T8ax.js} +3 -3
- package/build/server/chunks/{4-D92KnTmb.js.map → 4-w2W_T8ax.js.map} +1 -1
- package/build/server/chunks/{5-D-Uv1voC.js → 5-BKDmLKb4.js} +3 -3
- package/build/server/chunks/{5-D-Uv1voC.js.map → 5-BKDmLKb4.js.map} +1 -1
- package/build/server/chunks/6-DoTu6ygH.js +9 -0
- package/build/server/chunks/{6-BcgshtK4.js.map → 6-DoTu6ygH.js.map} +1 -1
- package/build/server/chunks/7-CYQ9V6d4.js +9 -0
- package/build/server/chunks/{7-BBsuxiGz.js.map → 7-CYQ9V6d4.js.map} +1 -1
- package/build/server/chunks/8-DMwmCD5X.js +9 -0
- package/build/server/chunks/{8-B0qM-Zzs.js.map → 8-DMwmCD5X.js.map} +1 -1
- package/build/server/chunks/9-CNmPa2Jo.js +9 -0
- package/build/server/chunks/{9-XIfsp2D_.js.map → 9-CNmPa2Jo.js.map} +1 -1
- package/build/server/chunks/{Banner-BgaAs1rs.js → Banner-8zU7JxF6.js} +3 -3
- package/build/server/chunks/Banner-8zU7JxF6.js.map +1 -0
- package/build/server/chunks/{Button-D0hZ7JYt.js → Button-DmE4ENkb.js} +2 -2
- package/build/server/chunks/Button-DmE4ENkb.js.map +1 -0
- package/build/server/chunks/{Icon-D0GBnDcs.js → Icon-By4fwUeB.js} +3 -3
- package/build/server/chunks/Icon-By4fwUeB.js.map +1 -0
- package/build/server/chunks/{Input-OmIiydSx.js → Input-DP3ahKZB.js} +2 -2
- package/build/server/chunks/Input-DP3ahKZB.js.map +1 -0
- package/build/server/chunks/{Pill-4xJ-VhAA.js → Pill-DwAR6cas.js} +3 -3
- package/build/server/chunks/Pill-DwAR6cas.js.map +1 -0
- package/build/server/chunks/{Shimmer-Dw2uvTC1.js → Shimmer-Bo1CUNAU.js} +2 -2
- package/build/server/chunks/Shimmer-Bo1CUNAU.js.map +1 -0
- package/build/server/chunks/{_error.svelte-CZnkxeLr.js → _error.svelte-r3eJvFdN.js} +8 -8
- package/build/server/chunks/_error.svelte-r3eJvFdN.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-DfgNGGiM.js → _layout.svelte-BlI9weU7.js} +10 -10
- package/build/server/chunks/_layout.svelte-BlI9weU7.js.map +1 -0
- package/build/server/chunks/{_page.svelte-dabsQl9c.js → _page.svelte-B7_oMI0l.js} +10 -10
- package/build/server/chunks/_page.svelte-B7_oMI0l.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CWsjjd4l.js → _page.svelte-BB3pLObN.js} +9 -9
- package/build/server/chunks/_page.svelte-BB3pLObN.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CE7COWnF.js → _page.svelte-BDoNXDBU.js} +7 -7
- package/build/server/chunks/_page.svelte-BDoNXDBU.js.map +1 -0
- package/build/server/chunks/{_page.svelte-8OFzwdNA.js → _page.svelte-CMryWeEG.js} +11 -11
- package/build/server/chunks/_page.svelte-CMryWeEG.js.map +1 -0
- package/build/server/chunks/{_page.svelte-D_Ey8QRG.js → _page.svelte-CS4GU4ex.js} +11 -11
- package/build/server/chunks/_page.svelte-CS4GU4ex.js.map +1 -0
- package/build/server/chunks/{_page.svelte-D5S2hkBk.js → _page.svelte-CUfOc8Hm.js} +9 -9
- package/build/server/chunks/{_page.svelte-D5S2hkBk.js.map → _page.svelte-CUfOc8Hm.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BTlfUsBp.js → _page.svelte-Cj5OW0HR.js} +6 -6
- package/build/server/chunks/_page.svelte-Cj5OW0HR.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Gv9p8nlS.js → _page.svelte-DDE2nChH.js} +6 -6
- package/build/server/chunks/_page.svelte-DDE2nChH.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BX2FMgSg.js → _page.svelte-svT4jMLg.js} +4 -4
- package/build/server/chunks/{_page.svelte-BX2FMgSg.js.map → _page.svelte-svT4jMLg.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-C7B0qdrC.js → _page.svelte-vtaZs27Q.js} +5 -5
- package/build/server/chunks/_page.svelte-vtaZs27Q.js.map +1 -0
- package/build/server/chunks/{_server.ts-DtT-ZXki.js → _server.ts--7PnGah8.js} +2 -2
- package/build/server/chunks/{_server.ts-DtT-ZXki.js.map → _server.ts--7PnGah8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Mttr0-Sl.js → _server.ts-57dINphj.js} +2 -2
- package/build/server/chunks/{_server.ts-Mttr0-Sl.js.map → _server.ts-57dINphj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BCljU9Sg.js → _server.ts-5ZMeZtad.js} +2 -2
- package/build/server/chunks/{_server.ts-BCljU9Sg.js.map → _server.ts-5ZMeZtad.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CGqCOCdK.js → _server.ts-ArA8CrYi.js} +2 -2
- package/build/server/chunks/{_server.ts-CGqCOCdK.js.map → _server.ts-ArA8CrYi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DPHRUFYS.js → _server.ts-BKqxnNf1.js} +2 -2
- package/build/server/chunks/{_server.ts-DPHRUFYS.js.map → _server.ts-BKqxnNf1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BXhmLZwN.js → _server.ts-BTNIhKVv.js} +2 -2
- package/build/server/chunks/{_server.ts-BXhmLZwN.js.map → _server.ts-BTNIhKVv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BhP3b8A5.js → _server.ts-Bcagaih0.js} +2 -2
- package/build/server/chunks/{_server.ts-BhP3b8A5.js.map → _server.ts-Bcagaih0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B-evHL2q.js → _server.ts-Bmp-ldee.js} +2 -2
- package/build/server/chunks/{_server.ts-B-evHL2q.js.map → _server.ts-Bmp-ldee.js.map} +1 -1
- package/build/server/chunks/{_server.ts-QN-Bo5ql.js → _server.ts-BrDK1fJ9.js} +2 -2
- package/build/server/chunks/{_server.ts-QN-Bo5ql.js.map → _server.ts-BrDK1fJ9.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D9ir7u24.js → _server.ts-C-XPLtdp.js} +2 -2
- package/build/server/chunks/{_server.ts-D9ir7u24.js.map → _server.ts-C-XPLtdp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B-Gekwsu.js → _server.ts-C3rA9AOZ.js} +2 -2
- package/build/server/chunks/{_server.ts-B-Gekwsu.js.map → _server.ts-C3rA9AOZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DZvfyuNj.js → _server.ts-CDeJYhn1.js} +2 -2
- package/build/server/chunks/{_server.ts-DZvfyuNj.js.map → _server.ts-CDeJYhn1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cx0S__hk.js → _server.ts-CLxpocw5.js} +2 -2
- package/build/server/chunks/{_server.ts-Cx0S__hk.js.map → _server.ts-CLxpocw5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D_WRex0k.js → _server.ts-COpXw9HU.js} +2 -2
- package/build/server/chunks/{_server.ts-D_WRex0k.js.map → _server.ts-COpXw9HU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DkZX_O9a.js → _server.ts-CYfsIgGS.js} +2 -2
- package/build/server/chunks/{_server.ts-DkZX_O9a.js.map → _server.ts-CYfsIgGS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-MbnroWEF.js → _server.ts-CZFcAWEP.js} +2 -2
- package/build/server/chunks/{_server.ts-MbnroWEF.js.map → _server.ts-CZFcAWEP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DpRr0Tfh.js → _server.ts-Cm0noZR0.js} +2 -2
- package/build/server/chunks/{_server.ts-DpRr0Tfh.js.map → _server.ts-Cm0noZR0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BaaY7Z9D.js → _server.ts-Cu_4i2k1.js} +2 -2
- package/build/server/chunks/{_server.ts-BaaY7Z9D.js.map → _server.ts-Cu_4i2k1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BLNDdFWC.js → _server.ts-D2RS8TFd.js} +2 -2
- package/build/server/chunks/{_server.ts-BLNDdFWC.js.map → _server.ts-D2RS8TFd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BScvgttw.js → _server.ts-D9_hkPQ6.js} +2 -2
- package/build/server/chunks/{_server.ts-BScvgttw.js.map → _server.ts-D9_hkPQ6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BbRSpB74.js → _server.ts-DFI6mMYL.js} +2 -2
- package/build/server/chunks/{_server.ts-BbRSpB74.js.map → _server.ts-DFI6mMYL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C6NRpe7e.js → _server.ts-DGPBCKvQ.js} +2 -2
- package/build/server/chunks/{_server.ts-C6NRpe7e.js.map → _server.ts-DGPBCKvQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BB46Fbqn.js → _server.ts-DRRGeb__.js} +2 -2
- package/build/server/chunks/{_server.ts-BB46Fbqn.js.map → _server.ts-DRRGeb__.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CTdFxJdD.js → _server.ts-DaA9ZSqv.js} +2 -2
- package/build/server/chunks/{_server.ts-CTdFxJdD.js.map → _server.ts-DaA9ZSqv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-05JJOdcX.js → _server.ts-DfscXcFe.js} +38 -23
- package/build/server/chunks/_server.ts-DfscXcFe.js.map +1 -0
- package/build/server/chunks/{_server.ts-CVPZOpiv.js → _server.ts-DlGrc8cE.js} +2 -2
- package/build/server/chunks/{_server.ts-CVPZOpiv.js.map → _server.ts-DlGrc8cE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C0317RBD.js → _server.ts-DuAA6Ks-.js} +2 -2
- package/build/server/chunks/{_server.ts-C0317RBD.js.map → _server.ts-DuAA6Ks-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTmknWpO.js → _server.ts-EJVmhLtg.js} +2 -2
- package/build/server/chunks/{_server.ts-BTmknWpO.js.map → _server.ts-EJVmhLtg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-jtqWDWcf.js → _server.ts-NVx03KEN.js} +2 -2
- package/build/server/chunks/{_server.ts-jtqWDWcf.js.map → _server.ts-NVx03KEN.js.map} +1 -1
- package/build/server/chunks/{_server.ts-W6i3EnGX.js → _server.ts-o_sRQMMS.js} +2 -2
- package/build/server/chunks/{_server.ts-W6i3EnGX.js.map → _server.ts-o_sRQMMS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DOGUMzPx.js → _server.ts-v7TaT83B.js} +2 -2
- package/build/server/chunks/{_server.ts-DOGUMzPx.js.map → _server.ts-v7TaT83B.js.map} +1 -1
- package/build/server/chunks/{cache-BlMaDsHi.js → cache-De-MXr04.js} +2 -2
- package/build/server/chunks/cache-De-MXr04.js.map +1 -0
- package/build/server/chunks/{client-Ds1brw-8.js → client-dJTdv51U.js} +4 -4
- package/build/server/chunks/client-dJTdv51U.js.map +1 -0
- package/build/server/chunks/client2-CZlO7zn4.js +7 -0
- package/build/server/chunks/{client2-DngLdcUc.js.map → client2-CZlO7zn4.js.map} +1 -1
- package/build/server/chunks/{index2-dSGQ9Eaa.js → index-L-OMOXY-.js} +2 -2
- package/build/server/chunks/index-L-OMOXY-.js.map +1 -0
- package/build/server/chunks/{index-CoD1IJuy.js → index-lhTMmBNn.js} +20 -3
- package/build/server/chunks/index-lhTMmBNn.js.map +1 -0
- package/build/server/chunks/{index-server-Bq3cnK69.js → index-server-CdDI4vgN.js} +2 -2
- package/build/server/chunks/index-server-CdDI4vgN.js.map +1 -0
- package/build/server/chunks/{index-CoYB03g7.js → index2-BLq4EEng.js} +1627 -1627
- package/build/server/chunks/index2-BLq4EEng.js.map +1 -0
- package/build/server/chunks/pty-manager-BsHXoNks.js.map +1 -1
- package/build/server/chunks/qwen-reader-DGfUbKaJ.js.map +1 -1
- package/build/server/chunks/registry-D4J_CuzW.js.map +1 -1
- package/build/server/chunks/{root-D4IoFC8F.js → root-Ce8FGAoU.js} +42 -43
- package/build/server/chunks/root-Ce8FGAoU.js.map +1 -0
- package/build/server/chunks/{state.svelte-CmHqngc_.js → state.svelte-DCKkPJr6.js} +3 -3
- package/build/server/chunks/state.svelte-DCKkPJr6.js.map +1 -0
- package/build/server/chunks/{stores-CRYxfF0o.js → stores-CVemzLCH.js} +4 -4
- package/build/server/chunks/stores-CVemzLCH.js.map +1 -0
- package/build/server/index.js +365 -169
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +44 -44
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/src/lib/modules/server/apn/device-token.ts +57 -0
- package/src/routes/api/notify/+server.ts +20 -35
- package/build/client/_app/immutable/chunks/2rBV5OkJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/2rBV5OkJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B1bOvemT.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1bOvemT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDcFu3l7.js +0 -61
- package/build/client/_app/immutable/chunks/BDcFu3l7.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDcFu3l7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPDiEZo0.js +0 -2
- package/build/client/_app/immutable/chunks/BPDiEZo0.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPDiEZo0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BcpydfqI.js.br +0 -0
- package/build/client/_app/immutable/chunks/BcpydfqI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4Hns_Wl.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4Hns_Wl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CJulw9ux.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CbINytmr.js +0 -3
- package/build/client/_app/immutable/chunks/CbINytmr.js.br +0 -0
- package/build/client/_app/immutable/chunks/CbINytmr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D868VwmX.js.br +0 -0
- package/build/client/_app/immutable/chunks/D868VwmX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DLu6yJIZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DLu6yJIZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DWmC0QM7.js +0 -1
- package/build/client/_app/immutable/chunks/DWmC0QM7.js.br +0 -0
- package/build/client/_app/immutable/chunks/DWmC0QM7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dd1KNHg-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dd1KNHg-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DomZZqvG.js.br +0 -0
- package/build/client/_app/immutable/chunks/DomZZqvG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/V8pbM9cl.js.br +0 -0
- package/build/client/_app/immutable/chunks/V8pbM9cl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/i5iZvmIH.js.br +0 -0
- package/build/client/_app/immutable/chunks/i5iZvmIH.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CiQHPW0j.js +0 -2
- package/build/client/_app/immutable/entry/app.CiQHPW0j.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CiQHPW0j.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DUCXuMLl.js +0 -1
- package/build/client/_app/immutable/entry/start.DUCXuMLl.js.br +0 -2
- package/build/client/_app/immutable/entry/start.DUCXuMLl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BRFdS_ay.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BRFdS_ay.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B1pgwYu3.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B1pgwYu3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.558mUFIl.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.558mUFIl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.CdmPyt4k.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.CdmPyt4k.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.1tiK5o4L.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.1tiK5o4L.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DyQTorXE.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DyQTorXE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BFYS2g9C.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BFYS2g9C.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DziEu9rx.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DziEu9rx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.Chn2ZM2V.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.Chn2ZM2V.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DhJ2K3GQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DhJ2K3GQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.B4pLxBkI.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.B4pLxBkI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CVsskPw5.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CVsskPw5.js.gz +0 -0
- package/build/server/chunks/1-D2SDQFeq.js +0 -9
- package/build/server/chunks/10-CEJDEhpQ.js +0 -9
- package/build/server/chunks/11-CMC_i3co.js +0 -9
- package/build/server/chunks/6-BcgshtK4.js +0 -9
- package/build/server/chunks/7-BBsuxiGz.js +0 -9
- package/build/server/chunks/8-B0qM-Zzs.js +0 -9
- package/build/server/chunks/9-XIfsp2D_.js +0 -9
- package/build/server/chunks/Banner-BgaAs1rs.js.map +0 -1
- package/build/server/chunks/Button-D0hZ7JYt.js.map +0 -1
- package/build/server/chunks/Icon-D0GBnDcs.js.map +0 -1
- package/build/server/chunks/Input-OmIiydSx.js.map +0 -1
- package/build/server/chunks/Pill-4xJ-VhAA.js.map +0 -1
- package/build/server/chunks/Shimmer-Dw2uvTC1.js.map +0 -1
- package/build/server/chunks/_error.svelte-CZnkxeLr.js.map +0 -1
- package/build/server/chunks/_layout.svelte-DfgNGGiM.js.map +0 -1
- package/build/server/chunks/_page.svelte-8OFzwdNA.js.map +0 -1
- package/build/server/chunks/_page.svelte-BTlfUsBp.js.map +0 -1
- package/build/server/chunks/_page.svelte-C7B0qdrC.js.map +0 -1
- package/build/server/chunks/_page.svelte-CE7COWnF.js.map +0 -1
- package/build/server/chunks/_page.svelte-CWsjjd4l.js.map +0 -1
- package/build/server/chunks/_page.svelte-D_Ey8QRG.js.map +0 -1
- package/build/server/chunks/_page.svelte-Gv9p8nlS.js.map +0 -1
- package/build/server/chunks/_page.svelte-dabsQl9c.js.map +0 -1
- package/build/server/chunks/_server.ts-05JJOdcX.js.map +0 -1
- package/build/server/chunks/cache-BlMaDsHi.js.map +0 -1
- package/build/server/chunks/client-Ds1brw-8.js.map +0 -1
- package/build/server/chunks/client2-DngLdcUc.js +0 -7
- package/build/server/chunks/index-CoD1IJuy.js.map +0 -1
- package/build/server/chunks/index-CoYB03g7.js.map +0 -1
- package/build/server/chunks/index-server-Bq3cnK69.js.map +0 -1
- package/build/server/chunks/index2-dSGQ9Eaa.js.map +0 -1
- package/build/server/chunks/root-D4IoFC8F.js.map +0 -1
- package/build/server/chunks/state.svelte-CmHqngc_.js.map +0 -1
- package/build/server/chunks/stores-CRYxfF0o.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-reader-DGfUbKaJ.js","sources":["../../../.svelte-kit/adapter-node/chunks/qwen-reader.js"],"sourcesContent":["import * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport { existsSync } from \"fs\";\nimport { homedir } from \"os\";\nimport * as path from \"path\";\nclass TurnBuilder {\n current = null;\n messages = [];\n /** Messages flushed so far (excludes the still-open run). */\n completed() {\n return this.messages;\n }\n flush() {\n if (this.current && this.current.parts.length > 0) {\n this.messages.push({\n id: `codex-${this.messages.length}`,\n parts: this.current.parts,\n role: this.current.role,\n timestamp: this.current.timestamp\n });\n }\n this.current = null;\n }\n push(role, part, timestamp) {\n const category = role === \"user\" ? \"user\" : part.type === \"tool_result\" ? \"system\" : \"assistant\";\n const messageRole = category === \"system\" ? \"system\" : role;\n if (this.current?.category !== category) {\n this.flush();\n this.current = { category, parts: [], role: messageRole, timestamp };\n }\n this.current.parts.push(part);\n }\n result() {\n this.flush();\n return this.messages;\n }\n}\nfunction parseCodexMeta(line) {\n try {\n const entry = JSON.parse(line);\n if (!isRecord$3(entry) || entry.type !== \"session_meta\" || !isRecord$3(entry.payload)) {\n return null;\n }\n const p = entry.payload;\n if (!str(p, \"id\") || !str(p, \"cwd\")) {\n return null;\n }\n return {\n cliVersion: str(p, \"cli_version\"),\n cwd: str(p, \"cwd\"),\n id: str(p, \"id\"),\n model: str(p, \"model\") || str(p, \"model_provider\"),\n startedAt: str(p, \"timestamp\") || str(entry, \"timestamp\")\n };\n } catch {\n return null;\n }\n}\nfunction parseCodexRollout(text) {\n const builder = new TurnBuilder();\n let meta = null;\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!isRecord$3(entry)) {\n continue;\n }\n const ts = str(entry, \"timestamp\");\n if (entry.type === \"session_meta\") {\n meta = parseCodexMeta(trimmed);\n continue;\n }\n if (entry.type !== \"response_item\" || !isRecord$3(entry.payload)) {\n continue;\n }\n const mapped = responseItemToPart(entry.payload);\n if (mapped) {\n builder.push(mapped.role, mapped.part, ts);\n }\n }\n return { messages: builder.result(), meta };\n}\nfunction isRecord$3(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction joinMessageText(content) {\n if (!Array.isArray(content)) {\n return typeof content === \"string\" ? content : \"\";\n }\n return content.filter((c) => isRecord$3(c)).filter((c) => c.type === \"input_text\" || c.type === \"output_text\" || c.type === \"text\").map((c) => str(c, \"text\")).join(\"\\n\").trim();\n}\nfunction parseToolInput(raw) {\n if (isRecord$3(raw)) {\n return raw;\n }\n if (typeof raw === \"string\") {\n try {\n const parsed = JSON.parse(raw);\n return isRecord$3(parsed) ? parsed : { raw };\n } catch {\n return { raw };\n }\n }\n return {};\n}\nfunction reasoningText(payload) {\n const summary = payload.summary;\n if (Array.isArray(summary) && summary.length > 0) {\n const text = summary.map((s) => typeof s === \"string\" ? s : isRecord$3(s) ? str(s, \"text\") : \"\").join(\"\\n\").trim();\n if (text) {\n return text;\n }\n }\n return typeof payload.content === \"string\" ? payload.content.trim() : \"\";\n}\nfunction responseItemToPart(p) {\n switch (p.type) {\n case \"custom_tool_call\":\n case \"function_call\": {\n const args = p.type === \"function_call\" ? p.arguments : p.input;\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(args),\n toolName: str(p, \"name\") || \"tool\",\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n }\n case \"custom_tool_call_output\":\n case \"function_call_output\":\n case \"tool_search_output\": {\n const output = typeof p.output === \"string\" ? p.output : JSON.stringify(p.output ?? \"\");\n return {\n part: {\n isError: /exit code:\\s*[1-9]/i.test(output),\n output: output.slice(0, 2e3),\n toolUseId: str(p, \"call_id\"),\n type: \"tool_result\"\n },\n role: \"assistant\"\n };\n }\n case \"message\": {\n if (p.role === \"developer\") {\n return null;\n }\n const content = joinMessageText(p.content);\n return content ? { part: { content, type: \"text\" }, role: p.role === \"user\" ? \"user\" : \"assistant\" } : null;\n }\n case \"reasoning\": {\n const think = reasoningText(p);\n return think ? { part: { content: think, type: \"thinking\" }, role: \"assistant\" } : null;\n }\n case \"tool_search_call\":\n case \"web_search_call\":\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(p.action ?? p.query),\n toolName: str(p, \"type\"),\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n default:\n return null;\n }\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nconst LIST_PREFIX_BYTES = 256 * 1024;\nconst MAX_FULL_READ_BYTES$2 = 16 * 1024 * 1024;\nconst APPROX_BYTES_PER_MESSAGE = 3e3;\nconst SYNTHETIC_PROMPT_PREFIXES = [\"<environment_context>\", \"<user_instructions>\", \"<permissions\"];\nfunction detectActiveCodexSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction findCodexRolloutById(sessionId) {\n if (!/^[0-9a-f-]+$/i.test(sessionId)) {\n return null;\n }\n const suffix = `-${sessionId}.jsonl`;\n return collectRolloutFiles().find((p) => path.basename(p).endsWith(suffix)) ?? null;\n}\nfunction findCodexRolloutForCwd(cwd, sinceMs) {\n let best = null;\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.birthtimeMs <= sinceMs) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta?.cwd === cwd && (!best || stat.birthtimeMs > best.birthtime)) {\n best = { birthtime: stat.birthtimeMs, path: filePath };\n }\n } catch {\n }\n }\n return best?.path ?? null;\n}\nfunction getCodexConversation(sessionId, offset = 0, limit = 200) {\n const filePath = findCodexRolloutById(sessionId);\n if (!filePath || !fs.existsSync(filePath)) {\n return [];\n }\n try {\n const { messages } = parseCodexRollout(readBoundedRolloutText(filePath));\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[codex] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCodexProjects() {\n const files = collectRolloutFiles();\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of files) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n let prefix;\n try {\n prefix = readPrefix$3(filePath);\n } catch {\n continue;\n }\n const nlIdx = prefix.indexOf(\"\\n\");\n const firstLine = nlIdx === -1 ? prefix : prefix.slice(0, nlIdx);\n const meta = parseCodexMeta(firstLine);\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.startedAt || stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: meta.id,\n messageCount: Math.max(1, Math.round(stat.size / APPROX_BYTES_PER_MESSAGE)),\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"codex\",\n summary: \"\",\n title: cleanTitle$2(firstUserPrompt(prefix))\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$5(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction readBoundedRolloutText(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$2) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$2;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$2);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$2, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction cleanTitle$2(prompt) {\n const firstLine = prompt.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!firstLine) {\n return \"Untitled Session\";\n }\n return firstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;\n}\nfunction codexSessionsDirs() {\n const home = homedir();\n return [path.join(home, \".codex\", \"sessions\"), path.join(home, \".codex\", \"archived_sessions\")];\n}\nfunction collectRolloutFiles() {\n const out = [];\n const walk = (dir) => {\n let entries;\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n walk(full);\n } else if (entry.name.startsWith(\"rollout-\") && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n }\n }\n };\n for (const root of codexSessionsDirs()) {\n walk(root);\n }\n return out;\n}\nfunction firstUserPrompt(prefixText) {\n for (const line of prefixText.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.includes('\"type\":\"message\"') || !trimmed.includes('\"role\":\"user\"')) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const text = (entry.payload?.content ?? []).filter((c) => c.type === \"input_text\" && typeof c.text === \"string\").map((c) => c.text ?? \"\").join(\"\\n\").trim();\n if (text && !SYNTHETIC_PROMPT_PREFIXES.some((p) => text.startsWith(p))) {\n return text;\n }\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction readPrefix$3(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(LIST_PREFIX_BYTES);\n const bytesRead = fs.readSync(fd, buf, 0, LIST_PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, bytesRead);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash$5(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst AMP_THREADS = path.join(homedir(), \".local\", \"share\", \"amp\", \"threads\");\nconst MAX_FILE_BYTES = 64 * 1024 * 1024;\nconst THREAD_FILE_RE = /^T-(.+)\\.json$/;\nconst SESSION_ID_RE$1 = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveAmpSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectThreadFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n const cwd = projectCwd(doc);\n if (id && cwd) {\n out.push({ cwd, id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getAmpConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return [];\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n if (!fs.existsSync(filePath)) {\n return [];\n }\n try {\n const doc = readThreadDoc(filePath);\n if (!doc) {\n return [];\n }\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const messages = [];\n let idx = 0;\n for (const raw of rawMessages) {\n const msg = ampMessageToConversationMessage(raw, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[amp] Failed to read conversation:\", err);\n return [];\n }\n}\nfunction listAmpProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectThreadFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n if (!id) {\n continue;\n }\n const cwd = projectCwd(doc) || id;\n const modified = lastModified(doc, stat);\n const created = typeof doc.created === \"string\" && doc.created ? doc.created : stat.birthtime.toISOString();\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const session = {\n created,\n gitBranch: \"\",\n id,\n messageCount: rawMessages.length,\n modified,\n projectPath: cwd,\n source: \"amp\",\n summary: \"\",\n title: cleanTitle$1(typeof doc.title === \"string\" ? doc.title : \"\")\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$4(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\") || cwd,\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveAmpSessionFile(sessionId) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return null;\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n return fs.existsSync(filePath) ? filePath : null;\n}\nfunction ampBlockToPart(block) {\n switch (block.type) {\n case \"text\":\n return { content: typeof block.text === \"string\" ? block.text : \"\", type: \"text\" };\n case \"thinking\":\n return {\n content: typeof block.thinking === \"string\" ? block.thinking : \"\",\n type: \"thinking\"\n };\n case \"tool_result\": {\n const output = extractToolResultText(block.content);\n return {\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: typeof block.tool_use_id === \"string\" ? block.tool_use_id : \"\",\n type: \"tool_result\"\n };\n }\n case \"tool_use\":\n return {\n id: typeof block.id === \"string\" ? block.id : \"\",\n input: isRecord$2(block.input) ? block.input : {},\n toolName: typeof block.name === \"string\" ? block.name : \"tool\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction ampMessageToConversationMessage(raw, index) {\n if (!isRecord$2(raw)) {\n return null;\n }\n const role = raw.role;\n if (role !== \"user\" && role !== \"assistant\") {\n return null;\n }\n const parts = contentToParts(raw.content);\n if (parts.length === 0) {\n return null;\n }\n const msgRole = role === \"user\" ? \"user\" : \"assistant\";\n return {\n id: `amp-${msgRole}-${index}`,\n parts,\n role: msgRole,\n timestamp: \"\"\n };\n}\nfunction cleanTitle$1(raw) {\n const first = raw.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectThreadFiles() {\n let entries;\n try {\n entries = fs.readdirSync(AMP_THREADS, { withFileTypes: true });\n } catch {\n return [];\n }\n const files = [];\n for (const entry of entries) {\n if (!entry.isFile() || !THREAD_FILE_RE.test(entry.name)) {\n continue;\n }\n const full = path.join(AMP_THREADS, entry.name);\n try {\n const stat = fs.statSync(full);\n files.push({ mtime: stat.mtimeMs, path: full });\n } catch {\n }\n }\n files.sort((a, b) => b.mtime - a.mtime);\n return files.map((f) => f.path);\n}\nfunction contentToParts(content) {\n if (typeof content === \"string\" && content) {\n return [{ content, type: \"text\" }];\n }\n if (!Array.isArray(content)) {\n return [];\n }\n const parts = [];\n for (const item of content) {\n if (!isRecord$2(item)) {\n continue;\n }\n const part = ampBlockToPart(item);\n if (part) {\n parts.push(part);\n }\n }\n return parts;\n}\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (!Array.isArray(content)) {\n return \"\";\n }\n return content.filter((c) => isRecord$2(c) && c.type === \"text\").map((c) => typeof c.text === \"string\" ? c.text : \"\").join(\"\\n\");\n}\nfunction isRecord$2(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction lastModified(doc, stat) {\n if (isRecord$2(doc.meta)) {\n const traces = doc.meta.traces;\n if (Array.isArray(traces) && traces.length > 0) {\n const last = traces[traces.length - 1];\n if (isRecord$2(last)) {\n const et = last.endTime;\n if (typeof et === \"string\" && et) {\n return et;\n }\n if (typeof et === \"number\" && et > 0) {\n return new Date(et).toISOString();\n }\n }\n }\n }\n return stat.mtime.toISOString();\n}\nfunction projectCwd(doc) {\n if (isRecord$2(doc.env) && isRecord$2(doc.env.initial)) {\n const trees = doc.env.initial.trees;\n if (Array.isArray(trees) && trees.length > 0 && isRecord$2(trees[0])) {\n const dn = trees[0].displayName;\n if (typeof dn === \"string\" && dn) {\n return dn;\n }\n }\n }\n return \"\";\n}\nfunction readThreadDoc(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_FILE_BYTES) {\n return null;\n }\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n return isRecord$2(parsed) ? parsed : null;\n } catch {\n return null;\n }\n}\nfunction shortHash$4(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction threadId(filePath, doc) {\n const m = THREAD_FILE_RE.exec(path.basename(filePath));\n if (m?.[1]) {\n return m[1];\n }\n if (typeof doc.id === \"string\" && doc.id) {\n return doc.id;\n }\n return \"\";\n}\nconst PREFIX_BYTES$2 = 64 * 1024;\nconst MAX_FULL_READ_BYTES$1 = 16 * 1024 * 1024;\nconst COPILOT_SESSION_STATE = path.join(homedir(), \".copilot\", \"session-state\");\nconst SESSION_ID_RE = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveCopilotSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectCopilotFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta$1(readPrefix$2(filePath), filePath);\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getCopilotConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return [];\n }\n const filePath = resolveCopilotSessionFile(sessionId);\n if (!filePath) {\n return [];\n }\n try {\n const text = readBounded$1(filePath);\n const messages = parseCopilotText(text);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[copilot] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCopilotProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectCopilotFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const prefix = safeReadPrefix(filePath);\n if (!prefix) {\n continue;\n }\n const meta = readMeta$1(prefix, filePath);\n if (!meta) {\n continue;\n }\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"copilot\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$3(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveCopilotSessionFile(sessionId) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return null;\n }\n for (const filePath of collectCopilotFiles()) {\n if (sessionIdFromFilePath(filePath) === sessionId) {\n return filePath;\n }\n }\n return null;\n}\nfunction collectCopilotFiles() {\n const out = [];\n let entries;\n try {\n entries = fs.readdirSync(COPILOT_SESSION_STATE, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n const full = path.join(COPILOT_SESSION_STATE, entry.name);\n if (entry.isFile() && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n } else if (entry.isDirectory()) {\n const eventsPath = path.join(full, \"events.jsonl\");\n try {\n fs.statSync(eventsPath);\n out.push(eventsPath);\n } catch {\n }\n }\n }\n return out;\n}\nfunction copilotEventToMessage(entry, pendingToolUseId) {\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const ts = typeof entry.timestamp === \"string\" ? entry.timestamp : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"user.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n if (!content) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-user-${ts}`;\n return {\n id,\n parts: [{ content, type: \"text\" }],\n role: \"user\",\n timestamp: ts\n };\n }\n if (type === \"assistant.reasoning\") {\n const text = typeof data.text === \"string\" ? data.text : \"\";\n if (!text) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-reasoning-${ts}`;\n return {\n id,\n parts: [{ content: text, type: \"thinking\" }],\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"assistant.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n const parts = [];\n const reasoningText2 = typeof data.reasoningText === \"string\" ? data.reasoningText : \"\";\n if (reasoningText2) {\n parts.push({ content: reasoningText2, type: \"thinking\" });\n }\n if (content) {\n parts.push({ content, type: \"text\" });\n }\n if (Array.isArray(data.toolRequests)) {\n for (const req of data.toolRequests) {\n if (!isRecord$1(req)) {\n continue;\n }\n const toolId = typeof req.toolCallId === \"string\" ? req.toolCallId : `copilot-tool-${ts}`;\n pendingToolUseId.value = toolId;\n let input = {};\n if (isRecord$1(req.arguments)) {\n input = req.arguments;\n } else if (typeof req.arguments === \"string\") {\n try {\n const parsed = JSON.parse(req.arguments);\n if (isRecord$1(parsed)) {\n input = parsed;\n }\n } catch {\n }\n }\n parts.push({\n id: toolId,\n input,\n toolName: typeof req.name === \"string\" ? req.name : \"tool\",\n type: \"tool_use\"\n });\n }\n }\n if (parts.length === 0) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-assistant-${ts}`;\n return {\n id,\n parts,\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"tool.execution_complete\") {\n const rawResult = data.result;\n const result = typeof rawResult === \"string\" ? rawResult : JSON.stringify(rawResult ?? \"\");\n const isError = data.isError === true || data.success === false;\n const toolCallId = typeof data.toolCallId === \"string\" ? data.toolCallId : pendingToolUseId.value;\n const toolUseId = toolCallId || pendingToolUseId.value || \"unknown\";\n const id = typeof data.id === \"string\" ? data.id : `copilot-tool-result-${ts}`;\n return {\n id,\n parts: [\n {\n isError,\n output: result.slice(0, 2e3),\n toolUseId,\n type: \"tool_result\"\n }\n ],\n role: \"system\",\n timestamp: ts\n };\n }\n return null;\n}\nfunction isRecord$1(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction parseCopilotText(text) {\n const messages = [];\n const pendingToolUseId = { value: \"\" };\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const msg = copilotEventToMessage(entry, pendingToolUseId);\n if (msg) {\n messages.push(msg);\n if (msg.parts[0]?.type === \"tool_result\") {\n pendingToolUseId.value = \"\";\n }\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readBounded$1(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$1) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$2(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$1;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$1);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$1, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readMeta$1(prefix, filePath) {\n let cwd = \"\";\n let gitBranch = \"\";\n let title = \"\";\n const id = sessionIdFromFilePath(filePath);\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"session.start\") {\n const context = isRecord$1(data.context) ? data.context : data;\n if (!cwd && typeof context.cwd === \"string\") {\n cwd = context.cwd;\n }\n if (!gitBranch && typeof context.branch === \"string\") {\n gitBranch = context.branch;\n }\n }\n if (!title && type === \"user.message\" && typeof data.content === \"string\") {\n title = data.content.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n if (cwd && title) {\n break;\n }\n }\n return cwd ? { cwd, gitBranch, id, title } : null;\n}\nfunction readPrefix$2(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$2);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$2, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction safeReadPrefix(filePath) {\n try {\n return readPrefix$2(filePath);\n } catch {\n return \"\";\n }\n}\nfunction sessionIdFromFilePath(filePath) {\n const base = path.basename(filePath);\n if (base === \"events.jsonl\") {\n return path.basename(path.dirname(filePath));\n }\n return base.replace(/\\.jsonl$/, \"\");\n}\nfunction shortHash$3(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CURSOR_PROJECTS = path.join(homedir(), \".cursor\", \"projects\");\nconst PREFIX_BYTES$1 = 64 * 1024;\nconst MAX_FULL_READ_BYTES = 16 * 1024 * 1024;\nfunction detectActiveCursorSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n out.push({\n cwd: decodeCursorProjectDir(encodedDir),\n id,\n startedAt: stat.birthtimeMs\n });\n } catch {\n }\n }\n return out;\n}\nfunction getCursorConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return [];\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n if (!found) {\n return [];\n }\n try {\n const messages = parseTranscriptFile(found.filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[cursor] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCursorProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n const cwd = decodeCursorProjectDir(encodedDir);\n const title = extractTitle(filePath);\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id,\n messageCount: estimateMessageCount(filePath, stat),\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"cursor\",\n summary: \"\",\n title\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$2(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveCursorSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return null;\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n return found ? found.filePath : null;\n}\nfunction collectTranscriptFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CURSOR_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const transcriptsDir = path.join(CURSOR_PROJECTS, dir.name, \"agent-transcripts\");\n let entries;\n try {\n entries = fs.readdirSync(transcriptsDir, { withFileTypes: true });\n } catch {\n continue;\n }\n const jsonlStems = /* @__PURE__ */ new Set();\n for (const entry of entries) {\n if (!entry.isFile()) {\n continue;\n }\n if (entry.name.endsWith(\".jsonl\")) {\n jsonlStems.add(entry.name.slice(0, -6));\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.endsWith(\".txt\")) {\n continue;\n }\n const stem = entry.name.slice(0, -4);\n if (!jsonlStems.has(stem)) {\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n }\n return out;\n}\nfunction decodeCursorProjectDir(encoded) {\n if (encoded.includes(\"%2F\") || encoded.includes(\"%2f\")) {\n try {\n const decoded = decodeURIComponent(encoded.replace(/%2f/gi, \"/\"));\n if (decoded.startsWith(\"/\")) {\n return decoded;\n }\n } catch {\n }\n }\n if (encoded.startsWith(\"-\")) {\n const candidate = encoded.replace(/-/g, \"/\");\n return candidate;\n }\n return encoded;\n}\nfunction estimateMessageCount(filePath, stat) {\n const ext = path.extname(filePath);\n const avgBytesPerLine = ext === \".txt\" ? 200 : 500;\n return Math.max(1, Math.round(stat.size / avgBytesPerLine));\n}\nfunction extractTitle(filePath) {\n try {\n const prefix = readPrefix$1(filePath);\n const ext = path.extname(filePath);\n if (ext === \".jsonl\") {\n return titleFromJsonl(prefix);\n }\n return titleFromTxt(prefix);\n } catch {\n return \"Untitled Session\";\n }\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction jsonlLineToMessage(entry, idx) {\n const role = resolveRole(entry);\n if (!role) {\n return null;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n return null;\n }\n const rawContent = messageField.content;\n if (rawContent === void 0 || rawContent === null) {\n return null;\n }\n const parts = [];\n if (typeof rawContent === \"string\") {\n if (!rawContent) {\n return null;\n }\n parts.push({ content: rawContent, type: \"text\" });\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (!isRecord(block)) {\n continue;\n }\n const blockType = strOf(block, \"type\");\n if (blockType === \"text\") {\n const text = strOf(block, \"text\");\n if (text) {\n parts.push({ content: text, type: \"text\" });\n }\n } else if (blockType === \"thinking\") {\n const thinking = strOf(block, \"thinking\");\n if (thinking) {\n parts.push({ content: thinking, type: \"thinking\" });\n }\n } else if (blockType === \"tool_use\") {\n const input = block.input;\n parts.push({\n id: strOf(block, \"id\"),\n input: isRecord(input) ? input : {},\n toolName: strOf(block, \"name\") || \"Unknown\",\n type: \"tool_use\"\n });\n } else if (blockType === \"tool_result\") {\n const resultContent = block.content;\n let output = \"\";\n if (typeof resultContent === \"string\") {\n output = resultContent;\n } else if (Array.isArray(resultContent)) {\n output = resultContent.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const t = c.text;\n return typeof t === \"string\" ? t : \"\";\n }).join(\"\\n\");\n }\n const isErr = block.is_error;\n parts.push({\n isError: typeof isErr === \"boolean\" ? isErr : false,\n output: output.slice(0, 2e3),\n toolUseId: strOf(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n } else {\n return null;\n }\n if (parts.length === 0) {\n return null;\n }\n const id = strOf(entry, \"id\") || strOf(entry, \"uuid\") || `cursor-${role}-${String(idx)}`;\n const timestamp = strOf(entry, \"timestamp\") || strOf(entry, \"createdAt\") || \"\";\n return { id, parts, role, timestamp };\n}\nfunction jsonlToMessages(text) {\n const messages = [];\n let idx = 0;\n for (const raw of text.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry)) {\n continue;\n }\n const msg = jsonlLineToMessage(entry, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n } catch {\n }\n }\n return messages;\n}\nfunction parseTranscriptFile(filePath) {\n const ext = path.extname(filePath);\n const text = readBounded(filePath);\n if (ext === \".jsonl\") {\n return jsonlToMessages(text);\n }\n return parseTxtTranscript(text);\n}\nfunction parseTxtTranscript(text) {\n const messages = [];\n let currentRole = null;\n const currentLines = [];\n let idx = 0;\n const flush = () => {\n if (!currentRole || currentLines.length === 0) {\n return;\n }\n const content = currentLines.join(\"\\n\").trim();\n if (content) {\n messages.push({\n id: `cursor-${currentRole}-${String(idx)}`,\n parts: [{ content, type: \"text\" }],\n role: currentRole,\n timestamp: \"\"\n });\n idx++;\n }\n currentLines.length = 0;\n };\n for (const line of text.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n flush();\n currentRole = \"user\";\n const rest = line.slice(5).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (line.startsWith(\"assistant:\")) {\n flush();\n currentRole = \"assistant\";\n const rest = line.slice(10).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (currentRole) {\n currentLines.push(line);\n }\n }\n flush();\n return messages;\n}\nfunction readBounded(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES, start);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readPrefix$1(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$1);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$1, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction resolveRole(entry) {\n const raw = strOf(entry, \"role\") || strOf(entry, \"type\");\n switch (raw.toLowerCase()) {\n case \"assistant\":\n case \"bot\":\n case \"model\":\n return \"assistant\";\n case \"human\":\n case \"user\":\n return \"user\";\n default:\n return null;\n }\n}\nfunction shortHash$2(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction strOf(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction titleFromJsonl(prefix) {\n for (const raw of prefix.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry) || resolveRole(entry) !== \"user\") {\n continue;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n continue;\n }\n const rawContent = messageField.content;\n let text = \"\";\n if (typeof rawContent === \"string\") {\n text = rawContent;\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (isRecord(block) && block.type === \"text\") {\n const t = block.text;\n if (typeof t === \"string\" && t) {\n text = t;\n break;\n }\n }\n }\n }\n if (text) {\n return truncateTitle(text);\n }\n } catch {\n }\n }\n return \"Untitled Session\";\n}\nfunction titleFromTxt(prefix) {\n for (const line of prefix.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n const text = line.slice(5).trim();\n if (text) {\n return truncateTitle(text);\n }\n }\n }\n return \"Untitled Session\";\n}\nfunction transcriptId(filePath) {\n const base = path.basename(filePath);\n const stem = base.endsWith(\".jsonl\") ? base.slice(0, -6) : base.endsWith(\".txt\") ? base.slice(0, -4) : null;\n if (!stem || !/^[A-Za-z0-9_.-]+$/.test(stem)) {\n return null;\n }\n return stem;\n}\nfunction truncateTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nconst MAX_GEMINI_FILE_BYTES = 64 * 1024 * 1024;\nconst GEMINI_TMP = path.join(homedir(), \".gemini\", \"tmp\");\nconst GEMINI_PROJECTS_JSON = path.join(homedir(), \".gemini\", \"projects.json\");\nfunction detectActiveGeminiSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const out = [];\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatFiles = collectChatFiles(hashDir);\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const record = readChatFile(chatFile);\n if (record) {\n out.push({\n cwd,\n id: record.sessionId,\n startedAt: new Date(record.startTime).getTime()\n });\n }\n } catch {\n }\n }\n const logsPath = path.join(hashDir, \"logs.json\");\n try {\n const stat = fs.statSync(logsPath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const entries = readLogsJson(logsPath);\n if (entries.length > 0) {\n const last = entries[entries.length - 1];\n if (last) {\n const alreadyAdded = out.some((o) => o.id === last.sessionId && o.cwd === cwd);\n if (!alreadyAdded) {\n out.push({\n cwd,\n id: last.sessionId,\n startedAt: new Date(entries[0]?.timestamp ?? last.timestamp).getTime()\n });\n }\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction getGeminiConversation(sessionId, offset = 0, limit = 200) {\n const projectDirs = collectProjectHashDirs();\n for (const hashDir of projectDirs) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile) {\n return conversationFromChatFile(chatFile, offset, limit);\n }\n }\n for (const hashDir of projectDirs) {\n const messages = conversationFromLogsJson(hashDir, sessionId);\n if (messages.length > 0) {\n if (offset === 0 && messages.length > limit) {\n return messages.slice(messages.length - limit);\n }\n return messages.slice(offset, offset + limit);\n }\n }\n return [];\n}\nfunction listGeminiProjects() {\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const byCwd = /* @__PURE__ */ new Map();\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatSessions = collectChatSessions(hashDir, cwd);\n if (chatSessions.length > 0) {\n for (const session of chatSessions) {\n appendToMap(byCwd, cwd, session);\n }\n continue;\n }\n const logSessions = sessionsFromLogsJson(hashDir, cwd);\n for (const session of logSessions) {\n appendToMap(byCwd, cwd, session);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n const isRawHash = /^[0-9a-f]{64}$/i.test(cwd);\n projects.push({\n fullPath: cwd,\n id: shortHash$1(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: isRawHash ? `Gemini (${cwd.slice(0, 8)})` : segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveGeminiSessionFile(sessionId) {\n for (const hashDir of collectProjectHashDirs()) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile !== null) {\n return chatFile;\n }\n }\n return null;\n}\nfunction appendToMap(map, key, value) {\n let bucket = map.get(key);\n if (!bucket) {\n bucket = [];\n map.set(key, bucket);\n }\n bucket.push(value);\n}\nfunction buildHashToCwdMap() {\n const map = /* @__PURE__ */ new Map();\n try {\n const raw = fs.readFileSync(GEMINI_PROJECTS_JSON, \"utf-8\");\n const data = JSON.parse(raw);\n for (const [slugOrHash, absolutePath] of Object.entries(data)) {\n map.set(slugOrHash, absolutePath);\n const computed = crypto.createHash(\"sha256\").update(absolutePath).digest(\"hex\");\n map.set(computed, absolutePath);\n }\n } catch {\n }\n return map;\n}\nfunction cleanTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectChatFiles(hashDir) {\n const chatsDir = path.join(hashDir, \"chats\");\n try {\n return fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => path.join(chatsDir, e.name));\n } catch {\n return [];\n }\n}\nfunction collectChatSessions(hashDir, cwd) {\n const chatFiles = collectChatFiles(hashDir);\n const sessions = [];\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n const record = readChatFile(chatFile);\n if (!record) {\n continue;\n }\n const userMessages = record.messages.filter((m) => m.type === \"user\");\n const firstUserMsg = userMessages[0];\n let title = \"Untitled Session\";\n if (firstUserMsg) {\n title = cleanTitle(extractTextFromContent(firstUserMsg.content));\n }\n sessions.push({\n created: record.startTime,\n gitBranch: \"\",\n id: record.sessionId,\n messageCount: record.messages.length,\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: record.summary ?? \"\",\n title\n });\n } catch {\n }\n }\n return sessions;\n}\nfunction collectProjectHashDirs() {\n try {\n return fs.readdirSync(GEMINI_TMP, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => path.join(GEMINI_TMP, e.name));\n } catch {\n return [];\n }\n}\nfunction conversationFromChatFile(chatFile, offset, limit) {\n try {\n const record = readChatFile(chatFile);\n if (!record) {\n return [];\n }\n const messages = record.messages.filter((m) => m.type === \"user\" || m.type === \"gemini\").map(messageRecordToMessage);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[gemini] Failed to read chat file:\", err);\n return [];\n }\n}\nfunction conversationFromLogsJson(hashDir, sessionId) {\n const logsPath = path.join(hashDir, \"logs.json\");\n const entries = readLogsJson(logsPath);\n return entries.filter((e) => e.sessionId === sessionId).map(\n (entry) => ({\n id: `${entry.sessionId}-${String(entry.messageId)}`,\n parts: [{ content: entry.message, type: \"text\" }],\n role: \"user\",\n timestamp: entry.timestamp\n })\n );\n}\nfunction extractTextFromContent(content) {\n if (typeof content === \"string\") {\n return content;\n }\n return content.filter((p) => \"text\" in p).map((p) => p.text).join(\" \");\n}\nfunction findChatFileForSession(hashDir, sessionId) {\n if (!sessionId) {\n return null;\n }\n const chatsDir = path.join(hashDir, \"chats\");\n let names;\n try {\n names = fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => e.name);\n } catch {\n return null;\n }\n const shortId = sessionId.slice(0, 8);\n names.sort((a, b) => Number(b.includes(shortId)) - Number(a.includes(shortId)));\n for (const name of names) {\n const full = path.join(chatsDir, name);\n if (readChatFile(full)?.sessionId === sessionId) {\n return full;\n }\n }\n return null;\n}\nfunction isGeminiLogEntry(v) {\n if (typeof v !== \"object\" || v === null) {\n return false;\n }\n const obj = v;\n return typeof obj.sessionId === \"string\" && typeof obj.messageId === \"number\" && typeof obj.message === \"string\" && typeof obj.timestamp === \"string\";\n}\nfunction messageRecordToMessage(record) {\n const role = record.type === \"user\" ? \"user\" : \"assistant\";\n const parts = [];\n if (record.type === \"gemini\" && record.thoughts) {\n for (const thought of record.thoughts) {\n parts.push({ content: thought.summary ?? \"\", type: \"thinking\" });\n }\n }\n const rawContent = record.content;\n const contentParts = typeof rawContent === \"string\" ? [{ text: rawContent }] : rawContent;\n for (const part of contentParts) {\n if (\"functionCall\" in part) {\n parts.push({\n id: part.functionCall.id ?? part.functionCall.name,\n input: part.functionCall.args,\n toolName: part.functionCall.name,\n type: \"tool_use\"\n });\n } else if (\"thought\" in part && part.thought === true) {\n parts.push({ content: part.text, type: \"thinking\" });\n } else if (\"text\" in part) {\n parts.push({ content: part.text, type: \"text\" });\n }\n }\n if (record.type === \"gemini\" && record.toolCalls) {\n for (const tc of record.toolCalls) {\n const alreadyInParts = parts.some((p) => p.type === \"tool_use\" && p.id === tc.id);\n if (!alreadyInParts) {\n parts.push({\n id: tc.id,\n input: tc.args,\n toolName: tc.name,\n type: \"tool_use\"\n });\n }\n }\n }\n return {\n id: record.id,\n parts,\n role,\n timestamp: record.timestamp\n };\n}\nfunction readChatFile(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_GEMINI_FILE_BYTES) {\n return null;\n }\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\nfunction readLogsJson(logsPath) {\n try {\n if (fs.statSync(logsPath).size > MAX_GEMINI_FILE_BYTES) {\n return [];\n }\n const parsed = JSON.parse(fs.readFileSync(logsPath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed.filter(isGeminiLogEntry) : [];\n } catch {\n return [];\n }\n}\nfunction sessionsFromLogsJson(hashDir, cwd) {\n const logsPath = path.join(hashDir, \"logs.json\");\n let stat;\n try {\n stat = fs.statSync(logsPath);\n } catch {\n return [];\n }\n const entries = readLogsJson(logsPath);\n if (entries.length === 0) {\n return [];\n }\n const bySession = /* @__PURE__ */ new Map();\n for (const entry of entries) {\n let bucket = bySession.get(entry.sessionId);\n if (!bucket) {\n bucket = [];\n bySession.set(entry.sessionId, bucket);\n }\n bucket.push(entry);\n }\n const sessions = [];\n for (const [sessionId, sessionEntries] of bySession) {\n const first = sessionEntries[0];\n const last = sessionEntries[sessionEntries.length - 1];\n sessions.push({\n created: first?.timestamp ?? stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount: sessionEntries.length,\n modified: last?.timestamp ?? stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: \"\",\n title: cleanTitle(first?.message ?? \"\")\n });\n }\n return sessions;\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction resolveOpenCodeDbPath() {\n const home = process.env.HOME || \"\";\n const candidates = [];\n if (process.env.XDG_DATA_HOME) {\n candidates.push(path.join(process.env.XDG_DATA_HOME, \"opencode\", \"opencode.db\"));\n }\n candidates.push(path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\"));\n if (process.platform === \"darwin\") {\n candidates.push(path.join(home, \"Library\", \"Application Support\", \"opencode\", \"opencode.db\"));\n }\n for (const candidate of candidates) {\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return candidates[0] ?? path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\");\n}\nconst QWEN_PROJECTS = path.join(homedir(), \".qwen\", \"projects\");\nconst PREFIX_BYTES = 64 * 1024;\nconst MAX_QWEN_FILE_BYTES = 16 * 1024 * 1024;\nconst SYSTEM_TAG_PREFIXES = [\n \"<command-name>\",\n \"<local-command\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction detectActiveQwenSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectQwenFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getQwenConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return [];\n }\n const filePath = collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`);\n if (!filePath) {\n return [];\n }\n try {\n const messages = readQwenMessages(filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[qwen] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listQwenProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectQwenFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.started || stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"qwen\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveQwenSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return null;\n }\n return collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`) ?? null;\n}\nfunction collectQwenFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(QWEN_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const chatsDir = path.join(QWEN_PROJECTS, dir.name, \"chats\");\n try {\n for (const f of fs.readdirSync(chatsDir)) {\n if (f.endsWith(\".jsonl\")) {\n out.push(path.join(chatsDir, f));\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction qwenLineToMessage(entry) {\n const type = entry.type;\n if (type !== \"user\" && type !== \"assistant\") {\n return null;\n }\n const message = entry.message ?? {};\n const rawParts = Array.isArray(message.parts) ? message.parts : [];\n const parts = [];\n for (const raw of rawParts) {\n if (typeof raw !== \"object\" || raw === null) {\n continue;\n }\n const p = raw;\n if (p.functionCall && typeof p.functionCall === \"object\") {\n const fc = p.functionCall;\n const toolName = typeof fc.name === \"string\" ? fc.name : \"tool\";\n parts.push({\n id: typeof fc.id === \"string\" ? fc.id : toolName,\n input: fc.args ?? {},\n toolName,\n type: \"tool_use\"\n });\n } else if (p.thought === true && typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"thinking\" });\n } else if (typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"text\" });\n }\n }\n if (parts.length === 0 && typeof message.content === \"string\" && message.content) {\n parts.push({ content: message.content, type: \"text\" });\n }\n if (parts.length === 0) {\n return null;\n }\n return {\n id: typeof entry.uuid === \"string\" ? entry.uuid : `qwen-${type}`,\n parts,\n role: type === \"user\" ? \"user\" : \"assistant\",\n timestamp: typeof entry.timestamp === \"string\" ? entry.timestamp : \"\"\n };\n}\nfunction readMeta(prefix) {\n let cwd = \"\";\n let id = \"\";\n let gitBranch = \"\";\n let started = \"\";\n let title = \"\";\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!cwd && typeof entry.cwd === \"string\") {\n cwd = entry.cwd;\n }\n if (!id && typeof entry.sessionId === \"string\") {\n id = entry.sessionId;\n }\n if (!gitBranch && typeof entry.gitBranch === \"string\") {\n gitBranch = entry.gitBranch;\n }\n if (!started && typeof entry.timestamp === \"string\") {\n started = entry.timestamp;\n }\n if (!title && entry.type === \"user\") {\n const msg = entry.message;\n let text = typeof msg?.content === \"string\" ? msg.content : \"\";\n if (!text && Array.isArray(msg?.parts)) {\n text = msg.parts.map(\n (p) => p && typeof p === \"object\" && typeof p.text === \"string\" ? p.text : \"\"\n ).join(\" \").trim();\n }\n if (text && !SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n title = text.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n }\n }\n return id && cwd ? { cwd, gitBranch, id, started, title } : null;\n}\nfunction readPrefix(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readQwenMessages(filePath) {\n const messages = [];\n for (const line of readQwenTextBounded(filePath).split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const msg = qwenLineToMessage(JSON.parse(trimmed));\n if (msg) {\n messages.push(msg);\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readQwenTextBounded(filePath) {\n const size = fs.statSync(filePath).size;\n if (size <= MAX_QWEN_FILE_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(MAX_QWEN_FILE_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_QWEN_FILE_BYTES, size - MAX_QWEN_FILE_BYTES);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nexport {\n detectActiveGeminiSessions as a,\n detectActiveQwenSessions as b,\n detectActiveCursorSessions as c,\n detectActiveCodexSessions as d,\n detectActiveCopilotSessions as e,\n detectActiveAmpSessions as f,\n resolveQwenSessionFile as g,\n resolveGeminiSessionFile as h,\n resolveCursorSessionFile as i,\n resolveCopilotSessionFile as j,\n resolveAmpSessionFile as k,\n findCodexRolloutForCwd as l,\n listCodexProjects as m,\n getCodexConversation as n,\n listGeminiProjects as o,\n getGeminiConversation as p,\n listQwenProjects as q,\n resolveOpenCodeDbPath as r,\n getQwenConversation as s,\n listCursorProjects as t,\n getCursorConversation as u,\n listCopilotProjects as v,\n getCopilotConversation as w,\n listAmpProjects as x,\n getAmpConversation as y\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qwen-reader-DGfUbKaJ.js","sources":["../../../.svelte-kit/adapter-node/chunks/qwen-reader.js"],"sourcesContent":["import * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport { existsSync } from \"fs\";\nimport { homedir } from \"os\";\nimport * as path from \"path\";\nclass TurnBuilder {\n current = null;\n messages = [];\n /** Messages flushed so far (excludes the still-open run). */\n completed() {\n return this.messages;\n }\n flush() {\n if (this.current && this.current.parts.length > 0) {\n this.messages.push({\n id: `codex-${this.messages.length}`,\n parts: this.current.parts,\n role: this.current.role,\n timestamp: this.current.timestamp\n });\n }\n this.current = null;\n }\n push(role, part, timestamp) {\n const category = role === \"user\" ? \"user\" : part.type === \"tool_result\" ? \"system\" : \"assistant\";\n const messageRole = category === \"system\" ? \"system\" : role;\n if (this.current?.category !== category) {\n this.flush();\n this.current = { category, parts: [], role: messageRole, timestamp };\n }\n this.current.parts.push(part);\n }\n result() {\n this.flush();\n return this.messages;\n }\n}\nfunction parseCodexMeta(line) {\n try {\n const entry = JSON.parse(line);\n if (!isRecord$3(entry) || entry.type !== \"session_meta\" || !isRecord$3(entry.payload)) {\n return null;\n }\n const p = entry.payload;\n if (!str(p, \"id\") || !str(p, \"cwd\")) {\n return null;\n }\n return {\n cliVersion: str(p, \"cli_version\"),\n cwd: str(p, \"cwd\"),\n id: str(p, \"id\"),\n model: str(p, \"model\") || str(p, \"model_provider\"),\n startedAt: str(p, \"timestamp\") || str(entry, \"timestamp\")\n };\n } catch {\n return null;\n }\n}\nfunction parseCodexRollout(text) {\n const builder = new TurnBuilder();\n let meta = null;\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!isRecord$3(entry)) {\n continue;\n }\n const ts = str(entry, \"timestamp\");\n if (entry.type === \"session_meta\") {\n meta = parseCodexMeta(trimmed);\n continue;\n }\n if (entry.type !== \"response_item\" || !isRecord$3(entry.payload)) {\n continue;\n }\n const mapped = responseItemToPart(entry.payload);\n if (mapped) {\n builder.push(mapped.role, mapped.part, ts);\n }\n }\n return { messages: builder.result(), meta };\n}\nfunction isRecord$3(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction joinMessageText(content) {\n if (!Array.isArray(content)) {\n return typeof content === \"string\" ? content : \"\";\n }\n return content.filter((c) => isRecord$3(c)).filter((c) => c.type === \"input_text\" || c.type === \"output_text\" || c.type === \"text\").map((c) => str(c, \"text\")).join(\"\\n\").trim();\n}\nfunction parseToolInput(raw) {\n if (isRecord$3(raw)) {\n return raw;\n }\n if (typeof raw === \"string\") {\n try {\n const parsed = JSON.parse(raw);\n return isRecord$3(parsed) ? parsed : { raw };\n } catch {\n return { raw };\n }\n }\n return {};\n}\nfunction reasoningText(payload) {\n const summary = payload.summary;\n if (Array.isArray(summary) && summary.length > 0) {\n const text = summary.map((s) => typeof s === \"string\" ? s : isRecord$3(s) ? str(s, \"text\") : \"\").join(\"\\n\").trim();\n if (text) {\n return text;\n }\n }\n return typeof payload.content === \"string\" ? payload.content.trim() : \"\";\n}\nfunction responseItemToPart(p) {\n switch (p.type) {\n case \"custom_tool_call\":\n case \"function_call\": {\n const args = p.type === \"function_call\" ? p.arguments : p.input;\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(args),\n toolName: str(p, \"name\") || \"tool\",\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n }\n case \"custom_tool_call_output\":\n case \"function_call_output\":\n case \"tool_search_output\": {\n const output = typeof p.output === \"string\" ? p.output : JSON.stringify(p.output ?? \"\");\n return {\n part: {\n isError: /exit code:\\s*[1-9]/i.test(output),\n output: output.slice(0, 2e3),\n toolUseId: str(p, \"call_id\"),\n type: \"tool_result\"\n },\n role: \"assistant\"\n };\n }\n case \"message\": {\n if (p.role === \"developer\") {\n return null;\n }\n const content = joinMessageText(p.content);\n return content ? { part: { content, type: \"text\" }, role: p.role === \"user\" ? \"user\" : \"assistant\" } : null;\n }\n case \"reasoning\": {\n const think = reasoningText(p);\n return think ? { part: { content: think, type: \"thinking\" }, role: \"assistant\" } : null;\n }\n case \"tool_search_call\":\n case \"web_search_call\":\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(p.action ?? p.query),\n toolName: str(p, \"type\"),\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n default:\n return null;\n }\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nconst LIST_PREFIX_BYTES = 256 * 1024;\nconst MAX_FULL_READ_BYTES$2 = 16 * 1024 * 1024;\nconst APPROX_BYTES_PER_MESSAGE = 3e3;\nconst SYNTHETIC_PROMPT_PREFIXES = [\"<environment_context>\", \"<user_instructions>\", \"<permissions\"];\nfunction detectActiveCodexSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction findCodexRolloutById(sessionId) {\n if (!/^[0-9a-f-]+$/i.test(sessionId)) {\n return null;\n }\n const suffix = `-${sessionId}.jsonl`;\n return collectRolloutFiles().find((p) => path.basename(p).endsWith(suffix)) ?? null;\n}\nfunction findCodexRolloutForCwd(cwd, sinceMs) {\n let best = null;\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.birthtimeMs <= sinceMs) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta?.cwd === cwd && (!best || stat.birthtimeMs > best.birthtime)) {\n best = { birthtime: stat.birthtimeMs, path: filePath };\n }\n } catch {\n }\n }\n return best?.path ?? null;\n}\nfunction getCodexConversation(sessionId, offset = 0, limit = 200) {\n const filePath = findCodexRolloutById(sessionId);\n if (!filePath || !fs.existsSync(filePath)) {\n return [];\n }\n try {\n const { messages } = parseCodexRollout(readBoundedRolloutText(filePath));\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[codex] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCodexProjects() {\n const files = collectRolloutFiles();\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of files) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n let prefix;\n try {\n prefix = readPrefix$3(filePath);\n } catch {\n continue;\n }\n const nlIdx = prefix.indexOf(\"\\n\");\n const firstLine = nlIdx === -1 ? prefix : prefix.slice(0, nlIdx);\n const meta = parseCodexMeta(firstLine);\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.startedAt || stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: meta.id,\n messageCount: Math.max(1, Math.round(stat.size / APPROX_BYTES_PER_MESSAGE)),\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"codex\",\n summary: \"\",\n title: cleanTitle$2(firstUserPrompt(prefix))\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$5(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction readBoundedRolloutText(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$2) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$2;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$2);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$2, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction cleanTitle$2(prompt) {\n const firstLine = prompt.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!firstLine) {\n return \"Untitled Session\";\n }\n return firstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;\n}\nfunction codexSessionsDirs() {\n const home = homedir();\n return [path.join(home, \".codex\", \"sessions\"), path.join(home, \".codex\", \"archived_sessions\")];\n}\nfunction collectRolloutFiles() {\n const out = [];\n const walk = (dir) => {\n let entries;\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n walk(full);\n } else if (entry.name.startsWith(\"rollout-\") && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n }\n }\n };\n for (const root of codexSessionsDirs()) {\n walk(root);\n }\n return out;\n}\nfunction firstUserPrompt(prefixText) {\n for (const line of prefixText.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.includes('\"type\":\"message\"') || !trimmed.includes('\"role\":\"user\"')) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const text = (entry.payload?.content ?? []).filter((c) => c.type === \"input_text\" && typeof c.text === \"string\").map((c) => c.text ?? \"\").join(\"\\n\").trim();\n if (text && !SYNTHETIC_PROMPT_PREFIXES.some((p) => text.startsWith(p))) {\n return text;\n }\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction readPrefix$3(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(LIST_PREFIX_BYTES);\n const bytesRead = fs.readSync(fd, buf, 0, LIST_PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, bytesRead);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash$5(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst AMP_THREADS = path.join(homedir(), \".local\", \"share\", \"amp\", \"threads\");\nconst MAX_FILE_BYTES = 64 * 1024 * 1024;\nconst THREAD_FILE_RE = /^T-(.+)\\.json$/;\nconst SESSION_ID_RE$1 = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveAmpSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectThreadFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n const cwd = projectCwd(doc);\n if (id && cwd) {\n out.push({ cwd, id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getAmpConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return [];\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n if (!fs.existsSync(filePath)) {\n return [];\n }\n try {\n const doc = readThreadDoc(filePath);\n if (!doc) {\n return [];\n }\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const messages = [];\n let idx = 0;\n for (const raw of rawMessages) {\n const msg = ampMessageToConversationMessage(raw, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[amp] Failed to read conversation:\", err);\n return [];\n }\n}\nfunction listAmpProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectThreadFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n if (!id) {\n continue;\n }\n const cwd = projectCwd(doc) || id;\n const modified = lastModified(doc, stat);\n const created = typeof doc.created === \"string\" && doc.created ? doc.created : stat.birthtime.toISOString();\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const session = {\n created,\n gitBranch: \"\",\n id,\n messageCount: rawMessages.length,\n modified,\n projectPath: cwd,\n source: \"amp\",\n summary: \"\",\n title: cleanTitle$1(typeof doc.title === \"string\" ? doc.title : \"\")\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$4(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\") || cwd,\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveAmpSessionFile(sessionId) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return null;\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n return fs.existsSync(filePath) ? filePath : null;\n}\nfunction ampBlockToPart(block) {\n switch (block.type) {\n case \"text\":\n return { content: typeof block.text === \"string\" ? block.text : \"\", type: \"text\" };\n case \"thinking\":\n return {\n content: typeof block.thinking === \"string\" ? block.thinking : \"\",\n type: \"thinking\"\n };\n case \"tool_result\": {\n const output = extractToolResultText(block.content);\n return {\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: typeof block.tool_use_id === \"string\" ? block.tool_use_id : \"\",\n type: \"tool_result\"\n };\n }\n case \"tool_use\":\n return {\n id: typeof block.id === \"string\" ? block.id : \"\",\n input: isRecord$2(block.input) ? block.input : {},\n toolName: typeof block.name === \"string\" ? block.name : \"tool\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction ampMessageToConversationMessage(raw, index) {\n if (!isRecord$2(raw)) {\n return null;\n }\n const role = raw.role;\n if (role !== \"user\" && role !== \"assistant\") {\n return null;\n }\n const parts = contentToParts(raw.content);\n if (parts.length === 0) {\n return null;\n }\n const msgRole = role === \"user\" ? \"user\" : \"assistant\";\n return {\n id: `amp-${msgRole}-${index}`,\n parts,\n role: msgRole,\n timestamp: \"\"\n };\n}\nfunction cleanTitle$1(raw) {\n const first = raw.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectThreadFiles() {\n let entries;\n try {\n entries = fs.readdirSync(AMP_THREADS, { withFileTypes: true });\n } catch {\n return [];\n }\n const files = [];\n for (const entry of entries) {\n if (!entry.isFile() || !THREAD_FILE_RE.test(entry.name)) {\n continue;\n }\n const full = path.join(AMP_THREADS, entry.name);\n try {\n const stat = fs.statSync(full);\n files.push({ mtime: stat.mtimeMs, path: full });\n } catch {\n }\n }\n files.sort((a, b) => b.mtime - a.mtime);\n return files.map((f) => f.path);\n}\nfunction contentToParts(content) {\n if (typeof content === \"string\" && content) {\n return [{ content, type: \"text\" }];\n }\n if (!Array.isArray(content)) {\n return [];\n }\n const parts = [];\n for (const item of content) {\n if (!isRecord$2(item)) {\n continue;\n }\n const part = ampBlockToPart(item);\n if (part) {\n parts.push(part);\n }\n }\n return parts;\n}\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (!Array.isArray(content)) {\n return \"\";\n }\n return content.filter((c) => isRecord$2(c) && c.type === \"text\").map((c) => typeof c.text === \"string\" ? c.text : \"\").join(\"\\n\");\n}\nfunction isRecord$2(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction lastModified(doc, stat) {\n if (isRecord$2(doc.meta)) {\n const traces = doc.meta.traces;\n if (Array.isArray(traces) && traces.length > 0) {\n const last = traces[traces.length - 1];\n if (isRecord$2(last)) {\n const et = last.endTime;\n if (typeof et === \"string\" && et) {\n return et;\n }\n if (typeof et === \"number\" && et > 0) {\n return new Date(et).toISOString();\n }\n }\n }\n }\n return stat.mtime.toISOString();\n}\nfunction projectCwd(doc) {\n if (isRecord$2(doc.env) && isRecord$2(doc.env.initial)) {\n const trees = doc.env.initial.trees;\n if (Array.isArray(trees) && trees.length > 0 && isRecord$2(trees[0])) {\n const dn = trees[0].displayName;\n if (typeof dn === \"string\" && dn) {\n return dn;\n }\n }\n }\n return \"\";\n}\nfunction readThreadDoc(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_FILE_BYTES) {\n return null;\n }\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n return isRecord$2(parsed) ? parsed : null;\n } catch {\n return null;\n }\n}\nfunction shortHash$4(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction threadId(filePath, doc) {\n const m = THREAD_FILE_RE.exec(path.basename(filePath));\n if (m?.[1]) {\n return m[1];\n }\n if (typeof doc.id === \"string\" && doc.id) {\n return doc.id;\n }\n return \"\";\n}\nconst PREFIX_BYTES$2 = 64 * 1024;\nconst MAX_FULL_READ_BYTES$1 = 16 * 1024 * 1024;\nconst COPILOT_SESSION_STATE = path.join(homedir(), \".copilot\", \"session-state\");\nconst SESSION_ID_RE = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveCopilotSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectCopilotFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta$1(readPrefix$2(filePath), filePath);\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getCopilotConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return [];\n }\n const filePath = resolveCopilotSessionFile(sessionId);\n if (!filePath) {\n return [];\n }\n try {\n const text = readBounded$1(filePath);\n const messages = parseCopilotText(text);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[copilot] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCopilotProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectCopilotFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const prefix = safeReadPrefix(filePath);\n if (!prefix) {\n continue;\n }\n const meta = readMeta$1(prefix, filePath);\n if (!meta) {\n continue;\n }\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"copilot\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$3(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveCopilotSessionFile(sessionId) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return null;\n }\n for (const filePath of collectCopilotFiles()) {\n if (sessionIdFromFilePath(filePath) === sessionId) {\n return filePath;\n }\n }\n return null;\n}\nfunction collectCopilotFiles() {\n const out = [];\n let entries;\n try {\n entries = fs.readdirSync(COPILOT_SESSION_STATE, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n const full = path.join(COPILOT_SESSION_STATE, entry.name);\n if (entry.isFile() && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n } else if (entry.isDirectory()) {\n const eventsPath = path.join(full, \"events.jsonl\");\n try {\n fs.statSync(eventsPath);\n out.push(eventsPath);\n } catch {\n }\n }\n }\n return out;\n}\nfunction copilotEventToMessage(entry, pendingToolUseId) {\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const ts = typeof entry.timestamp === \"string\" ? entry.timestamp : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"user.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n if (!content) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-user-${ts}`;\n return {\n id,\n parts: [{ content, type: \"text\" }],\n role: \"user\",\n timestamp: ts\n };\n }\n if (type === \"assistant.reasoning\") {\n const text = typeof data.text === \"string\" ? data.text : \"\";\n if (!text) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-reasoning-${ts}`;\n return {\n id,\n parts: [{ content: text, type: \"thinking\" }],\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"assistant.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n const parts = [];\n const reasoningText2 = typeof data.reasoningText === \"string\" ? data.reasoningText : \"\";\n if (reasoningText2) {\n parts.push({ content: reasoningText2, type: \"thinking\" });\n }\n if (content) {\n parts.push({ content, type: \"text\" });\n }\n if (Array.isArray(data.toolRequests)) {\n for (const req of data.toolRequests) {\n if (!isRecord$1(req)) {\n continue;\n }\n const toolId = typeof req.toolCallId === \"string\" ? req.toolCallId : `copilot-tool-${ts}`;\n pendingToolUseId.value = toolId;\n let input = {};\n if (isRecord$1(req.arguments)) {\n input = req.arguments;\n } else if (typeof req.arguments === \"string\") {\n try {\n const parsed = JSON.parse(req.arguments);\n if (isRecord$1(parsed)) {\n input = parsed;\n }\n } catch {\n }\n }\n parts.push({\n id: toolId,\n input,\n toolName: typeof req.name === \"string\" ? req.name : \"tool\",\n type: \"tool_use\"\n });\n }\n }\n if (parts.length === 0) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-assistant-${ts}`;\n return {\n id,\n parts,\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"tool.execution_complete\") {\n const rawResult = data.result;\n const result = typeof rawResult === \"string\" ? rawResult : JSON.stringify(rawResult ?? \"\");\n const isError = data.isError === true || data.success === false;\n const toolCallId = typeof data.toolCallId === \"string\" ? data.toolCallId : pendingToolUseId.value;\n const toolUseId = toolCallId || pendingToolUseId.value || \"unknown\";\n const id = typeof data.id === \"string\" ? data.id : `copilot-tool-result-${ts}`;\n return {\n id,\n parts: [\n {\n isError,\n output: result.slice(0, 2e3),\n toolUseId,\n type: \"tool_result\"\n }\n ],\n role: \"system\",\n timestamp: ts\n };\n }\n return null;\n}\nfunction isRecord$1(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction parseCopilotText(text) {\n const messages = [];\n const pendingToolUseId = { value: \"\" };\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const msg = copilotEventToMessage(entry, pendingToolUseId);\n if (msg) {\n messages.push(msg);\n if (msg.parts[0]?.type === \"tool_result\") {\n pendingToolUseId.value = \"\";\n }\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readBounded$1(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$1) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$2(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$1;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$1);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$1, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readMeta$1(prefix, filePath) {\n let cwd = \"\";\n let gitBranch = \"\";\n let title = \"\";\n const id = sessionIdFromFilePath(filePath);\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"session.start\") {\n const context = isRecord$1(data.context) ? data.context : data;\n if (!cwd && typeof context.cwd === \"string\") {\n cwd = context.cwd;\n }\n if (!gitBranch && typeof context.branch === \"string\") {\n gitBranch = context.branch;\n }\n }\n if (!title && type === \"user.message\" && typeof data.content === \"string\") {\n title = data.content.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n if (cwd && title) {\n break;\n }\n }\n return cwd ? { cwd, gitBranch, id, title } : null;\n}\nfunction readPrefix$2(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$2);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$2, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction safeReadPrefix(filePath) {\n try {\n return readPrefix$2(filePath);\n } catch {\n return \"\";\n }\n}\nfunction sessionIdFromFilePath(filePath) {\n const base = path.basename(filePath);\n if (base === \"events.jsonl\") {\n return path.basename(path.dirname(filePath));\n }\n return base.replace(/\\.jsonl$/, \"\");\n}\nfunction shortHash$3(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CURSOR_PROJECTS = path.join(homedir(), \".cursor\", \"projects\");\nconst PREFIX_BYTES$1 = 64 * 1024;\nconst MAX_FULL_READ_BYTES = 16 * 1024 * 1024;\nfunction detectActiveCursorSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n out.push({\n cwd: decodeCursorProjectDir(encodedDir),\n id,\n startedAt: stat.birthtimeMs\n });\n } catch {\n }\n }\n return out;\n}\nfunction getCursorConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return [];\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n if (!found) {\n return [];\n }\n try {\n const messages = parseTranscriptFile(found.filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[cursor] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCursorProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n const cwd = decodeCursorProjectDir(encodedDir);\n const title = extractTitle(filePath);\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id,\n messageCount: estimateMessageCount(filePath, stat),\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"cursor\",\n summary: \"\",\n title\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$2(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveCursorSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return null;\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n return found ? found.filePath : null;\n}\nfunction collectTranscriptFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CURSOR_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const transcriptsDir = path.join(CURSOR_PROJECTS, dir.name, \"agent-transcripts\");\n let entries;\n try {\n entries = fs.readdirSync(transcriptsDir, { withFileTypes: true });\n } catch {\n continue;\n }\n const jsonlStems = /* @__PURE__ */ new Set();\n for (const entry of entries) {\n if (!entry.isFile()) {\n continue;\n }\n if (entry.name.endsWith(\".jsonl\")) {\n jsonlStems.add(entry.name.slice(0, -6));\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.endsWith(\".txt\")) {\n continue;\n }\n const stem = entry.name.slice(0, -4);\n if (!jsonlStems.has(stem)) {\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n }\n return out;\n}\nfunction decodeCursorProjectDir(encoded) {\n if (encoded.includes(\"%2F\") || encoded.includes(\"%2f\")) {\n try {\n const decoded = decodeURIComponent(encoded.replace(/%2f/gi, \"/\"));\n if (decoded.startsWith(\"/\")) {\n return decoded;\n }\n } catch {\n }\n }\n if (encoded.startsWith(\"-\")) {\n const candidate = encoded.replace(/-/g, \"/\");\n return candidate;\n }\n return encoded;\n}\nfunction estimateMessageCount(filePath, stat) {\n const ext = path.extname(filePath);\n const avgBytesPerLine = ext === \".txt\" ? 200 : 500;\n return Math.max(1, Math.round(stat.size / avgBytesPerLine));\n}\nfunction extractTitle(filePath) {\n try {\n const prefix = readPrefix$1(filePath);\n const ext = path.extname(filePath);\n if (ext === \".jsonl\") {\n return titleFromJsonl(prefix);\n }\n return titleFromTxt(prefix);\n } catch {\n return \"Untitled Session\";\n }\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction jsonlLineToMessage(entry, idx) {\n const role = resolveRole(entry);\n if (!role) {\n return null;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n return null;\n }\n const rawContent = messageField.content;\n if (rawContent === void 0 || rawContent === null) {\n return null;\n }\n const parts = [];\n if (typeof rawContent === \"string\") {\n if (!rawContent) {\n return null;\n }\n parts.push({ content: rawContent, type: \"text\" });\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (!isRecord(block)) {\n continue;\n }\n const blockType = strOf(block, \"type\");\n if (blockType === \"text\") {\n const text = strOf(block, \"text\");\n if (text) {\n parts.push({ content: text, type: \"text\" });\n }\n } else if (blockType === \"thinking\") {\n const thinking = strOf(block, \"thinking\");\n if (thinking) {\n parts.push({ content: thinking, type: \"thinking\" });\n }\n } else if (blockType === \"tool_use\") {\n const input = block.input;\n parts.push({\n id: strOf(block, \"id\"),\n input: isRecord(input) ? input : {},\n toolName: strOf(block, \"name\") || \"Unknown\",\n type: \"tool_use\"\n });\n } else if (blockType === \"tool_result\") {\n const resultContent = block.content;\n let output = \"\";\n if (typeof resultContent === \"string\") {\n output = resultContent;\n } else if (Array.isArray(resultContent)) {\n output = resultContent.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const t = c.text;\n return typeof t === \"string\" ? t : \"\";\n }).join(\"\\n\");\n }\n const isErr = block.is_error;\n parts.push({\n isError: typeof isErr === \"boolean\" ? isErr : false,\n output: output.slice(0, 2e3),\n toolUseId: strOf(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n } else {\n return null;\n }\n if (parts.length === 0) {\n return null;\n }\n const id = strOf(entry, \"id\") || strOf(entry, \"uuid\") || `cursor-${role}-${String(idx)}`;\n const timestamp = strOf(entry, \"timestamp\") || strOf(entry, \"createdAt\") || \"\";\n return { id, parts, role, timestamp };\n}\nfunction jsonlToMessages(text) {\n const messages = [];\n let idx = 0;\n for (const raw of text.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry)) {\n continue;\n }\n const msg = jsonlLineToMessage(entry, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n } catch {\n }\n }\n return messages;\n}\nfunction parseTranscriptFile(filePath) {\n const ext = path.extname(filePath);\n const text = readBounded(filePath);\n if (ext === \".jsonl\") {\n return jsonlToMessages(text);\n }\n return parseTxtTranscript(text);\n}\nfunction parseTxtTranscript(text) {\n const messages = [];\n let currentRole = null;\n const currentLines = [];\n let idx = 0;\n const flush = () => {\n if (!currentRole || currentLines.length === 0) {\n return;\n }\n const content = currentLines.join(\"\\n\").trim();\n if (content) {\n messages.push({\n id: `cursor-${currentRole}-${String(idx)}`,\n parts: [{ content, type: \"text\" }],\n role: currentRole,\n timestamp: \"\"\n });\n idx++;\n }\n currentLines.length = 0;\n };\n for (const line of text.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n flush();\n currentRole = \"user\";\n const rest = line.slice(5).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (line.startsWith(\"assistant:\")) {\n flush();\n currentRole = \"assistant\";\n const rest = line.slice(10).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (currentRole) {\n currentLines.push(line);\n }\n }\n flush();\n return messages;\n}\nfunction readBounded(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES, start);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readPrefix$1(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$1);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$1, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction resolveRole(entry) {\n const raw = strOf(entry, \"role\") || strOf(entry, \"type\");\n switch (raw.toLowerCase()) {\n case \"assistant\":\n case \"bot\":\n case \"model\":\n return \"assistant\";\n case \"human\":\n case \"user\":\n return \"user\";\n default:\n return null;\n }\n}\nfunction shortHash$2(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction strOf(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction titleFromJsonl(prefix) {\n for (const raw of prefix.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry) || resolveRole(entry) !== \"user\") {\n continue;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n continue;\n }\n const rawContent = messageField.content;\n let text = \"\";\n if (typeof rawContent === \"string\") {\n text = rawContent;\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (isRecord(block) && block.type === \"text\") {\n const t = block.text;\n if (typeof t === \"string\" && t) {\n text = t;\n break;\n }\n }\n }\n }\n if (text) {\n return truncateTitle(text);\n }\n } catch {\n }\n }\n return \"Untitled Session\";\n}\nfunction titleFromTxt(prefix) {\n for (const line of prefix.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n const text = line.slice(5).trim();\n if (text) {\n return truncateTitle(text);\n }\n }\n }\n return \"Untitled Session\";\n}\nfunction transcriptId(filePath) {\n const base = path.basename(filePath);\n const stem = base.endsWith(\".jsonl\") ? base.slice(0, -6) : base.endsWith(\".txt\") ? base.slice(0, -4) : null;\n if (!stem || !/^[A-Za-z0-9_.-]+$/.test(stem)) {\n return null;\n }\n return stem;\n}\nfunction truncateTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nconst MAX_GEMINI_FILE_BYTES = 64 * 1024 * 1024;\nconst GEMINI_TMP = path.join(homedir(), \".gemini\", \"tmp\");\nconst GEMINI_PROJECTS_JSON = path.join(homedir(), \".gemini\", \"projects.json\");\nfunction detectActiveGeminiSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const out = [];\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatFiles = collectChatFiles(hashDir);\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const record = readChatFile(chatFile);\n if (record) {\n out.push({\n cwd,\n id: record.sessionId,\n startedAt: new Date(record.startTime).getTime()\n });\n }\n } catch {\n }\n }\n const logsPath = path.join(hashDir, \"logs.json\");\n try {\n const stat = fs.statSync(logsPath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const entries = readLogsJson(logsPath);\n if (entries.length > 0) {\n const last = entries[entries.length - 1];\n if (last) {\n const alreadyAdded = out.some((o) => o.id === last.sessionId && o.cwd === cwd);\n if (!alreadyAdded) {\n out.push({\n cwd,\n id: last.sessionId,\n startedAt: new Date(entries[0]?.timestamp ?? last.timestamp).getTime()\n });\n }\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction getGeminiConversation(sessionId, offset = 0, limit = 200) {\n const projectDirs = collectProjectHashDirs();\n for (const hashDir of projectDirs) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile) {\n return conversationFromChatFile(chatFile, offset, limit);\n }\n }\n for (const hashDir of projectDirs) {\n const messages = conversationFromLogsJson(hashDir, sessionId);\n if (messages.length > 0) {\n if (offset === 0 && messages.length > limit) {\n return messages.slice(messages.length - limit);\n }\n return messages.slice(offset, offset + limit);\n }\n }\n return [];\n}\nfunction listGeminiProjects() {\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const byCwd = /* @__PURE__ */ new Map();\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatSessions = collectChatSessions(hashDir, cwd);\n if (chatSessions.length > 0) {\n for (const session of chatSessions) {\n appendToMap(byCwd, cwd, session);\n }\n continue;\n }\n const logSessions = sessionsFromLogsJson(hashDir, cwd);\n for (const session of logSessions) {\n appendToMap(byCwd, cwd, session);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n const isRawHash = /^[0-9a-f]{64}$/i.test(cwd);\n projects.push({\n fullPath: cwd,\n id: shortHash$1(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: isRawHash ? `Gemini (${cwd.slice(0, 8)})` : segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveGeminiSessionFile(sessionId) {\n for (const hashDir of collectProjectHashDirs()) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile !== null) {\n return chatFile;\n }\n }\n return null;\n}\nfunction appendToMap(map, key, value) {\n let bucket = map.get(key);\n if (!bucket) {\n bucket = [];\n map.set(key, bucket);\n }\n bucket.push(value);\n}\nfunction buildHashToCwdMap() {\n const map = /* @__PURE__ */ new Map();\n try {\n const raw = fs.readFileSync(GEMINI_PROJECTS_JSON, \"utf-8\");\n const data = JSON.parse(raw);\n for (const [slugOrHash, absolutePath] of Object.entries(data)) {\n map.set(slugOrHash, absolutePath);\n const computed = crypto.createHash(\"sha256\").update(absolutePath).digest(\"hex\");\n map.set(computed, absolutePath);\n }\n } catch {\n }\n return map;\n}\nfunction cleanTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectChatFiles(hashDir) {\n const chatsDir = path.join(hashDir, \"chats\");\n try {\n return fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => path.join(chatsDir, e.name));\n } catch {\n return [];\n }\n}\nfunction collectChatSessions(hashDir, cwd) {\n const chatFiles = collectChatFiles(hashDir);\n const sessions = [];\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n const record = readChatFile(chatFile);\n if (!record) {\n continue;\n }\n const userMessages = record.messages.filter((m) => m.type === \"user\");\n const firstUserMsg = userMessages[0];\n let title = \"Untitled Session\";\n if (firstUserMsg) {\n title = cleanTitle(extractTextFromContent(firstUserMsg.content));\n }\n sessions.push({\n created: record.startTime,\n gitBranch: \"\",\n id: record.sessionId,\n messageCount: record.messages.length,\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: record.summary ?? \"\",\n title\n });\n } catch {\n }\n }\n return sessions;\n}\nfunction collectProjectHashDirs() {\n try {\n return fs.readdirSync(GEMINI_TMP, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => path.join(GEMINI_TMP, e.name));\n } catch {\n return [];\n }\n}\nfunction conversationFromChatFile(chatFile, offset, limit) {\n try {\n const record = readChatFile(chatFile);\n if (!record) {\n return [];\n }\n const messages = record.messages.filter((m) => m.type === \"user\" || m.type === \"gemini\").map(messageRecordToMessage);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[gemini] Failed to read chat file:\", err);\n return [];\n }\n}\nfunction conversationFromLogsJson(hashDir, sessionId) {\n const logsPath = path.join(hashDir, \"logs.json\");\n const entries = readLogsJson(logsPath);\n return entries.filter((e) => e.sessionId === sessionId).map(\n (entry) => ({\n id: `${entry.sessionId}-${String(entry.messageId)}`,\n parts: [{ content: entry.message, type: \"text\" }],\n role: \"user\",\n timestamp: entry.timestamp\n })\n );\n}\nfunction extractTextFromContent(content) {\n if (typeof content === \"string\") {\n return content;\n }\n return content.filter((p) => \"text\" in p).map((p) => p.text).join(\" \");\n}\nfunction findChatFileForSession(hashDir, sessionId) {\n if (!sessionId) {\n return null;\n }\n const chatsDir = path.join(hashDir, \"chats\");\n let names;\n try {\n names = fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => e.name);\n } catch {\n return null;\n }\n const shortId = sessionId.slice(0, 8);\n names.sort((a, b) => Number(b.includes(shortId)) - Number(a.includes(shortId)));\n for (const name of names) {\n const full = path.join(chatsDir, name);\n if (readChatFile(full)?.sessionId === sessionId) {\n return full;\n }\n }\n return null;\n}\nfunction isGeminiLogEntry(v) {\n if (typeof v !== \"object\" || v === null) {\n return false;\n }\n const obj = v;\n return typeof obj.sessionId === \"string\" && typeof obj.messageId === \"number\" && typeof obj.message === \"string\" && typeof obj.timestamp === \"string\";\n}\nfunction messageRecordToMessage(record) {\n const role = record.type === \"user\" ? \"user\" : \"assistant\";\n const parts = [];\n if (record.type === \"gemini\" && record.thoughts) {\n for (const thought of record.thoughts) {\n parts.push({ content: thought.summary ?? \"\", type: \"thinking\" });\n }\n }\n const rawContent = record.content;\n const contentParts = typeof rawContent === \"string\" ? [{ text: rawContent }] : rawContent;\n for (const part of contentParts) {\n if (\"functionCall\" in part) {\n parts.push({\n id: part.functionCall.id ?? part.functionCall.name,\n input: part.functionCall.args,\n toolName: part.functionCall.name,\n type: \"tool_use\"\n });\n } else if (\"thought\" in part && part.thought === true) {\n parts.push({ content: part.text, type: \"thinking\" });\n } else if (\"text\" in part) {\n parts.push({ content: part.text, type: \"text\" });\n }\n }\n if (record.type === \"gemini\" && record.toolCalls) {\n for (const tc of record.toolCalls) {\n const alreadyInParts = parts.some((p) => p.type === \"tool_use\" && p.id === tc.id);\n if (!alreadyInParts) {\n parts.push({\n id: tc.id,\n input: tc.args,\n toolName: tc.name,\n type: \"tool_use\"\n });\n }\n }\n }\n return {\n id: record.id,\n parts,\n role,\n timestamp: record.timestamp\n };\n}\nfunction readChatFile(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_GEMINI_FILE_BYTES) {\n return null;\n }\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\nfunction readLogsJson(logsPath) {\n try {\n if (fs.statSync(logsPath).size > MAX_GEMINI_FILE_BYTES) {\n return [];\n }\n const parsed = JSON.parse(fs.readFileSync(logsPath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed.filter(isGeminiLogEntry) : [];\n } catch {\n return [];\n }\n}\nfunction sessionsFromLogsJson(hashDir, cwd) {\n const logsPath = path.join(hashDir, \"logs.json\");\n let stat;\n try {\n stat = fs.statSync(logsPath);\n } catch {\n return [];\n }\n const entries = readLogsJson(logsPath);\n if (entries.length === 0) {\n return [];\n }\n const bySession = /* @__PURE__ */ new Map();\n for (const entry of entries) {\n let bucket = bySession.get(entry.sessionId);\n if (!bucket) {\n bucket = [];\n bySession.set(entry.sessionId, bucket);\n }\n bucket.push(entry);\n }\n const sessions = [];\n for (const [sessionId, sessionEntries] of bySession) {\n const first = sessionEntries[0];\n const last = sessionEntries[sessionEntries.length - 1];\n sessions.push({\n created: first?.timestamp ?? stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount: sessionEntries.length,\n modified: last?.timestamp ?? stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: \"\",\n title: cleanTitle(first?.message ?? \"\")\n });\n }\n return sessions;\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction resolveOpenCodeDbPath() {\n const home = process.env.HOME || \"\";\n const candidates = [];\n if (process.env.XDG_DATA_HOME) {\n candidates.push(path.join(process.env.XDG_DATA_HOME, \"opencode\", \"opencode.db\"));\n }\n candidates.push(path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\"));\n if (process.platform === \"darwin\") {\n candidates.push(path.join(home, \"Library\", \"Application Support\", \"opencode\", \"opencode.db\"));\n }\n for (const candidate of candidates) {\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return candidates[0] ?? path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\");\n}\nconst QWEN_PROJECTS = path.join(homedir(), \".qwen\", \"projects\");\nconst PREFIX_BYTES = 64 * 1024;\nconst MAX_QWEN_FILE_BYTES = 16 * 1024 * 1024;\nconst SYSTEM_TAG_PREFIXES = [\n \"<command-name>\",\n \"<local-command\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction detectActiveQwenSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectQwenFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getQwenConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return [];\n }\n const filePath = collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`);\n if (!filePath) {\n return [];\n }\n try {\n const messages = readQwenMessages(filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[qwen] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listQwenProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectQwenFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.started || stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"qwen\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resolveQwenSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return null;\n }\n return collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`) ?? null;\n}\nfunction collectQwenFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(QWEN_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const chatsDir = path.join(QWEN_PROJECTS, dir.name, \"chats\");\n try {\n for (const f of fs.readdirSync(chatsDir)) {\n if (f.endsWith(\".jsonl\")) {\n out.push(path.join(chatsDir, f));\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction qwenLineToMessage(entry) {\n const type = entry.type;\n if (type !== \"user\" && type !== \"assistant\") {\n return null;\n }\n const message = entry.message ?? {};\n const rawParts = Array.isArray(message.parts) ? message.parts : [];\n const parts = [];\n for (const raw of rawParts) {\n if (typeof raw !== \"object\" || raw === null) {\n continue;\n }\n const p = raw;\n if (p.functionCall && typeof p.functionCall === \"object\") {\n const fc = p.functionCall;\n const toolName = typeof fc.name === \"string\" ? fc.name : \"tool\";\n parts.push({\n id: typeof fc.id === \"string\" ? fc.id : toolName,\n input: fc.args ?? {},\n toolName,\n type: \"tool_use\"\n });\n } else if (p.thought === true && typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"thinking\" });\n } else if (typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"text\" });\n }\n }\n if (parts.length === 0 && typeof message.content === \"string\" && message.content) {\n parts.push({ content: message.content, type: \"text\" });\n }\n if (parts.length === 0) {\n return null;\n }\n return {\n id: typeof entry.uuid === \"string\" ? entry.uuid : `qwen-${type}`,\n parts,\n role: type === \"user\" ? \"user\" : \"assistant\",\n timestamp: typeof entry.timestamp === \"string\" ? entry.timestamp : \"\"\n };\n}\nfunction readMeta(prefix) {\n let cwd = \"\";\n let id = \"\";\n let gitBranch = \"\";\n let started = \"\";\n let title = \"\";\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!cwd && typeof entry.cwd === \"string\") {\n cwd = entry.cwd;\n }\n if (!id && typeof entry.sessionId === \"string\") {\n id = entry.sessionId;\n }\n if (!gitBranch && typeof entry.gitBranch === \"string\") {\n gitBranch = entry.gitBranch;\n }\n if (!started && typeof entry.timestamp === \"string\") {\n started = entry.timestamp;\n }\n if (!title && entry.type === \"user\") {\n const msg = entry.message;\n let text = typeof msg?.content === \"string\" ? msg.content : \"\";\n if (!text && Array.isArray(msg?.parts)) {\n text = msg.parts.map(\n (p) => p && typeof p === \"object\" && typeof p.text === \"string\" ? p.text : \"\"\n ).join(\" \").trim();\n }\n if (text && !SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n title = text.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n }\n }\n return id && cwd ? { cwd, gitBranch, id, started, title } : null;\n}\nfunction readPrefix(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readQwenMessages(filePath) {\n const messages = [];\n for (const line of readQwenTextBounded(filePath).split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const msg = qwenLineToMessage(JSON.parse(trimmed));\n if (msg) {\n messages.push(msg);\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readQwenTextBounded(filePath) {\n const size = fs.statSync(filePath).size;\n if (size <= MAX_QWEN_FILE_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(MAX_QWEN_FILE_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_QWEN_FILE_BYTES, size - MAX_QWEN_FILE_BYTES);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nexport {\n detectActiveGeminiSessions as a,\n detectActiveQwenSessions as b,\n detectActiveCursorSessions as c,\n detectActiveCodexSessions as d,\n detectActiveCopilotSessions as e,\n detectActiveAmpSessions as f,\n getCodexConversation as g,\n listGeminiProjects as h,\n getGeminiConversation as i,\n listQwenProjects as j,\n getQwenConversation as k,\n listCodexProjects as l,\n listCursorProjects as m,\n getCursorConversation as n,\n listCopilotProjects as o,\n getCopilotConversation as p,\n listAmpProjects as q,\n resolveOpenCodeDbPath as r,\n getAmpConversation as s,\n resolveQwenSessionFile as t,\n resolveGeminiSessionFile as u,\n resolveCursorSessionFile as v,\n resolveCopilotSessionFile as w,\n resolveAmpSessionFile as x,\n findCodexRolloutForCwd as y\n};\n"],"names":[],"mappings":"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"}
|