@juspay/shooter 1.18.0 → 1.19.0
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/build/client/_app/immutable/assets/{0.NV8k8wxG.css → 0.BwNtE8TX.css} +1 -1
- package/build/client/_app/immutable/assets/0.BwNtE8TX.css.br +0 -0
- package/build/client/_app/immutable/assets/{0.NV8k8wxG.css.gz → 0.BwNtE8TX.css.gz} +0 -0
- package/build/client/_app/immutable/assets/8.BYgAX7hR.css +1 -0
- package/build/client/_app/immutable/assets/8.BYgAX7hR.css.br +0 -0
- package/build/client/_app/immutable/assets/8.BYgAX7hR.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.DV6pZunn.css +1 -0
- package/build/client/_app/immutable/assets/9.DV6pZunn.css.br +0 -0
- package/build/client/_app/immutable/assets/9.DV6pZunn.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{DZQMsHM5.js → 2rBV5OkJ.js} +1 -1
- 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/{B9WQy_3X.js → BB2l8o4X.js} +1 -1
- package/build/client/_app/immutable/chunks/BB2l8o4X.js.br +0 -0
- package/build/client/_app/immutable/chunks/BB2l8o4X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Cg3dlX05.js → BPDiEZo0.js} +2 -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/{C_9BZILB.js → BcpydfqI.js} +1 -1
- 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/{nWG9RHyB.js → BcqA7eKM.js} +2 -2
- package/build/client/_app/immutable/chunks/BcqA7eKM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BcqA7eKM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BRqaaL5D.js → BvmdJful.js} +1 -1
- package/build/client/_app/immutable/chunks/BvmdJful.js.br +0 -0
- package/build/client/_app/immutable/chunks/BvmdJful.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C5VOyQCG.js → ClIPTXf3.js} +1 -1
- package/build/client/_app/immutable/chunks/ClIPTXf3.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClIPTXf3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{8lO1IL7u.js → DA4Zt9Me.js} +1 -1
- package/build/client/_app/immutable/chunks/DA4Zt9Me.js.br +0 -0
- package/build/client/_app/immutable/chunks/{8lO1IL7u.js.gz → DA4Zt9Me.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/{DJvX78LW.js → DCDL_9ys.js} +1 -1
- package/build/client/_app/immutable/chunks/DCDL_9ys.js.br +0 -0
- package/build/client/_app/immutable/chunks/DCDL_9ys.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DYuMZGL5.js → DWmC0QM7.js} +1 -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/{DZvnhU_8.js → ZS5XYDx_.js} +2 -2
- package/build/client/_app/immutable/chunks/ZS5XYDx_.js.br +0 -0
- package/build/client/_app/immutable/chunks/ZS5XYDx_.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.D4TXlu7A.js +2 -0
- package/build/client/_app/immutable/entry/app.D4TXlu7A.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D4TXlu7A.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BBQhtURO.js +1 -0
- package/build/client/_app/immutable/entry/start.BBQhtURO.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BBQhtURO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.1zylwAPT.js +10 -0
- package/build/client/_app/immutable/nodes/0.1zylwAPT.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.1zylwAPT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.C4eFlqSB.js → 1.BVnLUSs-.js} +1 -1
- package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.Bs362gyb.js → 10.D1wl2wPX.js} +2 -2
- package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.Cf7_3uqT.js → 11.C18nMGmp.js} +1 -1
- package/build/client/_app/immutable/nodes/11.C18nMGmp.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.C18nMGmp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.CdC092Za.js → 2.D1Mm0DUX.js} +2 -2
- package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.Dhf4ZWW0.js → 3.Wfz3TcJd.js} +3 -3
- package/build/client/_app/immutable/nodes/3.Wfz3TcJd.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.Wfz3TcJd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.BSVqdrrD.js → 4.CBX9A3ka.js} +2 -2
- package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.Cfj35gpY.js → 5.DIVKuZc9.js} +1 -1
- package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.B3SEB_li.js → 6.DtZAEPXb.js} +1 -1
- package/build/client/_app/immutable/nodes/6.DtZAEPXb.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DtZAEPXb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.DV8cJ1lX.js → 7.MfBRh32I.js} +1 -1
- package/build/client/_app/immutable/nodes/7.MfBRh32I.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.MfBRh32I.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DVE6LnOC.js +1 -0
- package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BCel5OqI.js +2 -0
- package/build/client/_app/immutable/nodes/9.BCel5OqI.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BCel5OqI.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-Cd7jY0a7.js → 0-DJqyZZTr.js} +4 -4
- package/build/server/chunks/{0-Cd7jY0a7.js.map → 0-DJqyZZTr.js.map} +1 -1
- package/build/server/chunks/1-2YUVen1F.js +9 -0
- package/build/server/chunks/{1-C4BOGoJY.js.map → 1-2YUVen1F.js.map} +1 -1
- package/build/server/chunks/10-D1X7LB3v.js +9 -0
- package/build/server/chunks/10-D1X7LB3v.js.map +1 -0
- package/build/server/chunks/11-qXSPdF5j.js +9 -0
- package/build/server/chunks/11-qXSPdF5j.js.map +1 -0
- package/build/server/chunks/{2-Ba0mNwJ6.js → 2-BD7kj1mt.js} +3 -3
- package/build/server/chunks/{2-Ba0mNwJ6.js.map → 2-BD7kj1mt.js.map} +1 -1
- package/build/server/chunks/{3-Pg8t1uJU.js → 3-oNjv-BhZ.js} +3 -3
- package/build/server/chunks/{3-Pg8t1uJU.js.map → 3-oNjv-BhZ.js.map} +1 -1
- package/build/server/chunks/{4-BtYdKCVW.js → 4-Bb5VFhsO.js} +3 -3
- package/build/server/chunks/{4-BtYdKCVW.js.map → 4-Bb5VFhsO.js.map} +1 -1
- package/build/server/chunks/{5-CvJK3PiH.js → 5-oNoWuIsn.js} +3 -3
- package/build/server/chunks/{5-CvJK3PiH.js.map → 5-oNoWuIsn.js.map} +1 -1
- package/build/server/chunks/6-DRJGUqHG.js +9 -0
- package/build/server/chunks/{6-D8xbnTSo.js.map → 6-DRJGUqHG.js.map} +1 -1
- package/build/server/chunks/7-_giJiu0L.js +9 -0
- package/build/server/chunks/{7-CkVK06S0.js.map → 7-_giJiu0L.js.map} +1 -1
- package/build/server/chunks/8-zvWAVNT5.js +9 -0
- package/build/server/chunks/8-zvWAVNT5.js.map +1 -0
- package/build/server/chunks/9-DVyDL445.js +9 -0
- package/build/server/chunks/9-DVyDL445.js.map +1 -0
- package/build/server/chunks/Banner-BgaAs1rs.js +90 -0
- package/build/server/chunks/Banner-BgaAs1rs.js.map +1 -0
- package/build/server/chunks/{Button-B5dU-ntz.js → Button-D0hZ7JYt.js} +2 -2
- package/build/server/chunks/Button-D0hZ7JYt.js.map +1 -0
- package/build/server/chunks/{Icon-C7Ml3GX6.js → Icon-D0GBnDcs.js} +3 -3
- package/build/server/chunks/Icon-D0GBnDcs.js.map +1 -0
- package/build/server/chunks/{Input-CPGO0sbS.js → Input-OmIiydSx.js} +2 -2
- package/build/server/chunks/Input-OmIiydSx.js.map +1 -0
- package/build/server/chunks/{Pill-CcrtCejm.js → Pill-4xJ-VhAA.js} +3 -3
- package/build/server/chunks/Pill-4xJ-VhAA.js.map +1 -0
- package/build/server/chunks/{Shimmer-C5jkvGr1.js → Shimmer-Dw2uvTC1.js} +2 -2
- package/build/server/chunks/Shimmer-Dw2uvTC1.js.map +1 -0
- package/build/server/chunks/{_error.svelte-CSIxs-ab.js → _error.svelte-CZnkxeLr.js} +8 -8
- package/build/server/chunks/{_error.svelte-CSIxs-ab.js.map → _error.svelte-CZnkxeLr.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-noB4j-v2.js → _layout.svelte-DfgNGGiM.js} +16 -11
- package/build/server/chunks/_layout.svelte-DfgNGGiM.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DnTpPnPR.js → _page.svelte-BLo2v_8E.js} +7 -88
- package/build/server/chunks/_page.svelte-BLo2v_8E.js.map +1 -0
- package/build/server/chunks/_page.svelte-BTlfUsBp.js +43 -0
- package/build/server/chunks/_page.svelte-BTlfUsBp.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C60lAagP.js → _page.svelte-BUBLUSGo.js} +8 -8
- package/build/server/chunks/_page.svelte-BUBLUSGo.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BV0XyYJZ.js → _page.svelte-BX2FMgSg.js} +4 -4
- package/build/server/chunks/{_page.svelte-BV0XyYJZ.js.map → _page.svelte-BX2FMgSg.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BUkm2304.js → _page.svelte-C7B0qdrC.js} +5 -5
- package/build/server/chunks/{_page.svelte-BUkm2304.js.map → _page.svelte-C7B0qdrC.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Dmg-RFCg.js → _page.svelte-CE7COWnF.js} +7 -7
- package/build/server/chunks/{_page.svelte-Dmg-RFCg.js.map → _page.svelte-CE7COWnF.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BfB8maoc.js → _page.svelte-CWsjjd4l.js} +9 -9
- package/build/server/chunks/{_page.svelte-BfB8maoc.js.map → _page.svelte-CWsjjd4l.js.map} +1 -1
- package/build/server/chunks/_page.svelte-D5S2hkBk.js +104 -0
- package/build/server/chunks/_page.svelte-D5S2hkBk.js.map +1 -0
- package/build/server/chunks/{_page.svelte-B6qyh-K-.js → _page.svelte-D_Ey8QRG.js} +11 -11
- package/build/server/chunks/{_page.svelte-B6qyh-K-.js.map → _page.svelte-D_Ey8QRG.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DuzZr5dA.js → _page.svelte-tBuIq8Pg.js} +11 -11
- package/build/server/chunks/{_page.svelte-DuzZr5dA.js.map → _page.svelte-tBuIq8Pg.js.map} +1 -1
- package/build/server/chunks/_server.ts-BaaY7Z9D.js +77 -0
- package/build/server/chunks/_server.ts-BaaY7Z9D.js.map +1 -0
- package/build/server/chunks/{_server.ts-Bu3s5hfv.js → _server.ts-Bi0Oe4PF.js} +6 -3
- package/build/server/chunks/_server.ts-Bi0Oe4PF.js.map +1 -0
- package/build/server/chunks/_server.ts-C0317RBD.js +57 -0
- package/build/server/chunks/_server.ts-C0317RBD.js.map +1 -0
- package/build/server/chunks/{_server.ts-CwAjt91u.js → _server.ts-CRVNEOd2.js} +5 -3
- package/build/server/chunks/{_server.ts-CwAjt91u.js.map → _server.ts-CRVNEOd2.js.map} +1 -1
- package/build/server/chunks/_server.ts-CVPZOpiv.js +23 -0
- package/build/server/chunks/_server.ts-CVPZOpiv.js.map +1 -0
- package/build/server/chunks/{_server.ts-CyjDrcZN.js → _server.ts-C_OOUqsd.js} +9 -1
- package/build/server/chunks/_server.ts-C_OOUqsd.js.map +1 -0
- package/build/server/chunks/{_server.ts-DZgfQKiH.js → _server.ts-D9ir7u24.js} +2 -2
- package/build/server/chunks/{_server.ts-DZgfQKiH.js.map → _server.ts-D9ir7u24.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DZ5naqSL.js → _server.ts-DMm0hBP4.js} +5 -1
- package/build/server/chunks/_server.ts-DMm0hBP4.js.map +1 -0
- package/build/server/chunks/{_server.ts-DZP2lhaY.js → _server.ts-DhJx0DLr.js} +6 -3
- package/build/server/chunks/_server.ts-DhJx0DLr.js.map +1 -0
- package/build/server/chunks/_server.ts-DkZX_O9a.js +39 -0
- package/build/server/chunks/_server.ts-DkZX_O9a.js.map +1 -0
- package/build/server/chunks/{_server.ts-BA_uWcPw.js → _server.ts-DxT9IlZF.js} +5 -3
- package/build/server/chunks/_server.ts-DxT9IlZF.js.map +1 -0
- package/build/server/chunks/_server.ts-Mttr0-Sl.js +48 -0
- package/build/server/chunks/_server.ts-Mttr0-Sl.js.map +1 -0
- package/build/server/chunks/_server.ts-jtqWDWcf.js +45 -0
- package/build/server/chunks/_server.ts-jtqWDWcf.js.map +1 -0
- package/build/server/chunks/{cache-Me3zUAaD.js → cache-BlMaDsHi.js} +2 -2
- package/build/server/chunks/{cache-Me3zUAaD.js.map → cache-BlMaDsHi.js.map} +1 -1
- package/build/server/chunks/{client-CfNnl32g.js → client-Ds1brw-8.js} +4 -4
- package/build/server/chunks/{client-CfNnl32g.js.map → client-Ds1brw-8.js.map} +1 -1
- package/build/server/chunks/client2-DngLdcUc.js +7 -0
- package/build/server/chunks/{client2-DDP30_vY.js.map → client2-DngLdcUc.js.map} +1 -1
- package/build/server/chunks/coordinator-DMU_ADXf.js +530 -0
- package/build/server/chunks/coordinator-DMU_ADXf.js.map +1 -0
- package/build/server/chunks/{index-CJrGuxuM.js → index-CoYB03g7.js} +2 -2
- package/build/server/chunks/{index-CJrGuxuM.js.map → index-CoYB03g7.js.map} +1 -1
- package/build/server/chunks/{index-server--49oHtA0.js → index-server-Bq3cnK69.js} +2 -2
- package/build/server/chunks/{index-server--49oHtA0.js.map → index-server-Bq3cnK69.js.map} +1 -1
- package/build/server/chunks/{index2-MY7PXeAc.js → index2-dSGQ9Eaa.js} +2 -2
- package/build/server/chunks/{index2-MY7PXeAc.js.map → index2-dSGQ9Eaa.js.map} +1 -1
- package/build/server/chunks/{pty-manager-DmNSCKAr.js → pty-manager-41h3IK8K.js} +2 -1
- package/build/server/chunks/pty-manager-41h3IK8K.js.map +1 -0
- package/build/server/chunks/qwen-reader-DGfUbKaJ.js.map +1 -1
- package/build/server/chunks/{registry-Kcw2UCMv.js → registry-D4J_CuzW.js} +2 -2
- package/build/server/chunks/registry-D4J_CuzW.js.map +1 -0
- package/build/server/chunks/{root-xvQIR1Bt.js → root-D4IoFC8F.js} +2 -2
- package/build/server/chunks/root-D4IoFC8F.js.map +1 -0
- package/build/server/chunks/{state.svelte-RCtlkrNH.js → state.svelte-CmHqngc_.js} +3 -3
- package/build/server/chunks/{state.svelte-RCtlkrNH.js.map → state.svelte-CmHqngc_.js.map} +1 -1
- package/build/server/chunks/{stores-C-LqoonT.js → stores-CRYxfF0o.js} +4 -4
- package/build/server/chunks/stores-CRYxfF0o.js.map +1 -0
- package/build/server/chunks/super-session-handler-DPyxFgmz.js +22 -0
- package/build/server/chunks/super-session-handler-DPyxFgmz.js.map +1 -0
- package/build/server/index.js +4 -4
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +78 -20
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/scripts/e2e-all-features.sh +41 -2
- package/server.ts +25 -0
- package/src/lib/modules/server/sos/coordinator.ts +492 -0
- package/src/lib/modules/server/sos/policy-gate.ts +56 -0
- package/src/lib/modules/server/sos/relay-store.ts +159 -0
- package/src/lib/modules/server/terminal/pty-input.ts +37 -0
- package/src/lib/modules/server/ws/server.ts +6 -1
- package/src/lib/modules/server/ws/session-handler.ts +6 -1
- package/src/lib/modules/server/ws/super-session-handler.ts +200 -0
- package/src/lib/types/index.ts +2 -1
- package/src/lib/types/sos.ts +134 -0
- package/src/routes/+layout.svelte +9 -2
- package/src/routes/api/sos/+server.ts +36 -0
- package/src/routes/api/sos/[id]/+server.ts +55 -0
- package/src/routes/api/sos/[id]/inject/+server.ts +44 -0
- package/src/routes/api/sos/[id]/members/+server.ts +47 -0
- package/src/routes/api/sos/[id]/members/[mid]/+server.ts +17 -0
- package/src/routes/api/sos/[id]/rules/+server.ts +85 -0
- package/src/routes/sos/+page.svelte +195 -0
- package/src/routes/sos/[id]/+page.svelte +677 -0
- package/build/client/_app/immutable/assets/0.NV8k8wxG.css.br +0 -0
- package/build/client/_app/immutable/chunks/8lO1IL7u.js.br +0 -0
- package/build/client/_app/immutable/chunks/B9WQy_3X.js.br +0 -0
- package/build/client/_app/immutable/chunks/B9WQy_3X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BRqaaL5D.js.br +0 -0
- package/build/client/_app/immutable/chunks/BRqaaL5D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C5VOyQCG.js.br +0 -0
- package/build/client/_app/immutable/chunks/C5VOyQCG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C_9BZILB.js.br +0 -0
- package/build/client/_app/immutable/chunks/C_9BZILB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cg3dlX05.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cg3dlX05.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJvX78LW.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJvX78LW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DYuMZGL5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DYuMZGL5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DZQMsHM5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DZQMsHM5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DZvnhU_8.js.br +0 -0
- package/build/client/_app/immutable/chunks/DZvnhU_8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/nWG9RHyB.js.br +0 -0
- package/build/client/_app/immutable/chunks/nWG9RHyB.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.f46Ko1hu.js +0 -2
- package/build/client/_app/immutable/entry/app.f46Ko1hu.js.br +0 -0
- package/build/client/_app/immutable/entry/app.f46Ko1hu.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BVDjNnXt.js +0 -1
- package/build/client/_app/immutable/entry/start.BVDjNnXt.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BVDjNnXt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D_9EwVmq.js +0 -7
- package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CdC092Za.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CdC092Za.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.B3SEB_li.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.B3SEB_li.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Bs362gyb.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Bs362gyb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js.gz +0 -0
- package/build/server/chunks/1-C4BOGoJY.js +0 -9
- package/build/server/chunks/6-D8xbnTSo.js +0 -9
- package/build/server/chunks/7-CkVK06S0.js +0 -9
- package/build/server/chunks/8-C8qVhrds.js +0 -9
- package/build/server/chunks/8-C8qVhrds.js.map +0 -1
- package/build/server/chunks/9-fL5zqN0T.js +0 -9
- package/build/server/chunks/9-fL5zqN0T.js.map +0 -1
- package/build/server/chunks/Button-B5dU-ntz.js.map +0 -1
- package/build/server/chunks/Icon-C7Ml3GX6.js.map +0 -1
- package/build/server/chunks/Input-CPGO0sbS.js.map +0 -1
- package/build/server/chunks/Pill-CcrtCejm.js.map +0 -1
- package/build/server/chunks/Shimmer-C5jkvGr1.js.map +0 -1
- package/build/server/chunks/_layout.svelte-noB4j-v2.js.map +0 -1
- package/build/server/chunks/_page.svelte-C60lAagP.js.map +0 -1
- package/build/server/chunks/_page.svelte-DnTpPnPR.js.map +0 -1
- package/build/server/chunks/_server.ts-BA_uWcPw.js.map +0 -1
- package/build/server/chunks/_server.ts-Bu3s5hfv.js.map +0 -1
- package/build/server/chunks/_server.ts-CyjDrcZN.js.map +0 -1
- package/build/server/chunks/_server.ts-DZ5naqSL.js.map +0 -1
- package/build/server/chunks/_server.ts-DZP2lhaY.js.map +0 -1
- package/build/server/chunks/client2-DDP30_vY.js +0 -7
- package/build/server/chunks/pty-manager-DmNSCKAr.js.map +0 -1
- package/build/server/chunks/registry-Kcw2UCMv.js.map +0 -1
- package/build/server/chunks/root-xvQIR1Bt.js.map +0 -1
- package/build/server/chunks/stores-C-LqoonT.js.map +0 -1
- /package/build/client/_app/immutable/assets/{8.BhoBXADL.css → 10.BhoBXADL.css} +0 -0
- /package/build/client/_app/immutable/assets/{8.BhoBXADL.css.br → 10.BhoBXADL.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{8.BhoBXADL.css.gz → 10.BhoBXADL.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{9.v5KA95xm.css → 11.v5KA95xm.css} +0 -0
- /package/build/client/_app/immutable/assets/{9.v5KA95xm.css.br → 11.v5KA95xm.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{9.v5KA95xm.css.gz → 11.v5KA95xm.css.gz} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DZ5naqSL.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/notify/_server.ts.js"],"sourcesContent":["import { b as private_env } from \"../../../../chunks/shared-server.js\";\nimport { L as LibraryAPNsService } from \"../../../../chunks/library-apns.js\";\nimport { c as createPendingRequest } from \"../../../../chunks/pending-requests.js\";\nimport { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport admin from \"firebase-admin\";\nimport { t as toErrorMessage } from \"../../../../chunks/error.js\";\nimport { b as broadcastEvent } from \"../../../../chunks/events-handler.js\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport { json } from \"@sveltejs/kit\";\nconst MAX_HISTORY = 100;\nconst history = [];\nfunction addNotification(record) {\n history.unshift(record);\n if (history.length > MAX_HISTORY) {\n history.length = MAX_HISTORY;\n }\n}\nfunction getNotifications(limit = 50) {\n return history.slice(0, limit);\n}\nlet app = null;\nfunction isFCMConfigured() {\n return !!(process.env.FCM_PROJECT_ID && process.env.FCM_CLIENT_EMAIL && process.env.FCM_PRIVATE_KEY);\n}\nasync function sendFCMNotification(deviceToken, payload) {\n try {\n const fcmApp = getApp();\n const message = {\n android: {\n priority: \"high\",\n // Ensures delivery even in Doze mode\n ttl: 3e5\n // 5 minutes TTL (matches pending request expiry)\n },\n data: {\n body: payload.body || payload.message || \"\",\n category: payload.category ?? (typeof payload.data?.category === \"string\" ? payload.data.category : \"\"),\n project: typeof payload.data?.project === \"string\" ? payload.data.project : \"\",\n requestId: typeof payload.data?.requestId === \"string\" ? payload.data.requestId : \"\",\n source: typeof payload.data?.source === \"string\" ? payload.data.source : \"\",\n subtitle: payload.subtitle ?? \"\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title: payload.title,\n toolInput: payload.data?.toolInput ? JSON.stringify(payload.data.toolInput) : \"\",\n toolName: typeof payload.data?.toolName === \"string\" ? payload.data.toolName : \"\",\n type: typeof payload.data?.type === \"string\" ? payload.data.type : \"\"\n },\n token: deviceToken\n };\n const messageId = await admin.messaging(fcmApp).send(message);\n return { messageId, success: true };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(\"[FCM] Send failed:\", errorMessage);\n return { error: errorMessage, success: false };\n }\n}\nfunction getApp() {\n if (!app) {\n const projectId = process.env.FCM_PROJECT_ID;\n const clientEmail = process.env.FCM_CLIENT_EMAIL;\n const privateKey = process.env.FCM_PRIVATE_KEY?.replace(/\\\\n/g, \"\\n\");\n if (!projectId || !clientEmail || !privateKey) {\n throw new Error(\n \"FCM not configured: missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY\"\n );\n }\n app = admin.initializeApp({\n credential: admin.credential.cert({ clientEmail, privateKey, projectId })\n });\n }\n return app;\n}\nfunction readPersistedDeviceToken(platform) {\n const tokensFile = join(homedir(), \".shooter\", \"device-tokens.json\");\n if (!existsSync(tokensFile)) {\n return void 0;\n }\n try {\n const parsed = JSON.parse(readFileSync(tokensFile, \"utf-8\"));\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n const value = parsed[platform];\n return typeof value === \"string\" && value ? value : void 0;\n }\n } catch {\n }\n return void 0;\n}\nlet apnsSingleton = null;\nfunction getAPNsClient() {\n if (!apnsSingleton) {\n apnsSingleton = new LibraryAPNsService();\n }\n return apnsSingleton;\n}\nconst notificationCache = /* @__PURE__ */ new Map();\nconst DEDUP_WINDOW = 1e4;\nfunction broadcastHookEvent(body) {\n const data = body.data ?? {};\n const eventType = typeof data.eventType === \"string\" ? data.eventType : typeof body.eventType === \"string\" ? body.eventType : \"\";\n const tool = typeof data.tool === \"string\" ? data.tool : \"\";\n const terminalId = typeof data.terminalId === \"string\" ? data.terminalId : void 0;\n const sessionId = typeof data.sessionId === \"string\" ? data.sessionId : void 0;\n switch (eventType) {\n case \"error\":\n broadcastEvent({\n error: typeof data.error === \"string\" ? data.error : typeof data.message === \"string\" ? data.message : \"Unknown error\",\n terminalId,\n tool,\n type: \"tool-failed\"\n });\n break;\n case \"idle_input\":\n case \"session.idle\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-idle\"\n });\n break;\n case \"permission\":\n case \"permission_notification\":\n if (data.requestId && data.toolName) {\n broadcastEvent({\n input: typeof data.toolInput === \"object\" && data.toolInput !== null ? data.toolInput : {},\n requestId: data.requestId,\n tool: data.toolName,\n type: \"permission-requested\"\n });\n }\n break;\n case \"question\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-question\"\n });\n break;\n case \"tool.after\":\n broadcastEvent({ success: true, terminalId, tool, type: \"tool-completed\" });\n break;\n case \"tool.before\":\n broadcastEvent({\n command: typeof data.command === \"string\" ? data.command : \"\",\n filePath: typeof data.filePath === \"string\" ? data.filePath : typeof data.files === \"string\" ? data.files : \"\",\n terminalId,\n tool,\n type: \"tool-started\"\n });\n break;\n }\n}\nfunction buildNotificationRecord(id, title, message, status, data, error) {\n return {\n category: data?.category ?? null,\n data: data ?? null,\n error: error ?? null,\n id,\n message,\n project: data?.project ?? null,\n source: data?.source ?? null,\n status,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title,\n tool: data?.tool ?? null\n };\n}\nfunction intelligentNotificationFilter(title, message, data, waitForResponse = false) {\n const source = data?.source || \"unknown\";\n if (isDuplicateNotification(title, message, data, waitForResponse)) {\n return {\n reason: \"Duplicate notification within 10-second window\",\n send: false\n };\n }\n if (source === \"smart-completion-detector\" || source === \"shooter-completion-detector\") {\n return {\n reason: \"Smart completion detector - completion or intervention needed\",\n send: true\n };\n }\n if (source === \"stop-hook\") {\n return {\n reason: \"Stop hook completion notification - session finished\",\n send: true\n };\n }\n const spamPatterns = [\n /PreToolUse/i,\n // Any PreToolUse notifications\n /PostToolUse/i,\n // Any PostToolUse notifications\n /^(Read|Write|Edit|Bash)\\s+Starting\\s*\\|\\s*\\w+$/i,\n // Only basic tool starting patterns\n /^unknown\\s*\\|\\s*\\w+$/i\n // Only \"unknown | projectname\" exactly\n ];\n const isSpam = spamPatterns.some((pattern) => pattern.test(title) || pattern.test(message));\n if (isSpam) {\n return {\n reason: \"Filtered spam notification from old hook system\",\n send: false\n };\n }\n const importantPatterns = [\n /session complete/i,\n /intervention needed/i,\n /error/i,\n /failed/i,\n /blocked/i,\n /attention/i\n ];\n const isImportant = importantPatterns.some(\n (pattern) => pattern.test(title) || pattern.test(message)\n );\n if (isImportant) {\n return {\n reason: \"Important notification - completion or intervention\",\n send: true\n };\n }\n return {\n reason: \"General notification - allowing by default\",\n send: true\n };\n}\nfunction isDuplicateNotification(title, message, data, waitForResponse = false) {\n if (waitForResponse) {\n return false;\n }\n const key = `${title}|${message}|${data?.category || \"unknown\"}`;\n const now = Date.now();\n if (notificationCache.has(key)) {\n const lastSent = notificationCache.get(key) ?? 0;\n if (now - lastSent < DEDUP_WINDOW) {\n return true;\n }\n }\n for (const [k, v] of notificationCache.entries()) {\n if (now - v > DEDUP_WINDOW) {\n notificationCache.delete(k);\n }\n }\n return false;\n}\nfunction recordNotification(title, message, data) {\n const key = `${title}|${message}|${data?.category || \"unknown\"}`;\n notificationCache.set(key, Date.now());\n}\nconst POST = async ({ request }) => {\n try {\n const apnsClient = getAPNsClient();\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const rawBody = await request.json();\n if (!rawBody || typeof rawBody !== \"object\" || Array.isArray(rawBody)) {\n return json({ error: \"Request body must be a JSON object\" }, { status: 400 });\n }\n const body = rawBody;\n const data = body.data;\n const requestDeviceToken = body.deviceToken;\n const message = body.message;\n const title = body.title;\n const subtitle = typeof body.subtitle === \"string\" ? body.subtitle : void 0;\n const skipPush = typeof body.skipPush === \"boolean\" ? body.skipPush : false;\n const waitForResponse = typeof body.waitForResponse === \"boolean\" ? body.waitForResponse : false;\n const notificationCategory = typeof body.notificationCategory === \"string\" && body.notificationCategory.length > 0 ? body.notificationCategory : void 0;\n const question = typeof body.question === \"string\" ? body.question : void 0;\n const options = Array.isArray(body.options) && body.options.every((o) => o && typeof o === \"object\") ? body.options : void 0;\n const responseKindRaw = body.responseKind;\n const responseKind = responseKindRaw === \"hook\" || responseKindRaw === \"pty\" || responseKindRaw === \"info\" ? responseKindRaw : void 0;\n try {\n broadcastHookEvent(body);\n } catch {\n }\n if (!title || typeof title !== \"string\" || !message || typeof message !== \"string\") {\n return json({ error: \"Title and message are required and must be strings\" }, { status: 400 });\n }\n if (requestDeviceToken !== void 0 && typeof requestDeviceToken !== \"string\") {\n return json({ error: \"deviceToken must be a string\" }, { status: 400 });\n }\n const requestId = Math.random().toString(36).substring(2, 15);\n const dataRequestId = typeof data?.requestId === \"string\" ? data.requestId : void 0;\n const canonicalRequestId = dataRequestId || requestId;\n const shouldSendNotification = intelligentNotificationFilter(\n title,\n message,\n data,\n waitForResponse\n );\n if (!shouldSendNotification.send) {\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"filtered\",\n data,\n shouldSendNotification.reason\n )\n );\n return json({\n message: \"Notification filtered (not sent)\",\n reason: shouldSendNotification.reason,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n if (skipPush) {\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"skipped\", data));\n return json({\n message: \"Push skipped (WebSocket clients connected)\",\n requestId: canonicalRequestId,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const payload = {\n badge: 1,\n body: message,\n // notificationCategory wins when explicitly set so plan-mode /\n // elicitation flows can pick CLAUDE_PLAN_APPROVAL / CHOICE_2..4.\n // Falls back to CLAUDE_PERMISSION for the legacy bidirectional\n // permission flow when only waitForResponse is provided.\n category: notificationCategory ?? (waitForResponse ? \"CLAUDE_PERMISSION\" : void 0),\n data: {\n ...data,\n requestId: canonicalRequestId,\n source: \"modern-apns-api\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n waitForResponse: waitForResponse || false\n },\n message: null,\n sound: \"default\",\n ...subtitle ? { subtitle } : {},\n title\n };\n const platform = private_env.DEVICE_PLATFORM || \"ios\";\n if (platform === \"android\") {\n if (!isFCMConfigured()) {\n return json(\n {\n details: \"Missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY environment variables\",\n error: \"FCM not configured\"\n },\n { status: 500 }\n );\n }\n const androidToken = requestDeviceToken?.trim() || private_env.ANDROID_DEVICE_TOKEN?.trim() || readPersistedDeviceToken(\"android\");\n if (!androidToken) {\n return json(\n {\n details: \"No Android device token available — set ANDROID_DEVICE_TOKEN, pass deviceToken in the request body, or open the Android app so it can auto-register its FCM token.\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n const fcmResult = await sendFCMNotification(androidToken, payload);\n if (fcmResult.success) {\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result: { messageId: fcmResult.messageId },\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } else {\n console.error(`[notify] FCM delivery failed: ${fcmResult.error}`);\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"failed\",\n data,\n fcmResult.error\n )\n );\n return json(\n {\n details: fcmResult.error,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n } else {\n if (!apnsClient.isConfigured()) {\n return json(\n {\n details: \"Missing APNS_KEY, APNS_KEY_ID, or APNS_TEAM_ID environment variables\",\n error: \"APNs client not configured\"\n },\n { status: 500 }\n );\n }\n const deviceToken = requestDeviceToken?.trim() || private_env.DEVICE_TOKEN?.trim();\n if (!deviceToken) {\n return json(\n {\n details: \"DEVICE_TOKEN environment variable is missing and no deviceToken in request body\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n try {\n const result = await apnsClient.sendNotification(deviceToken, payload);\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (notificationError) {\n const notifErrMsg = toErrorMessage(notificationError);\n console.error(`[notify] APNs delivery failed: ${notifErrMsg}`);\n addNotification(\n buildNotificationRecord(canonicalRequestId, title, message, \"failed\", data, notifErrMsg)\n );\n return json(\n {\n details: notifErrMsg,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n }\n } catch (error) {\n console.error(\"Notification error:\", error);\n return json(\n {\n details: toErrorMessage(error),\n error: \"Failed to send notification\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n};\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const limit = parseInt(url.searchParams.get(\"limit\") || \"50\");\n const notifications = getNotifications(limit);\n return json({\n count: notifications.length,\n notifications,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DZP2lhaY.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/terminals/_id_/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../chunks/auth.js\";\nimport { p as ptyManager } from \"../../../../../chunks/pty-manager.js\";\nimport { t as toErrorMessage } from \"../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction lastScrollbackLine(scrollback) {\n if (!scrollback) {\n return null;\n }\n const lines = scrollback.trimEnd().split(\"\\n\");\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i].trim();\n if (line) {\n return line.slice(0, 200);\n }\n }\n return null;\n}\nconst GET = ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n try {\n const terminal = ptyManager.get(params.id);\n if (!terminal) {\n return json({ error: \"Terminal not found\" }, { status: 404 });\n }\n return json({\n args: terminal.args,\n clientCount: terminal.clients.size,\n command: terminal.command,\n createdAt: terminal.createdAt.toISOString(),\n cwd: terminal.cwd,\n exitCode: terminal.exitCode,\n exitedAt: terminal.exitedAt?.toISOString() ?? null,\n id: terminal.id,\n lastOutput: lastScrollbackLine(terminal.scrollback),\n pid: terminal.pid,\n sessionWs: `/ws/session/${terminal.id}`,\n status: terminal.status,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n ws: `/ws/terminal/${terminal.id}`\n });\n } catch (error) {\n console.error(\"[terminals] Failed to get terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to get terminal\" }, { status: 500 });\n }\n};\nconst DELETE = ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n try {\n const terminal = ptyManager.get(params.id);\n if (!terminal) {\n return json({ error: \"Terminal not found\" }, { status: 404 });\n }\n if (terminal.status === \"exited\") {\n ptyManager.remove(params.id);\n console.log(`[terminals] Removed exited terminal ${params.id}`);\n return json({\n removed: true,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n ptyManager.kill(params.id);\n console.log(`[terminals] Killed terminal ${params.id} (pid=${terminal.pid})`);\n return json({\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"[terminals] Failed to kill terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to kill terminal\" }, { status: 500 });\n }\n};\nexport {\n DELETE,\n GET\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pty-manager-DmNSCKAr.js","sources":["../../../.svelte-kit/adapter-node/chunks/pty-manager.js"],"sourcesContent":["import { fork } from \"child_process\";\nimport { randomBytes } from \"crypto\";\nimport * as fs from \"fs\";\nimport { existsSync, readFileSync, unlinkSync, readdirSync, statSync } from \"fs\";\nimport * as path from \"path\";\nimport path__default from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { b as detectActiveQwenSessions, a as detectActiveGeminiSessions, c as detectActiveCursorSessions, e as detectActiveCopilotSessions, f as detectActiveAmpSessions, t as resolveQwenSessionFile, u as resolveGeminiSessionFile, v as resolveCursorSessionFile, w as resolveCopilotSessionFile, x as resolveAmpSessionFile, r as resolveOpenCodeDbPath, y as findCodexRolloutForCwd } from \"./qwen-reader.js\";\nimport { b as broadcastEvent } from \"./events-handler.js\";\nimport * as net from \"net\";\nimport Database from \"better-sqlite3\";\nfunction readOnlySourceForCommand(command) {\n switch (command) {\n case \"amp\":\n return \"amp\";\n case \"copilot\":\n return \"copilot\";\n case \"cursor-agent\":\n return \"cursor\";\n case \"gemini\":\n return \"gemini\";\n case \"qwen\":\n return \"qwen\";\n default:\n return null;\n }\n}\nfunction resolveReadOnlyProviderFile(source, sessionId) {\n switch (source) {\n case \"amp\":\n return resolveAmpSessionFile(sessionId);\n case \"copilot\":\n return resolveCopilotSessionFile(sessionId);\n case \"cursor\":\n return resolveCursorSessionFile(sessionId);\n case \"gemini\":\n return resolveGeminiSessionFile(sessionId);\n case \"qwen\":\n return resolveQwenSessionFile(sessionId);\n default:\n return null;\n }\n}\nconst READ_ONLY_DETECTORS = {\n amp: detectActiveAmpSessions,\n copilot: detectActiveCopilotSessions,\n cursor: detectActiveCursorSessions,\n gemini: detectActiveGeminiSessions,\n qwen: detectActiveQwenSessions\n};\nfunction discoverReadOnlyProviderSessionFile(source, cwd, launchTimeMs, nowMs) {\n const detect = READ_ONLY_DETECTORS[source];\n if (!detect) {\n return null;\n }\n const thresholdMs = Math.max(nowMs - launchTimeMs + 6e4, 6e4);\n let active;\n try {\n active = detect(thresholdMs);\n } catch {\n return null;\n }\n const afterLaunch = active.filter((s) => s.startedAt >= launchTimeMs - 2e3).sort((a, b) => b.startedAt - a.startedAt);\n const match = afterLaunch.find((s) => s.cwd === cwd) ?? afterLaunch[0];\n if (!match) {\n return null;\n }\n return resolveReadOnlyProviderFile(source, match.id);\n}\nclass HolderClient {\n connected = false;\n pid = 0;\n activityCb = null;\n cwdCb = null;\n disconnectCb = null;\n exitCb = null;\n lineBuf = \"\";\n outputCb = null;\n socket = null;\n /**\n * Connect to a holder process via its Unix domain socket.\n * Resolves once the initial `info` and `scrollback` handshake messages\n * have been received.\n */\n connect(socketPath) {\n return new Promise((resolve, reject) => {\n let settled = false;\n let info = null;\n let scrollback = \"\";\n const pendingMessages = [];\n const HANDSHAKE_TIMEOUT_MS = 1e4;\n const handshakeTimer = setTimeout(() => {\n if (!settled) {\n settled = true;\n this.connected = false;\n if (this.socket) {\n this.socket.destroy();\n this.socket = null;\n }\n reject(\n new Error(`Handshake timeout: holder did not respond within ${HANDSHAKE_TIMEOUT_MS}ms`)\n );\n }\n }, HANDSHAKE_TIMEOUT_MS);\n const socket = net.createConnection(socketPath);\n this.socket = socket;\n socket.setEncoding(\"utf8\");\n socket.on(\"connect\", () => {\n this.connected = true;\n });\n socket.on(\"data\", (chunk) => {\n this.lineBuf += chunk;\n const lines = this.lineBuf.split(\"\\n\");\n this.lineBuf = lines.pop() ?? \"\";\n for (const line of lines) {\n if (line.length === 0) {\n continue;\n }\n let msg;\n try {\n msg = JSON.parse(line);\n } catch {\n continue;\n }\n if (!settled) {\n if (msg.type === \"info\") {\n info = { exitCode: msg.exitCode, exited: msg.exited, pid: msg.pid };\n this.pid = msg.pid;\n } else if (msg.type === \"scrollback\") {\n scrollback = msg.data;\n } else {\n pendingMessages.push(msg);\n }\n if (info !== null) {\n const settle = () => {\n if (settled || !info) {\n return;\n }\n settled = true;\n clearTimeout(handshakeTimer);\n resolve({\n exitCode: info.exitCode,\n exited: info.exited,\n pid: info.pid,\n scrollback\n });\n const queued = [...pendingMessages];\n pendingMessages.length = 0;\n setTimeout(() => {\n for (const pending of queued) {\n this.handleMessage(pending);\n }\n }, 0);\n };\n if (msg.type === \"scrollback\") {\n settle();\n } else if (msg.type === \"info\") {\n setTimeout(settle, 100);\n }\n }\n } else {\n this.handleMessage(msg);\n }\n }\n });\n socket.on(\"error\", (err) => {\n if (!settled) {\n settled = true;\n clearTimeout(handshakeTimer);\n this.connected = false;\n this.socket = null;\n reject(err);\n }\n });\n socket.on(\"close\", () => {\n const wasConnected = this.connected;\n this.connected = false;\n this.socket = null;\n this.lineBuf = \"\";\n if (!settled) {\n settled = true;\n clearTimeout(handshakeTimer);\n reject(new Error(\"Socket closed before handshake completed\"));\n return;\n }\n if (wasConnected && this.disconnectCb) {\n this.disconnectCb();\n }\n });\n });\n }\n /** Gracefully disconnect from the holder (does NOT kill the holder). */\n disconnect() {\n this.connected = false;\n if (this.socket) {\n this.socket.destroy();\n this.socket = null;\n }\n this.lineBuf = \"\";\n }\n /** Send a signal to the PTY process (default SIGTERM). */\n kill(signal) {\n const msg = { type: \"kill\" };\n if (signal) {\n msg.signal = signal;\n }\n this.send(msg);\n }\n /** Register callback for activity state changes. */\n onActivity(cb) {\n this.activityCb = cb;\n }\n /** Register callback for CWD changes. */\n onCwd(cb) {\n this.cwdCb = cb;\n }\n /** Register callback for unexpected disconnect from holder. */\n onDisconnect(cb) {\n this.disconnectCb = cb;\n }\n /** Register callback for PTY exit. */\n onExit(cb) {\n this.exitCb = cb;\n }\n /** Register callback for PTY output data. */\n onOutput(cb) {\n this.outputCb = cb;\n }\n /** Resize the PTY. */\n resize(cols, rows) {\n this.send({ cols, rows, type: \"resize\" });\n }\n /** Write data to the PTY stdin. */\n write(data) {\n this.send({ data, type: \"input\" });\n }\n // ── Private Helpers ────────────────────────────────────────────────\n /** Dispatch a post-handshake message from the holder. */\n handleMessage(msg) {\n switch (msg.type) {\n case \"activity\":\n if (this.activityCb) {\n this.activityCb(msg.active);\n }\n break;\n case \"cwd\":\n if (this.cwdCb) {\n this.cwdCb(msg.path);\n }\n break;\n case \"exit\":\n if (this.exitCb) {\n this.exitCb(msg.code);\n }\n break;\n case \"output\":\n if (this.outputCb) {\n this.outputCb(msg.data);\n }\n break;\n }\n }\n /** Send an ndjson message to the holder. */\n send(msg) {\n if (!this.socket || !this.connected) {\n return;\n }\n this.socket.write(`${JSON.stringify(msg)}\n`);\n }\n}\nconst OPENCODE_DB_PATH = resolveOpenCodeDbPath();\nconst POLL_INTERVAL_MS = 2e3;\nconst SQLITE_MAX_PARAMS = 500;\nclass OpenCodeWatcher {\n watchers = /* @__PURE__ */ new Map();\n /**\n * Find the most recent non-archived OpenCode session that matches\n * the given working directory. Checks session.directory equals or\n * starts with `cwd`.\n *\n * Returns the session ID or null if none found.\n */\n findSessionId(cwd, createdAfter) {\n const db = openDb();\n if (!db) {\n return null;\n }\n try {\n const millisFilter = createdAfter ?? 0;\n const secondsFilter = createdAfter ? Math.floor(createdAfter / 1e3) : 0;\n const cwdLikePattern = `${cwd.replace(/[%_\\\\]/g, \"\\\\$&\")}/%`;\n const row = db.prepare(\n `\n\t\t\t\tSELECT id\n\t\t\t\tFROM session\n\t\t\t\tWHERE (time_archived IS NULL OR time_archived = 0)\n\t\t\t\t AND (directory = ? OR directory LIKE ? ESCAPE '\\\\')\n\t\t\t\t AND (\n\t\t\t\t (time_updated >= 1e12 AND time_updated > ?)\n\t\t\t\t OR (time_updated < 1e12 AND time_updated > ?)\n\t\t\t\t )\n\t\t\t\tORDER BY time_updated DESC\n\t\t\t\tLIMIT 1\n\t\t\t`\n ).get(cwd, cwdLikePattern, millisFilter, secondsFilter);\n return row?.id ?? null;\n } catch (error) {\n console.error(\"[opencode-watcher] Failed to find session:\", error);\n return null;\n } finally {\n db.close();\n }\n }\n /**\n * Read all messages and parts for a session from SQLite, converting\n * them to ConversationMessage format.\n */\n getHistory(sessionId) {\n const db = openDb();\n if (!db) {\n return [];\n }\n try {\n const messages = db.prepare(\n `\n\t\t\t\tSELECT id, session_id, time_created, time_updated, data\n\t\t\t\tFROM message\n\t\t\t\tWHERE session_id = ?\n\t\t\t\tORDER BY time_created ASC\n\t\t\t`\n ).all(sessionId);\n if (messages.length === 0) {\n return [];\n }\n const messageIds = messages.map((m) => m.id);\n const parts = batchInQuery(\n db,\n `SELECT id, message_id, session_id, time_created, time_updated, data\n\t\t\t\tFROM part\n\t\t\t\tWHERE message_id IN (__PLACEHOLDERS__)\n\t\t\t\tORDER BY time_created ASC`,\n messageIds\n );\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of parts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n return this.buildMessages(messages, partsByMessage);\n } catch (error) {\n console.error(\"[opencode-watcher] Failed to read history:\", error);\n return [];\n } finally {\n db.close();\n }\n }\n /**\n * Stop watching a specific session. If a callback is provided, only that\n * subscriber is removed — the interval keeps running while other subscribers\n * remain. If no callback is provided, all subscribers and the interval are\n * cleared (backward compat).\n */\n stop(sessionId, callback) {\n const state = this.watchers.get(sessionId);\n if (!state) {\n return;\n }\n if (callback) {\n state.callbacks.delete(callback);\n console.log(\n `[opencode-watcher] Removed subscriber from session: ${sessionId} (remaining=${state.callbacks.size})`\n );\n if (state.callbacks.size > 0) {\n return;\n }\n }\n clearInterval(state.intervalHandle);\n this.watchers.delete(sessionId);\n console.log(`[opencode-watcher] Stopped watching session: ${sessionId}`);\n }\n /**\n * Stop all active watchers.\n */\n stopAll() {\n for (const [sessionId] of this.watchers) {\n this.stop(sessionId);\n }\n }\n /**\n * Start polling the SQLite DB every 2 seconds for new messages/parts\n * in the given session. Converts new data to ConversationMessage\n * format and invokes the callback.\n */\n watch(sessionId, callback) {\n const existing = this.watchers.get(sessionId);\n if (existing) {\n existing.callbacks.add(callback);\n console.log(\n `[opencode-watcher] Added subscriber to session: ${sessionId} (total=${existing.callbacks.size})`\n );\n return;\n }\n const { emittedMessageIds, emittedPartUpdatedAt, lastMessageTime, lastPartTime } = this.getHighWaterMarks(sessionId);\n const intervalHandle = setInterval(() => {\n this.poll(sessionId);\n }, POLL_INTERVAL_MS);\n const state = {\n callbacks: /* @__PURE__ */ new Set([callback]),\n emittedMessageIds,\n emittedPartUpdatedAt,\n intervalHandle,\n lastMessageTime,\n lastPartTime,\n sessionId\n };\n this.watchers.set(sessionId, state);\n console.log(\n `[opencode-watcher] Watching session: ${sessionId} (lastMsg=${lastMessageTime}, lastPart=${lastPartTime})`\n );\n }\n // ── Private Helpers ────────────────────────────────────────────────\n /**\n * Convert OpenCode messages + their parts into ConversationMessage\n * objects for consumption by the session handler.\n */\n buildMessages(messages, partsByMessage) {\n const result = [];\n for (const msg of messages) {\n let msgData = {};\n try {\n msgData = JSON.parse(msg.data);\n } catch {\n continue;\n }\n const role = msgData.role === \"user\" ? \"user\" : \"assistant\";\n const msgParts = partsByMessage.get(msg.id) || [];\n const parts = [];\n for (const part of msgParts) {\n let partData;\n try {\n partData = JSON.parse(part.data);\n } catch {\n continue;\n }\n const converted = convertPartToMessagePart(partData);\n if (converted) {\n parts.push(converted);\n }\n }\n if (parts.length === 0) {\n console.debug(`[opencode-watcher] Skipping message ${msg.id} (no usable parts)`);\n continue;\n }\n result.push({\n id: msg.id,\n parts,\n role,\n timestamp: new Date(toMillis(msg.time_created)).toISOString()\n });\n }\n return result;\n }\n /**\n * Scan existing messages/parts to determine the starting high-water\n * marks for time-based polling. Also collects the set of already-seen\n * message IDs so we do not re-emit them.\n */\n getHighWaterMarks(sessionId) {\n const db = openDb();\n if (!db) {\n return {\n emittedMessageIds: /* @__PURE__ */ new Set(),\n emittedPartUpdatedAt: /* @__PURE__ */ new Map(),\n lastMessageTime: 0,\n lastPartTime: 0\n };\n }\n try {\n const msgRow = db.prepare(\n `\n\t\t\t\tSELECT MAX(time_created) as maxTime\n\t\t\t\tFROM message\n\t\t\t\tWHERE session_id = ?\n\t\t\t`\n ).get(sessionId);\n const partRow = db.prepare(\n `\n\t\t\t\tSELECT MAX(time_updated) as maxTime\n\t\t\t\tFROM part\n\t\t\t\tWHERE session_id = ?\n\t\t\t`\n ).get(sessionId);\n const existingIds = db.prepare(\n `\n\t\t\t\tSELECT id FROM message WHERE session_id = ?\n\t\t\t`\n ).all(sessionId);\n const emittedMessageIds = new Set(existingIds.map((r) => r.id));\n const existingParts = db.prepare(\n `\n\t\t\t\tSELECT id, time_updated FROM part WHERE session_id = ?\n\t\t\t`\n ).all(sessionId);\n const emittedPartUpdatedAt = /* @__PURE__ */ new Map();\n for (const p of existingParts) {\n emittedPartUpdatedAt.set(p.id, p.time_updated);\n }\n return {\n emittedMessageIds,\n emittedPartUpdatedAt,\n lastMessageTime: msgRow?.maxTime ?? 0,\n lastPartTime: partRow?.maxTime ?? 0\n };\n } catch (error) {\n console.error(\"[opencode-watcher] Failed to get high-water marks:\", error);\n return {\n emittedMessageIds: /* @__PURE__ */ new Set(),\n emittedPartUpdatedAt: /* @__PURE__ */ new Map(),\n lastMessageTime: 0,\n lastPartTime: 0\n };\n } finally {\n db.close();\n }\n }\n /**\n * Single poll iteration. Opens the DB, queries for new messages and\n * updated parts, converts them to ConversationMessage[], and invokes\n * the watcher callbacks.\n */\n poll(sessionId) {\n const state = this.watchers.get(sessionId);\n if (!state) {\n return;\n }\n const db = openDb();\n if (!db) {\n return;\n }\n try {\n const results = [];\n const newMessages = db.prepare(\n `\n\t\t\t\tSELECT id, session_id, time_created, time_updated, data\n\t\t\t\tFROM message\n\t\t\t\tWHERE session_id = ? AND time_created > ?\n\t\t\t\tORDER BY time_created ASC\n\t\t\t`\n ).all(sessionId, state.lastMessageTime);\n if (newMessages.length > 0) {\n const dedupedMessages = newMessages.filter((m) => !state.emittedMessageIds.has(m.id));\n if (dedupedMessages.length > 0) {\n const newMsgIds = dedupedMessages.map((m) => m.id);\n const newParts = batchInQuery(\n db,\n `SELECT id, message_id, session_id, time_created, time_updated, data\n\t\t\t\t\t\tFROM part\n\t\t\t\t\t\tWHERE message_id IN (__PLACEHOLDERS__)\n\t\t\t\t\t\tORDER BY time_created ASC`,\n newMsgIds\n );\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of newParts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const newEntries = this.buildMessages(dedupedMessages, partsByMessage);\n results.push(...newEntries);\n for (const part of newParts) {\n if (part.time_updated > state.lastPartTime) {\n state.lastPartTime = part.time_updated;\n }\n state.emittedPartUpdatedAt.set(part.id, part.time_updated);\n }\n }\n for (const msg of newMessages) {\n if (msg.time_created > state.lastMessageTime) {\n state.lastMessageTime = msg.time_created;\n }\n state.emittedMessageIds.add(msg.id);\n }\n }\n const updatedParts = db.prepare(\n `\n\t\t\t\tSELECT id, message_id, session_id, time_created, time_updated, data\n\t\t\t\tFROM part\n\t\t\t\tWHERE session_id = ? AND time_updated > ?\n\t\t\t\tORDER BY time_created ASC\n\t\t\t`\n ).all(sessionId, state.lastPartTime);\n if (updatedParts.length > 0) {\n const newMsgIdSet = new Set(newMessages.map((m) => m.id));\n const newParts = updatedParts.filter((p) => {\n if (newMsgIdSet.has(p.message_id)) {\n return false;\n }\n const lastSeen = state.emittedPartUpdatedAt.get(p.id);\n return lastSeen === void 0 || p.time_updated > lastSeen;\n });\n if (newParts.length > 0) {\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of newParts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const affectedMsgIds = [...partsByMessage.keys()];\n const affectedMessages = batchInQuery(\n db,\n `SELECT id, session_id, time_created, time_updated, data\n\t\t\t\t\t\tFROM message\n\t\t\t\t\t\tWHERE id IN (__PLACEHOLDERS__)\n\t\t\t\t\t\tORDER BY time_created ASC`,\n affectedMsgIds\n );\n const updatedEntries = this.buildMessages(affectedMessages, partsByMessage);\n results.push(...updatedEntries);\n for (const part of newParts) {\n state.emittedPartUpdatedAt.set(part.id, part.time_updated);\n }\n }\n for (const part of updatedParts) {\n if (part.time_updated > state.lastPartTime) {\n state.lastPartTime = part.time_updated;\n }\n }\n }\n if (results.length > 0) {\n for (const cb of state.callbacks) {\n try {\n cb(results);\n } catch (cbError) {\n console.error(\"[opencode-watcher] Callback error:\", cbError);\n }\n }\n }\n } catch (error) {\n console.error(\"[opencode-watcher] Poll error:\", error);\n } finally {\n db.close();\n }\n }\n}\nfunction batchInQuery(db, sql, ids) {\n if (ids.length === 0) {\n return [];\n }\n const results = [];\n for (let i = 0; i < ids.length; i += SQLITE_MAX_PARAMS) {\n const chunk = ids.slice(i, i + SQLITE_MAX_PARAMS);\n const placeholders = chunk.map(() => \"?\").join(\",\");\n const query = sql.replace(\"__PLACEHOLDERS__\", placeholders);\n const rows = db.prepare(query).all(...chunk);\n results.push(...rows);\n }\n return results;\n}\nfunction convertPartToMessagePart(data) {\n switch (data.type) {\n case \"reasoning\":\n return { content: data.text || \"\", type: \"thinking\" };\n case \"text\":\n return { content: data.text || \"\", type: \"text\" };\n case \"tool\":\n return {\n id: data.callID || data.id || \"\",\n input: data.state?.input || {},\n toolName: data.tool || \"Unknown\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction openDb() {\n if (!fs.existsSync(OPENCODE_DB_PATH)) {\n return null;\n }\n try {\n return new Database(OPENCODE_DB_PATH, { readonly: true });\n } catch {\n return null;\n }\n}\nfunction toMillis(timestamp) {\n return timestamp < 1e12 ? timestamp * 1e3 : timestamp;\n}\nconst OW_GLOBAL_KEY = \"__shooter_opencode_watcher\";\nconst openCodeWatcher = globalThis[OW_GLOBAL_KEY] || new OpenCodeWatcher();\nglobalThis[OW_GLOBAL_KEY] = openCodeWatcher;\nconst DB_DIR = path.join(process.env.HOME || \"\", \".shooter\");\nconst DB_PATH = path.join(DB_DIR, \"shooter.db\");\nconst COLUMNS = [\n \"id\",\n \"command\",\n \"args\",\n \"cwd\",\n \"cols\",\n \"rows\",\n \"pid\",\n \"holder_pid\",\n \"socket_path\",\n \"session_file\",\n \"opencode_session_id\",\n \"status\",\n \"exit_code\",\n \"created_at\",\n \"exited_at\"\n];\nfunction rowToRecord(row) {\n return {\n args: row.args,\n cols: row.cols,\n command: row.command,\n createdAt: row.created_at,\n cwd: row.cwd,\n exitCode: row.exit_code ?? null,\n exitedAt: row.exited_at ?? null,\n holderPid: row.holder_pid ?? null,\n id: row.id,\n opencodeSessionId: row.opencode_session_id ?? null,\n pid: row.pid ?? null,\n rows: row.rows,\n sessionFile: row.session_file ?? null,\n socketPath: row.socket_path ?? null,\n status: row.status\n };\n}\nconst CAMEL_TO_SNAKE = {\n createdAt: \"created_at\",\n exitCode: \"exit_code\",\n exitedAt: \"exited_at\",\n holderPid: \"holder_pid\",\n opencodeSessionId: \"opencode_session_id\",\n sessionFile: \"session_file\",\n socketPath: \"socket_path\"\n};\nclass TerminalStore {\n db;\n constructor() {\n fs.mkdirSync(DB_DIR, { recursive: true });\n this.db = new Database(DB_PATH);\n this.db.pragma(\"journal_mode = WAL\");\n this.db.exec(`\n\t\t\tCREATE TABLE IF NOT EXISTS terminals (\n\t\t\t\tid TEXT PRIMARY KEY,\n\t\t\t\tcommand TEXT NOT NULL,\n\t\t\t\targs TEXT NOT NULL DEFAULT '[]',\n\t\t\t\tcwd TEXT NOT NULL,\n\t\t\t\tcols INTEGER NOT NULL DEFAULT 80,\n\t\t\t\trows INTEGER NOT NULL DEFAULT 24,\n\t\t\t\tpid INTEGER,\n\t\t\t\tholder_pid INTEGER,\n\t\t\t\tsocket_path TEXT,\n\t\t\t\tsession_file TEXT,\n\t\t\t\topencode_session_id TEXT,\n\t\t\t\tstatus TEXT NOT NULL DEFAULT 'running',\n\t\t\t\texit_code INTEGER,\n\t\t\t\tcreated_at TEXT NOT NULL,\n\t\t\t\texited_at TEXT\n\t\t\t)\n\t\t`);\n }\n deleteOlderThan(ms) {\n const cutoff = new Date(Date.now() - ms).toISOString();\n const result = this.db.prepare(\n \"DELETE FROM terminals WHERE status IN ('exited', 'orphaned') AND COALESCE(exited_at, created_at) < ?\"\n ).run(cutoff);\n return result.changes;\n }\n get(id) {\n const row = this.db.prepare(\"SELECT * FROM terminals WHERE id = ?\").get(id);\n return row ? rowToRecord(row) : null;\n }\n insert(terminal) {\n const placeholders = COLUMNS.map(() => \"?\").join(\", \");\n const stmt = this.db.prepare(\n `INSERT INTO terminals (${COLUMNS.join(\", \")}) VALUES (${placeholders})`\n );\n stmt.run(\n terminal.id,\n terminal.command,\n terminal.args,\n terminal.cwd,\n terminal.cols,\n terminal.rows,\n terminal.pid,\n terminal.holderPid,\n terminal.socketPath,\n terminal.sessionFile,\n terminal.opencodeSessionId,\n terminal.status,\n terminal.exitCode,\n terminal.createdAt,\n terminal.exitedAt\n );\n }\n listAll() {\n const rows = this.db.prepare(\"SELECT * FROM terminals ORDER BY created_at DESC\").all();\n return rows.map(rowToRecord);\n }\n listRunning() {\n const rows = this.db.prepare(\"SELECT * FROM terminals WHERE status = 'running' ORDER BY created_at DESC\").all();\n return rows.map(rowToRecord);\n }\n markExited(id, exitCode) {\n this.db.prepare(\"UPDATE terminals SET status = 'exited', exit_code = ?, exited_at = ? WHERE id = ?\").run(exitCode, (/* @__PURE__ */ new Date()).toISOString(), id);\n }\n markOrphaned(id) {\n this.db.prepare(\n \"UPDATE terminals SET status = 'orphaned', exited_at = COALESCE(exited_at, ?) WHERE id = ?\"\n ).run((/* @__PURE__ */ new Date()).toISOString(), id);\n }\n update(id, fields) {\n const entries = Object.entries(fields).filter(\n ([key, val]) => key !== \"id\" && val !== void 0\n );\n if (entries.length === 0) {\n return;\n }\n const sets = entries.map(([key]) => `${toSnake(key)} = ?`).join(\", \");\n const values = entries.map(([, val]) => val ?? null);\n this.db.prepare(`UPDATE terminals SET ${sets} WHERE id = ?`).run(...values, id);\n }\n}\nfunction toSnake(key) {\n return CAMEL_TO_SNAKE[key] || key;\n}\nconst TS_GLOBAL_KEY = \"__shooter_terminal_store\";\nconst terminalStore = globalThis[TS_GLOBAL_KEY] || new TerminalStore();\nglobalThis[TS_GLOBAL_KEY] = terminalStore;\nconst MAX_SCROLLBACK_BYTES = 512 * 1024;\nconst MAX_OUTPUT_BUFFER_BYTES = 1024 * 1024;\nconst SCROLLBACK_CHUNK_SIZE = 50 * 1024;\nconst CLEANUP_INTERVAL_MS = 5 * 60 * 1e3;\nconst EXITED_TTL_MS = 60 * 60 * 1e3;\nconst MAX_EXITED_TERMINALS = 10;\nconst SIGKILL_DELAY_MS = 5e3;\nconst HOLDER_READY_TIMEOUT_MS = 5e3;\nconst DB_CLEANUP_TTL_MS = 24 * 60 * 60 * 1e3;\nconst __filename$1 = fileURLToPath(import.meta.url);\nconst __dirname$1 = path__default.dirname(__filename$1);\nclass PtyManager {\n cleanupTimer = null;\n terminals = /* @__PURE__ */ new Map();\n constructor() {\n this.cleanupTimer = setInterval(() => {\n this.cleanup();\n }, CLEANUP_INTERVAL_MS);\n }\n // -----------------------------------------------------------------------\n // create — now async: forks a holder process, connects via HolderClient,\n // persists to SQLite\n // -----------------------------------------------------------------------\n attach(id, ws) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n terminal.clients.add(ws);\n terminal.outputBuffers.set(ws, { data: [], size: 0 });\n void this.sendScrollback(terminal, ws);\n return true;\n }\n // -----------------------------------------------------------------------\n // reconnectAll — recover persisted terminals on server startup\n // -----------------------------------------------------------------------\n cleanup() {\n const now = Date.now();\n const exited = [];\n for (const [id, terminal] of this.terminals) {\n if (terminal.status !== \"exited\") {\n continue;\n }\n const exitTime = terminal.exitedAt?.getTime() ?? terminal.createdAt.getTime();\n if (now - exitTime > EXITED_TTL_MS) {\n this.evict(id);\n continue;\n }\n exited.push({ exitedAt: exitTime, id });\n }\n if (exited.length > MAX_EXITED_TERMINALS) {\n exited.sort((a, b) => a.exitedAt - b.exitedAt);\n const toEvict = exited.slice(0, exited.length - MAX_EXITED_TERMINALS);\n for (const { id } of toEvict) {\n this.evict(id);\n }\n }\n try {\n const deleted = terminalStore.deleteOlderThan(DB_CLEANUP_TTL_MS);\n if (deleted > 0) {\n console.log(`[pty-manager] Cleaned up ${deleted} old terminal record(s) from SQLite`);\n }\n } catch {\n }\n }\n // -----------------------------------------------------------------------\n // disconnectAll — graceful shutdown: disconnect clients, keep holders alive\n // -----------------------------------------------------------------------\n async create(command, args, cwd, cols, rows) {\n const id = randomBytes(4).toString(\"hex\");\n const socketPath = `/tmp/shooter-term-${id}.sock`;\n const holderScript = resolveHolderPath();\n const holderArgs = [id, socketPath, cwd, String(cols), String(rows), command, ...args];\n const holder = fork(holderScript, holderArgs, {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"ignore\", \"ipc\"]\n });\n holder.unref();\n await new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n holder.kill();\n reject(new Error(\"Holder ready timeout\"));\n }, HOLDER_READY_TIMEOUT_MS);\n holder.on(\"message\", (msg) => {\n if (msg.type === \"ready\") {\n clearTimeout(timeout);\n holder.disconnect();\n resolve();\n }\n });\n holder.on(\"error\", (err) => {\n clearTimeout(timeout);\n reject(new Error(`Holder process error: ${err.message}`));\n });\n holder.on(\"exit\", (code) => {\n clearTimeout(timeout);\n reject(new Error(`Holder process exited with code ${code} before ready`));\n });\n });\n if (holder.pid === void 0 || holder.pid === null) {\n throw new Error(`Holder process forked but PID unavailable for terminal ${id}`);\n }\n const holderPid = holder.pid;\n const client = new HolderClient();\n const connectResult = await client.connect(socketPath);\n const now = /* @__PURE__ */ new Date();\n const terminal = {\n args,\n clients: /* @__PURE__ */ new Set(),\n cols,\n command,\n createdAt: now,\n currentCwd: null,\n cwd,\n exitCode: connectResult.exitCode,\n exitedAt: null,\n holderPid,\n id,\n isActive: false,\n openCodeNoopCb: null,\n openCodeSessionId: null,\n outputBuffers: /* @__PURE__ */ new Map(),\n pid: connectResult.pid,\n pollTimer: null,\n pty: client,\n rows,\n scrollback: connectResult.scrollback,\n sessionFile: null,\n socketPath,\n status: connectResult.exited ? \"exited\" : \"running\",\n watcherOffset: 0\n };\n this.wireHolderCallbacks(client, terminal);\n terminalStore.insert({\n args: JSON.stringify(args),\n cols,\n command,\n createdAt: now.toISOString(),\n cwd,\n exitCode: null,\n exitedAt: null,\n holderPid,\n id,\n opencodeSessionId: null,\n pid: connectResult.pid,\n rows,\n sessionFile: null,\n socketPath,\n status: \"running\"\n });\n this.startSessionDiscovery(terminal);\n this.terminals.set(id, terminal);\n broadcastEvent({\n command: terminal.command ?? command,\n terminalId: id,\n type: \"terminal-created\"\n });\n return terminal;\n }\n // -----------------------------------------------------------------------\n // get\n // -----------------------------------------------------------------------\n destroy() {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n for (const [id, terminal] of this.terminals) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n if (terminal.status === \"running\") {\n try {\n terminal.pty.kill(\"SIGTERM\");\n } catch {\n }\n if (terminal.holderPid > 0) {\n try {\n process.kill(terminal.holderPid, \"SIGKILL\");\n } catch {\n }\n }\n }\n terminal.pty.disconnect();\n for (const ws of terminal.clients) {\n try {\n ws.close();\n } catch {\n }\n }\n this.terminals.delete(id);\n }\n }\n // -----------------------------------------------------------------------\n // list — running first, then recently exited, each group sorted by\n // createdAt descending\n // -----------------------------------------------------------------------\n detach(id, ws) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n terminal.clients.delete(ws);\n terminal.outputBuffers.delete(ws);\n return true;\n }\n // -----------------------------------------------------------------------\n // kill — route through holder: SIGTERM, then SIGKILL after 5 s\n // -----------------------------------------------------------------------\n disconnectAll() {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n for (const [, terminal] of this.terminals) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n terminal.pty.disconnect();\n for (const ws of terminal.clients) {\n try {\n ws.close();\n } catch {\n }\n }\n terminal.clients.clear();\n terminal.outputBuffers.clear();\n }\n this.terminals.clear();\n }\n // -----------------------------------------------------------------------\n // remove — remove an exited terminal from the map\n // -----------------------------------------------------------------------\n get(id) {\n return this.terminals.get(id) ?? null;\n }\n // -----------------------------------------------------------------------\n // resize\n // -----------------------------------------------------------------------\n getScrollback(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return null;\n }\n return terminal.scrollback;\n }\n // -----------------------------------------------------------------------\n // attach — register a WebSocket client and replay scrollback\n // -----------------------------------------------------------------------\n kill(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n if (terminal.status === \"exited\") {\n return true;\n }\n try {\n terminal.pty.kill(\"SIGTERM\");\n } catch {\n terminal.status = \"exited\";\n terminal.exitedAt = /* @__PURE__ */ new Date();\n terminalStore.markExited(id, null);\n this.emitTerminalExited(id, null);\n return true;\n }\n setTimeout(() => {\n if (terminal.status === \"running\") {\n try {\n terminal.pty.kill(\"SIGKILL\");\n } catch {\n }\n terminal.status = \"exited\";\n terminal.exitedAt = terminal.exitedAt ?? /* @__PURE__ */ new Date();\n terminalStore.markExited(id, null);\n this.emitTerminalExited(id, null);\n }\n }, SIGKILL_DELAY_MS);\n return true;\n }\n // -----------------------------------------------------------------------\n // detach — remove a WebSocket client\n // -----------------------------------------------------------------------\n list() {\n const all = Array.from(this.terminals.values());\n const running = all.filter((t) => t.status === \"running\").sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n const exited = all.filter((t) => t.status === \"exited\").sort((a, b) => {\n const aTime = a.exitedAt?.getTime() ?? a.createdAt.getTime();\n const bTime = b.exitedAt?.getTime() ?? b.createdAt.getTime();\n return bTime - aTime;\n });\n return [...running, ...exited];\n }\n // -----------------------------------------------------------------------\n // getScrollback — return raw scrollback data for replay\n // -----------------------------------------------------------------------\n async reconnectAll() {\n const running = terminalStore.listRunning();\n if (running.length === 0) {\n console.log(\"[pty-manager] No persisted terminals to reconnect\");\n return;\n }\n console.log(`[pty-manager] Reconnecting to ${running.length} persisted terminal(s)...`);\n for (const record of running) {\n try {\n await this.reconnectOne(record);\n } catch (err) {\n const errMsg = err instanceof Error ? err.message : String(err);\n console.warn(`[pty-manager] Failed to reconnect terminal ${record.id}: ${errMsg}`);\n this.handleReconnectFailure(record);\n }\n }\n }\n // -----------------------------------------------------------------------\n // cleanup — evict exited terminals older than 1 hour, cap at 10 exited;\n // also clean up old SQLite records\n // -----------------------------------------------------------------------\n remove(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n if (terminal.status === \"running\") {\n return false;\n }\n this.evict(id);\n return true;\n }\n // -----------------------------------------------------------------------\n // destroy — emergency forced kill (kills holder processes too)\n // -----------------------------------------------------------------------\n resize(id, cols, rows) {\n const terminal = this.terminals.get(id);\n if (!terminal || terminal.status === \"exited\") {\n return false;\n }\n try {\n terminal.pty.resize(cols, rows);\n terminal.cols = cols;\n terminal.rows = rows;\n return true;\n } catch {\n return false;\n }\n }\n // -----------------------------------------------------------------------\n // Private: reconnectOne — reconnect to a single persisted terminal\n // -----------------------------------------------------------------------\n appendScrollback(terminal, data) {\n terminal.scrollback += data;\n if (Buffer.byteLength(terminal.scrollback, \"utf8\") > MAX_SCROLLBACK_BYTES) {\n const mid = Math.floor(terminal.scrollback.length / 2);\n const newlineIdx = terminal.scrollback.indexOf(\"\\n\", mid);\n if (newlineIdx !== -1) {\n terminal.scrollback = terminal.scrollback.slice(newlineIdx + 1);\n } else {\n terminal.scrollback = terminal.scrollback.slice(mid);\n }\n }\n }\n // -----------------------------------------------------------------------\n // Private: handleReconnectFailure — handle failed reconnection\n // -----------------------------------------------------------------------\n broadcastOutput(terminal, data) {\n const msg = JSON.stringify({ data, type: \"output\" });\n for (const ws of terminal.clients) {\n if (ws.bufferedAmount > MAX_OUTPUT_BUFFER_BYTES) {\n this.safeSend(ws, JSON.stringify({ bytes: data.length, type: \"output-dropped\" }));\n continue;\n }\n const buffer = terminal.outputBuffers.get(ws);\n if (!buffer) {\n continue;\n }\n const msgSize = Buffer.byteLength(msg, \"utf8\");\n if (buffer.size + msgSize > MAX_OUTPUT_BUFFER_BYTES) {\n let droppedBytes = 0;\n while (buffer.size + msgSize > MAX_OUTPUT_BUFFER_BYTES && buffer.data.length > 0) {\n const dropped = buffer.data.shift();\n if (dropped) {\n const droppedSize = Buffer.byteLength(dropped, \"utf8\");\n buffer.size -= droppedSize;\n droppedBytes += droppedSize;\n }\n }\n if (droppedBytes > 0) {\n const dropMsg = JSON.stringify({\n bytes: droppedBytes,\n type: \"output-dropped\"\n });\n this.safeSend(ws, dropMsg);\n }\n }\n buffer.data.push(msg);\n buffer.size += msgSize;\n this.flushOutputBuffer(ws, buffer);\n }\n }\n // -----------------------------------------------------------------------\n // Private: startSessionDiscovery — polling for session files\n // -----------------------------------------------------------------------\n /** Broadcast a terminal-exited event to /ws/events for the activity feed. */\n emitTerminalExited(terminalId, exitCode) {\n broadcastEvent({\n code: exitCode ?? null,\n terminalId,\n type: \"terminal-exited\"\n });\n }\n /** Evict a terminal, freeing all resources. */\n evict(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return;\n }\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n if (terminal.openCodeSessionId && terminal.openCodeNoopCb) {\n openCodeWatcher.stop(terminal.openCodeSessionId, terminal.openCodeNoopCb);\n terminal.openCodeNoopCb = null;\n }\n terminal.pty.disconnect();\n for (const ws of terminal.clients) {\n try {\n ws.close();\n } catch {\n }\n }\n terminal.clients.clear();\n terminal.outputBuffers.clear();\n terminal.scrollback = \"\";\n this.terminals.delete(id);\n }\n // -----------------------------------------------------------------------\n // Private: appendScrollback — append to cached scrollback string,\n // trim from midpoint when cap exceeded\n // -----------------------------------------------------------------------\n /** Attempt to flush buffered messages to a WebSocket client. */\n flushOutputBuffer(ws, buffer) {\n while (buffer.data.length > 0) {\n const msg = buffer.data[0];\n if (!this.safeSend(ws, msg)) {\n break;\n }\n buffer.data.shift();\n buffer.size -= Buffer.byteLength(msg, \"utf8\");\n }\n }\n // -----------------------------------------------------------------------\n // Private: broadcastOutput — send output to all connected WS clients\n // with backpressure management\n // -----------------------------------------------------------------------\n handleReconnectFailure(record) {\n if (record.holderPid) {\n try {\n process.kill(record.holderPid, 0);\n console.warn(\n `[pty-manager] Holder PID ${record.holderPid} alive but socket dead for ${record.id}`\n );\n } catch {\n }\n }\n if (record.socketPath) {\n const exitFilePath = `${record.socketPath}.exit`;\n if (existsSync(exitFilePath)) {\n try {\n const exitData = JSON.parse(readFileSync(exitFilePath, \"utf8\"));\n unlinkSync(exitFilePath);\n terminalStore.markExited(record.id, exitData.code);\n console.log(\n `[pty-manager] Terminal ${record.id} exited while disconnected (code=${exitData.code})`\n );\n return;\n } catch {\n }\n }\n }\n terminalStore.markOrphaned(record.id);\n console.log(`[pty-manager] Marked terminal ${record.id} as orphaned`);\n }\n async reconnectOne(record) {\n if (!record.socketPath) {\n throw new Error(\"No socket path stored\");\n }\n const exitFilePath = `${record.socketPath}.exit`;\n if (existsSync(exitFilePath)) {\n try {\n const exitData = JSON.parse(readFileSync(exitFilePath, \"utf8\"));\n unlinkSync(exitFilePath);\n terminalStore.markExited(record.id, exitData.code);\n console.log(\n `[pty-manager] Terminal ${record.id} exited while disconnected (code=${exitData.code})`\n );\n return;\n } catch {\n }\n }\n const client = new HolderClient();\n const connectResult = await client.connect(record.socketPath);\n let parsedArgs = [];\n try {\n parsedArgs = JSON.parse(record.args);\n } catch {\n }\n const terminal = {\n args: parsedArgs,\n clients: /* @__PURE__ */ new Set(),\n cols: record.cols,\n command: record.command,\n createdAt: new Date(record.createdAt),\n currentCwd: null,\n cwd: record.cwd,\n exitCode: connectResult.exitCode,\n exitedAt: record.exitedAt ? new Date(record.exitedAt) : null,\n holderPid: record.holderPid ?? 0,\n id: record.id,\n isActive: false,\n openCodeNoopCb: null,\n openCodeSessionId: record.opencodeSessionId ?? null,\n outputBuffers: /* @__PURE__ */ new Map(),\n pid: connectResult.pid,\n pollTimer: null,\n pty: client,\n rows: record.rows,\n scrollback: connectResult.scrollback,\n sessionFile: record.sessionFile ?? null,\n socketPath: record.socketPath,\n status: connectResult.exited ? \"exited\" : \"running\",\n watcherOffset: 0\n };\n if (connectResult.exited) {\n terminal.exitedAt = terminal.exitedAt ?? /* @__PURE__ */ new Date();\n terminalStore.markExited(record.id, connectResult.exitCode);\n }\n this.wireHolderCallbacks(client, terminal);\n if (terminal.sessionFile) ;\n if (terminal.openCodeSessionId) {\n const noopCb = (_messages) => {\n };\n terminal.openCodeNoopCb = noopCb;\n openCodeWatcher.watch(terminal.openCodeSessionId, noopCb);\n }\n if (!terminal.sessionFile && !terminal.openCodeSessionId && terminal.status === \"running\") {\n this.startSessionDiscovery(terminal);\n }\n if (record.pid !== connectResult.pid) {\n terminalStore.update(record.id, { pid: connectResult.pid });\n }\n this.terminals.set(record.id, terminal);\n console.log(\n `[pty-manager] Reconnected terminal ${record.id} (pid=${connectResult.pid}, holder=${record.holderPid}, status=${terminal.status})`\n );\n }\n /** Safely send a message to a WebSocket, returning false on failure. */\n safeSend(ws, msg) {\n try {\n if (ws.readyState !== 1) {\n return false;\n }\n ws.send(msg);\n return true;\n } catch {\n return false;\n }\n }\n /** Send cached scrollback data to a newly connected client in 50 KB chunks. */\n async sendScrollback(terminal, ws) {\n const fullData = terminal.scrollback;\n if (fullData.length === 0) {\n return;\n }\n const totalBytes = Buffer.byteLength(fullData, \"utf8\");\n const totalChunks = Math.ceil(totalBytes / SCROLLBACK_CHUNK_SIZE);\n if (totalChunks <= 1) {\n const msg = JSON.stringify({\n chunk: 1,\n data: fullData,\n total: 1,\n type: \"scrollback\"\n });\n this.safeSend(ws, msg);\n return;\n }\n const buf = Buffer.from(fullData, \"utf8\");\n let offset = 0;\n let chunkIndex = 1;\n while (offset < buf.length) {\n if (ws.bufferedAmount > SCROLLBACK_CHUNK_SIZE * 2) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n const end = Math.min(offset + SCROLLBACK_CHUNK_SIZE, buf.length);\n const chunkData = buf.subarray(offset, end).toString(\"utf8\");\n const msg = JSON.stringify({\n chunk: chunkIndex,\n data: chunkData,\n total: totalChunks,\n type: \"scrollback\"\n });\n this.safeSend(ws, msg);\n offset = end;\n chunkIndex++;\n }\n }\n startSessionDiscovery(terminal) {\n const { command, cwd, id } = terminal;\n if (command === \"claude\") {\n const projectDir = path__default.join(\n process.env.HOME || \"\",\n \".claude\",\n \"projects\",\n cwd.replace(/\\//g, \"-\")\n );\n const resumeIdx = terminal.args.indexOf(\"--resume\");\n if (resumeIdx !== -1 && resumeIdx + 1 < terminal.args.length) {\n const resumeId = terminal.args[resumeIdx + 1];\n if (!/^[0-9a-f-]+$/i.test(resumeId)) {\n console.warn(`[pty-manager] Invalid resume ID: ${resumeId}`);\n } else {\n const resumeFile = path__default.join(projectDir, `${resumeId}.jsonl`);\n if (existsSync(resumeFile)) {\n terminal.sessionFile = resumeFile;\n terminalStore.update(id, { sessionFile: resumeFile });\n return;\n }\n }\n }\n const launchTime = terminal.createdAt.getTime();\n terminal.pollTimer = setInterval(() => {\n if (terminal.status === \"exited\" || terminal.sessionFile) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n return;\n }\n try {\n if (!existsSync(projectDir)) {\n return;\n }\n const files = readdirSync(projectDir).filter((f) => f.endsWith(\".jsonl\")).map((f) => {\n const stat = statSync(path__default.join(projectDir, f));\n return {\n birthtime: stat.birthtimeMs,\n fullPath: path__default.join(projectDir, f),\n mtime: stat.mtimeMs,\n name: f\n };\n }).filter((f) => f.birthtime > launchTime).sort((a, b) => b.birthtime - a.birthtime);\n if (files.length > 0) {\n terminal.sessionFile = files[0].fullPath;\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n terminalStore.update(id, { sessionFile: terminal.sessionFile });\n }\n } catch {\n }\n }, 1500);\n setTimeout(\n () => {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n },\n 5 * 60 * 1e3\n );\n }\n if (command === \"opencode\") {\n const launchTime = terminal.createdAt.getTime();\n const pollInterval = setInterval(() => {\n if (terminal.status === \"exited\" || terminal.openCodeSessionId) {\n clearInterval(pollInterval);\n if (terminal.openCodeSessionId) {\n const noopCb = (_messages) => {\n };\n terminal.openCodeNoopCb = noopCb;\n openCodeWatcher.watch(terminal.openCodeSessionId, noopCb);\n }\n return;\n }\n const sessionId = openCodeWatcher.findSessionId(cwd, launchTime);\n if (sessionId) {\n terminal.openCodeSessionId = sessionId;\n clearInterval(pollInterval);\n const noopCb = (_messages) => {\n };\n terminal.openCodeNoopCb = noopCb;\n openCodeWatcher.watch(sessionId, noopCb);\n terminalStore.update(id, { opencodeSessionId: sessionId });\n }\n }, 2e3);\n terminal.pollTimer = pollInterval;\n setTimeout(\n () => {\n clearInterval(pollInterval);\n terminal.pollTimer = null;\n },\n 5 * 60 * 1e3\n );\n }\n if (command === \"codex\") {\n const launchTime = terminal.createdAt.getTime();\n terminal.pollTimer = setInterval(() => {\n if (terminal.status === \"exited\" || terminal.sessionFile) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n return;\n }\n try {\n const rollout = findCodexRolloutForCwd(cwd, launchTime);\n if (rollout) {\n terminal.sessionFile = rollout;\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n terminalStore.update(id, { sessionFile: rollout });\n }\n } catch {\n }\n }, 1500);\n setTimeout(\n () => {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n },\n 5 * 60 * 1e3\n );\n }\n const readOnlySource = readOnlySourceForCommand(command);\n if (readOnlySource) {\n const launchTime = terminal.createdAt.getTime();\n terminal.pollTimer = setInterval(() => {\n if (terminal.status === \"exited\" || terminal.sessionFile) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n return;\n }\n try {\n const file = discoverReadOnlyProviderSessionFile(\n readOnlySource,\n cwd,\n launchTime,\n Date.now()\n );\n if (file) {\n terminal.sessionFile = file;\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n terminalStore.update(id, { sessionFile: file });\n }\n } catch {\n }\n }, 2e3);\n setTimeout(\n () => {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n },\n 5 * 60 * 1e3\n );\n }\n }\n /** Wire up all HolderClient callbacks (activity, CWD, output, exit, disconnect). */\n wireHolderCallbacks(client, terminal) {\n client.onActivity((active) => {\n terminal.isActive = active;\n const msg = JSON.stringify({ active, type: \"activity\" });\n for (const ws of terminal.clients) {\n this.safeSend(ws, msg);\n }\n });\n client.onCwd((path2) => {\n terminal.currentCwd = path2;\n const msg = JSON.stringify({ path: path2, type: \"cwd\" });\n for (const ws of terminal.clients) {\n this.safeSend(ws, msg);\n }\n });\n client.onOutput((data) => {\n this.appendScrollback(terminal, data);\n this.broadcastOutput(terminal, data);\n });\n client.onExit((exitCode) => {\n terminal.status = \"exited\";\n terminal.exitCode = exitCode;\n terminal.exitedAt = /* @__PURE__ */ new Date();\n terminalStore.markExited(terminal.id, exitCode);\n this.emitTerminalExited(terminal.id, exitCode);\n const exitMsg = JSON.stringify({\n code: exitCode,\n signal: null,\n type: \"exit\"\n });\n for (const ws of terminal.clients) {\n this.safeSend(ws, exitMsg);\n }\n });\n client.onDisconnect(() => {\n if (terminal.status === \"running\") {\n console.warn(`[pty-manager] Holder disconnected unexpectedly for terminal ${terminal.id}`);\n terminal.status = \"exited\";\n terminal.exitedAt = /* @__PURE__ */ new Date();\n terminalStore.markOrphaned(terminal.id);\n this.emitTerminalExited(terminal.id, null);\n }\n });\n }\n}\nfunction resolveHolderPath() {\n if (process.env.SHOOTER_HOLDER_PATH) {\n return process.env.SHOOTER_HOLDER_PATH;\n }\n const colocated = path__default.join(__dirname$1, \"pty-holder.cjs\");\n if (existsSync(colocated)) {\n return colocated;\n }\n return path__default.resolve(__dirname$1, \"..\", \"..\", \"pty-holder.cjs\");\n}\nconst PTY_GLOBAL_KEY = \"__shooter_pty_manager\";\nconst ptyManager = globalThis[PTY_GLOBAL_KEY] || new PtyManager();\nglobalThis[PTY_GLOBAL_KEY] = ptyManager;\nexport {\n ptyManager as p\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry-Kcw2UCMv.js","sources":["../../../.svelte-kit/adapter-node/chunks/registry.js"],"sourcesContent":["import { r as resolveOpenCodeDbPath, l as listCodexProjects, g as getCodexConversation, h as listGeminiProjects, i as getGeminiConversation, j as listQwenProjects, k as getQwenConversation, m as listCursorProjects, n as getCursorConversation, o as listCopilotProjects, p as getCopilotConversation, q as listAmpProjects, s as getAmpConversation } from \"./qwen-reader.js\";\nimport * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport Database from \"better-sqlite3\";\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (Array.isArray(content)) {\n return content.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const text = c.text;\n return typeof text === \"string\" ? text : \"\";\n }).join(\"\\n\");\n }\n return \"\";\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction toContentBlocks(raw) {\n if (Array.isArray(raw)) {\n return raw.filter((item) => isRecord(item));\n }\n if (isRecord(raw)) {\n return [raw];\n }\n return [];\n}\nconst SKIP_EVENT_TYPES = /* @__PURE__ */ new Set([\n \"config\",\n \"heartbeat\",\n \"metadata\",\n \"result\",\n \"summary\",\n \"system\"\n]);\nfunction parseAssistantBlock(block) {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n switch (block.type) {\n case \"text\":\n return { content: block.text || \"\", type: \"text\" };\n case \"thinking\":\n return { content: block.thinking || \"\", type: \"thinking\" };\n case \"tool_use\":\n return {\n id: block.id || \"\",\n input: block.input || {},\n toolName: block.name || \"Unknown\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction parseJsonlLine(line, assistantTurns, messageIndex) {\n const messages = [];\n const assistantCompleted = [];\n const entry = JSON.parse(line);\n if (!isRecord(entry)) {\n return { assistantCompleted, messages };\n }\n const entryType = str(entry, \"type\");\n if (SKIP_EVENT_TYPES.has(entryType)) {\n return { assistantCompleted, messages };\n }\n const entryTimestamp = str(entry, \"timestamp\");\n const entryUuid = str(entry, \"uuid\");\n if (entryType === \"user\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const parts = [];\n const blocks = toContentBlocks(msg.content);\n if (Array.isArray(msg.content)) {\n for (const item of msg.content) {\n if (typeof item === \"string\") {\n parts.push({ content: item, type: \"text\" });\n }\n }\n } else if (typeof msg.content === \"string\") {\n parts.push({ content: msg.content, type: \"text\" });\n }\n for (const block of blocks) {\n const blockType = str(block, \"type\");\n if (!blockType) {\n continue;\n }\n if (blockType === \"text\") {\n parts.push({ content: str(block, \"text\"), type: \"text\" });\n } else if (blockType === \"tool_result\") {\n let output = extractToolResultText(block.content);\n const toolUseResult = isRecord(entry.toolUseResult) ? entry.toolUseResult : null;\n if (toolUseResult?.content !== void 0) {\n output = extractToolResultText(toolUseResult.content);\n }\n parts.push({\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: str(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n if (parts.length > 0 && parts.some((p) => p.type === \"text\")) {\n messages.push({\n id: entryUuid || `user-${messageIndex}`,\n parts: parts.filter((p) => p.type === \"text\"),\n role: \"user\",\n timestamp: entryTimestamp\n });\n }\n const toolResults = parts.filter((p) => p.type === \"tool_result\");\n if (toolResults.length > 0) {\n messages.push({\n id: `tool-result-${entryUuid || messageIndex}`,\n parts: toolResults,\n role: \"system\",\n timestamp: entryTimestamp\n });\n }\n } else if (entryType === \"assistant\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const blocks = toContentBlocks(msg.content);\n const msgId = str(msg, \"id\") || entryUuid;\n for (const block of blocks) {\n const part = parseAssistantBlock(block);\n if (!part) {\n continue;\n }\n if (!assistantTurns.has(msgId)) {\n assistantTurns.set(msgId, { parts: [], timestamp: entryTimestamp });\n }\n const turn = assistantTurns.get(msgId);\n if (turn) {\n turn.parts.push(part);\n }\n }\n if (msg.stop_reason) {\n const turn = assistantTurns.get(msgId);\n if (turn && turn.parts.length > 0) {\n assistantCompleted.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n assistantTurns.delete(msgId);\n }\n }\n }\n return { assistantCompleted, messages };\n}\nfunction parseJsonlText(text, assistantTurns, startIndex) {\n const lines = text.split(\"\\n\").filter((line) => line.trim());\n const allMessages = [];\n let idx = startIndex;\n for (const line of lines) {\n try {\n const { assistantCompleted, messages } = parseJsonlLine(line, assistantTurns, idx);\n allMessages.push(...messages, ...assistantCompleted);\n idx++;\n } catch {\n }\n }\n return allMessages;\n}\nconst SYSTEM_TAG_PREFIXES = [\n \"<local-command\",\n \"<command-name>\",\n \"<command-message>\",\n \"<command-args>\",\n \"<local-command-stdout>\",\n \"<local-command-caveat>\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction extractContentText(content) {\n if (typeof content === \"string\") {\n return content.trim();\n }\n if (Array.isArray(content)) {\n for (const b of content) {\n if (typeof b === \"string\" && b.trim()) {\n return b.trim();\n }\n if (typeof b === \"object\" && b !== null) {\n const block = b;\n if (block.type === \"text\" && typeof block.text === \"string\" && block.text.trim()) {\n return block.text.trim();\n }\n }\n }\n }\n return \"\";\n}\nfunction findFirstUserPrompt(content) {\n for (const line of content.split(\"\\n\")) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (entry.type !== \"user\") {\n continue;\n }\n const msg = entry.message;\n if (!msg?.content) {\n continue;\n }\n const text = extractContentText(msg.content);\n if (!text || SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n continue;\n }\n return text;\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CLAUDE_PROJECTS_DIR = path.join(process.env.HOME || \"\", \".claude\", \"projects\");\nfunction getSessionConversation(sessionId, offset = 0, limit = 100, projectId) {\n const projectDir = projectId ? path.join(CLAUDE_PROJECTS_DIR, projectId) : getProjectDir();\n const jsonlPath = path.join(projectDir, `${sessionId}.jsonl`);\n if (!fs.existsSync(jsonlPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(jsonlPath, \"utf-8\");\n const assistantTurns = /* @__PURE__ */ new Map();\n const messages = parseJsonlText(raw, assistantTurns, 0);\n for (const [msgId, turn] of assistantTurns) {\n if (turn.parts.length > 0) {\n messages.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n }\n }\n const seenIds = /* @__PURE__ */ new Set();\n const deduped = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n if (!seenIds.has(messages[i].id)) {\n seenIds.add(messages[i].id);\n deduped.push(messages[i]);\n }\n }\n deduped.reverse();\n if (offset === 0 && deduped.length > limit) {\n let startIdx = deduped.length - limit;\n while (startIdx > 0 && startIdx < deduped.length && deduped[startIdx].role !== \"user\") {\n startIdx--;\n }\n return deduped.slice(startIdx);\n }\n return deduped.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[sessions] Failed to parse session JSONL:\", error);\n return [];\n }\n}\nfunction listProjectsWithSessions() {\n if (!fs.existsSync(CLAUDE_PROJECTS_DIR)) {\n return [];\n }\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CLAUDE_PROJECTS_DIR).filter((d) => {\n const fullPath = path.join(CLAUDE_PROJECTS_DIR, d);\n try {\n return fs.statSync(fullPath).isDirectory();\n } catch {\n return false;\n }\n });\n } catch {\n return [];\n }\n const projects = [];\n for (const dir of projectDirs) {\n const projectDir = path.join(CLAUDE_PROJECTS_DIR, dir);\n const sessions = listSessionsForProject(projectDir);\n if (sessions.length === 0) {\n continue;\n }\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const realPath = sessions.find((s) => s.projectPath && !s.projectPath.includes(\".claude/projects\"))?.projectPath || readCwdFromProjectDir(projectDir, sessions) || decodeClaudeProjectDir(dir) || (dir.startsWith(\"-\") ? dir.replace(/-/g, \"/\") : `/${dir.replace(/-/g, \"/\")}`);\n const pathSegments = realPath.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n projects.push({\n fullPath: realPath,\n id: shortHash$1(realPath),\n lastModified: sessions[0]?.modified || \"\",\n name: projectName,\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 bytesReadEnded(chunk) {\n return chunk.length > 0 && chunk.charCodeAt(chunk.length - 1) === 10;\n}\nfunction cleanTitle(prompt) {\n let cleaned = prompt.replace(/<command-message>.*?<\\/command-message>/gs, \"\").replace(/<command-name>.*?<\\/command-name>/gs, \"\").replace(/<command-args>.*?<\\/command-args>/gs, \"\").replace(/<local-command-caveat>.*?<\\/local-command-caveat>/gs, \"\").replace(/<local-command-stdout>.*?<\\/local-command-stdout>/gs, \"\").replace(/<system-reminder>.*?<\\/system-reminder>/gs, \"\").replace(/<task-notification>.*?<\\/task-notification>/gs, \"\");\n let prev = \"\";\n while (prev !== cleaned) {\n prev = cleaned;\n cleaned = cleaned.replace(/<[^>]*>/g, \"\").replace(/</g, \"\");\n }\n cleaned = cleaned.trim();\n if (!cleaned) {\n return \"Untitled Session\";\n }\n const firstLine = cleaned.split(\"\\n\")[0].trim();\n if (!firstLine) {\n return \"Untitled Session\";\n }\n if (firstLine.length > 80) {\n return `${firstLine.slice(0, 77)}...`;\n }\n return firstLine;\n}\nfunction decodeClaudeProjectDir(encoded) {\n if (!encoded.startsWith(\"-\")) {\n return null;\n }\n const parts = encoded.slice(1).split(\"-\");\n if (parts.length === 0) {\n return null;\n }\n let currentPath = \"/\";\n let i = 0;\n while (i < parts.length) {\n let matchedTo = -1;\n for (let j = parts.length; j > i; j--) {\n const segment = parts.slice(i, j).join(\"-\");\n const candidate = path.join(currentPath, segment);\n try {\n if (fs.statSync(candidate).isDirectory()) {\n matchedTo = j;\n break;\n }\n } catch {\n }\n }\n if (matchedTo === -1) {\n return null;\n }\n currentPath = path.join(currentPath, parts.slice(i, matchedTo).join(\"-\"));\n i = matchedTo;\n }\n return currentPath;\n}\nfunction getProjectDir() {\n const projectPath = process.cwd();\n const encoded = projectPath.replace(/\\//g, \"-\");\n return path.join(CLAUDE_PROJECTS_DIR, encoded);\n}\nfunction listSessionsForProject(projectDir) {\n const indexPath = path.join(projectDir, \"sessions-index.json\");\n const hasIndex = fs.existsSync(indexPath);\n const indexedIds = /* @__PURE__ */ new Set();\n const sessions = [];\n if (hasIndex) {\n try {\n const raw = fs.readFileSync(indexPath, \"utf-8\");\n const index = JSON.parse(raw);\n for (const entry of index.entries) {\n if (entry.isSidechain) {\n continue;\n }\n const jsonlFile = path.join(projectDir, `${entry.sessionId}.jsonl`);\n if (!fs.existsSync(jsonlFile)) {\n continue;\n }\n indexedIds.add(entry.sessionId);\n sessions.push({\n created: entry.created || \"\",\n gitBranch: entry.gitBranch || \"\",\n id: entry.sessionId,\n messageCount: entry.messageCount || 0,\n modified: entry.modified || \"\",\n projectPath: entry.projectPath || \"\",\n source: \"claude-code\",\n summary: entry.summary || \"\",\n title: cleanTitle(entry.firstPrompt || entry.summary || \"Untitled Session\")\n });\n }\n } catch (error) {\n console.error(\"[sessions] Failed to read sessions index:\", error);\n }\n }\n try {\n const files = fs.readdirSync(projectDir);\n for (const file of files) {\n if (!file.endsWith(\".jsonl\")) {\n continue;\n }\n const sessionId = file.replace(\".jsonl\", \"\");\n if (indexedIds.has(sessionId)) {\n continue;\n }\n const filePath = path.join(projectDir, file);\n const stat = fs.statSync(filePath);\n let firstPrompt = \"Active Session\";\n let messageCount = 0;\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n let countPos = 0;\n while (countPos < content.length) {\n const nl = content.indexOf(\"\\n\", countPos);\n const lineEnd = nl === -1 ? content.length : nl;\n const line = content.substring(countPos, lineEnd);\n if (line.includes('\"type\":\"user\"') || line.includes('\"type\":\"assistant\"')) {\n messageCount++;\n }\n if (nl === -1) {\n break;\n }\n countPos = nl + 1;\n }\n const prompt = findFirstUserPrompt(content);\n if (prompt) {\n firstPrompt = prompt;\n }\n } catch {\n }\n sessions.push({\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount,\n modified: stat.mtime.toISOString(),\n projectPath: \"\",\n source: \"claude-code\",\n summary: \"\",\n title: cleanTitle(firstPrompt)\n });\n }\n } catch {\n }\n return sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n}\nfunction readCwdFromProjectDir(projectDir, sessions) {\n const READ_BYTES = 65536;\n for (const session of sessions) {\n try {\n const filePath = path.join(projectDir, `${session.id}.jsonl`);\n if (!fs.existsSync(filePath)) {\n continue;\n }\n const fd = fs.openSync(filePath, \"r\");\n let chunk;\n try {\n const buf = Buffer.alloc(READ_BYTES);\n const bytesRead = fs.readSync(fd, buf, 0, READ_BYTES, 0);\n chunk = buf.toString(\"utf-8\", 0, bytesRead);\n } finally {\n fs.closeSync(fd);\n }\n const lines = chunk.split(\"\\n\");\n const completeLines = bytesReadEnded(chunk) ? lines : lines.slice(0, -1);\n for (const line of completeLines) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (typeof entry.cwd === \"string\" && entry.cwd) {\n return entry.cwd;\n }\n } catch {\n }\n }\n } catch {\n }\n }\n return \"\";\n}\nfunction getOpenCodeConversation(sessionId, offset = 0, limit = 200) {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const messages = db.prepare(\n `\n SELECT id, session_id, time_created, data FROM (\n SELECT id, session_id, time_created, data\n FROM message\n WHERE session_id = ?\n ORDER BY time_created DESC\n LIMIT ? OFFSET ?\n ) ORDER BY time_created ASC\n `\n ).all(sessionId, limit, offset);\n const messageIds = messages.map((m) => m.id);\n if (messageIds.length === 0) {\n return [];\n }\n const placeholders = messageIds.map(() => \"?\").join(\",\");\n const parts = db.prepare(\n `\n SELECT id, message_id, time_created, data\n FROM part\n WHERE message_id IN (${placeholders})\n ORDER BY time_created ASC\n `\n ).all(...messageIds);\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of parts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const result = [];\n for (const msg of messages) {\n let msgData = {};\n try {\n msgData = JSON.parse(msg.data);\n } catch {\n }\n const role = msgData.role === \"user\" ? \"user\" : \"assistant\";\n const msgParts = partsByMessage.get(msg.id) || [];\n const convertedParts = [];\n for (const part of msgParts) {\n let partData = {};\n try {\n partData = JSON.parse(part.data);\n } catch {\n continue;\n }\n const converted = convertOpenCodePart(partData);\n if (converted) {\n convertedParts.push(converted);\n }\n }\n if (convertedParts.length > 0) {\n result.push({\n id: msg.id,\n parts: convertedParts,\n role,\n timestamp: new Date(msg.time_created).toISOString()\n });\n }\n }\n return result;\n } catch (error) {\n console.error(\"[opencode] Failed to read conversation:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction listOpenCodeProjects() {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const sessions = db.prepare(\n `\n SELECT id, directory, title, slug, time_created, time_updated, parent_id\n FROM session\n WHERE time_archived IS NULL OR time_archived = 0\n ORDER BY time_updated DESC\n `\n ).all();\n const msgCounts = db.prepare(`SELECT session_id, COUNT(*) as count FROM message GROUP BY session_id`).all();\n const msgCountMap = new Map(msgCounts.map((r) => [r.session_id, r.count]));\n const projectMap = /* @__PURE__ */ new Map();\n for (const row of sessions) {\n const dir = row.directory || \"unknown\";\n if (!projectMap.has(dir)) {\n projectMap.set(dir, []);\n }\n const sessionInfo = {\n created: new Date(row.time_created).toISOString(),\n gitBranch: \"\",\n id: row.id,\n messageCount: msgCountMap.get(row.id) || 0,\n modified: new Date(row.time_updated).toISOString(),\n projectPath: dir,\n source: \"opencode\",\n summary: \"\",\n title: row.title || row.slug || \"Untitled Session\"\n };\n const bucket = projectMap.get(dir);\n if (bucket) {\n bucket.push(sessionInfo);\n }\n }\n const projects = [];\n for (const [dir, dirSessions] of projectMap) {\n const pathSegments = dir.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n dirSessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n projects.push({\n fullPath: dir,\n id: shortHash(dir),\n lastModified: dirSessions[0]?.modified || \"\",\n name: `${projectName} (OpenCode)`,\n sessionCount: dirSessions.length,\n sessions: dirSessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n } catch (error) {\n console.error(\"[opencode] Failed to read sessions:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction convertOpenCodePart(data) {\n const type = data.type;\n switch (type) {\n case \"reasoning\":\n return {\n content: data.text || \"\",\n type: \"thinking\"\n };\n case \"text\":\n return {\n content: data.text || \"\",\n type: \"text\"\n };\n case \"tool\": {\n const state = data.state;\n return {\n id: data.callID || data.id || \"\",\n input: state?.input || {},\n toolName: data.tool || \"Unknown\",\n type: \"tool_use\"\n };\n }\n default:\n return null;\n }\n}\nfunction getDb() {\n const dbPath = resolveOpenCodeDbPath();\n if (!fs.existsSync(dbPath)) {\n return null;\n }\n try {\n return new Database(dbPath, { readonly: true });\n } catch {\n return null;\n }\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst PROVIDERS = [\n {\n command: \"claude\",\n getConversation: (id, offset, limit) => getSessionConversation(id, offset, limit),\n isAI: true,\n label: \"Claude Code\",\n listProjects: listProjectsWithSessions,\n resumeArgs: (id) => [\"--resume\", id],\n source: \"claude-code\"\n },\n {\n command: \"opencode\",\n getConversation: getOpenCodeConversation,\n isAI: true,\n label: \"OpenCode\",\n listProjects: listOpenCodeProjects,\n nameSuffix: \" (OpenCode)\",\n resumeArgs: (id) => [\"--session\", id],\n source: \"opencode\"\n },\n {\n command: \"codex\",\n getConversation: getCodexConversation,\n isAI: true,\n label: \"Codex\",\n listProjects: listCodexProjects,\n resumeArgs: (id) => [\"resume\", id],\n source: \"codex\"\n },\n {\n command: \"gemini\",\n getConversation: getGeminiConversation,\n isAI: true,\n label: \"Gemini\",\n listProjects: listGeminiProjects,\n resumeArgs: () => [],\n // Gemini CLI has no session-resume flag\n source: \"gemini\"\n },\n {\n command: \"qwen\",\n getConversation: getQwenConversation,\n isAI: true,\n label: \"Qwen\",\n listProjects: listQwenProjects,\n resumeArgs: () => [],\n source: \"qwen\"\n },\n {\n command: \"cursor-agent\",\n getConversation: getCursorConversation,\n isAI: true,\n label: \"Cursor\",\n listProjects: listCursorProjects,\n resumeArgs: () => [],\n source: \"cursor\"\n },\n {\n command: \"copilot\",\n getConversation: getCopilotConversation,\n isAI: true,\n label: \"Copilot\",\n listProjects: listCopilotProjects,\n resumeArgs: () => [],\n source: \"copilot\"\n },\n {\n command: \"amp\",\n getConversation: getAmpConversation,\n isAI: true,\n label: \"Amp\",\n listProjects: listAmpProjects,\n resumeArgs: () => [],\n source: \"amp\"\n }\n];\nPROVIDERS.filter((p) => p.isAI).map((p) => p.command);\nconst PROVIDER_COMMANDS = PROVIDERS.map((p) => p.command);\nfunction getProviderConversation(sessionId, offset, limit, claudeProjectDir) {\n const claude = getSessionConversation(sessionId, offset, limit, claudeProjectDir);\n if (claude.length > 0) {\n return claude;\n }\n for (const provider of PROVIDERS) {\n if (provider.source === \"claude-code\") {\n continue;\n }\n try {\n const messages = provider.getConversation(sessionId, offset, limit);\n if (messages.length > 0) {\n return messages;\n }\n } catch {\n }\n }\n return [];\n}\nfunction listAllProviderProjects() {\n const byPath = /* @__PURE__ */ new Map();\n for (const provider of PROVIDERS) {\n let groups;\n try {\n groups = provider.listProjects();\n } catch {\n continue;\n }\n for (const group of groups) {\n try {\n const name = provider.nameSuffix && typeof group.name === \"string\" ? group.name.replace(provider.nameSuffix, \"\") : group.name;\n const existing = byPath.get(group.fullPath);\n if (existing) {\n existing.sessions.push(...group.sessions);\n existing.sessions.sort(\n (a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime()\n );\n existing.sessionCount = existing.sessions.length;\n existing.lastModified = existing.sessions[0]?.modified || existing.lastModified;\n } else {\n byPath.set(group.fullPath, { ...group, name });\n }\n } catch {\n }\n }\n }\n return [...byPath.values()].sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resumeArgsForCommand(command, sessionId) {\n return PROVIDERS.find((p) => p.command === command)?.resumeArgs(sessionId) ?? [];\n}\nexport {\n PROVIDER_COMMANDS as P,\n getProviderConversation as g,\n listAllProviderProjects as l,\n resumeArgsForCommand as r\n};\n"],"names":[],"mappings":"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"}
|