@juspay/shooter 1.1.0 → 1.2.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.DC5pAwP3.css → 0.BhZOCxO4.css} +1 -1
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.gz +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css +1 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.br +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.gz +0 -0
- package/build/client/_app/immutable/assets/{3.BoXp0JoS.css → 3.DGDHCVnW.css} +1 -1
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.br +0 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css +1 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.br +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css +1 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.br +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.gz +0 -0
- package/build/client/_app/immutable/assets/{7.PyEFVv_s.css → 7.DwS5ZHBh.css} +1 -1
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.br +0 -0
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css +1 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js +1 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js.br +0 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js +20 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.br +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js +1 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{50RPd5u3.js → B8zoBsv3.js} +1 -1
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js +1 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.br +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js +1 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CdL99jkG.js → BYqGCrTe.js} +1 -1
- package/build/client/_app/immutable/chunks/BYqGCrTe.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYqGCrTe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js +1 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js +1 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{ClK4wZbC.js → CQjSATpv.js} +16 -16
- package/build/client/_app/immutable/chunks/CQjSATpv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CojFyTPp.js → CSoRdFvv.js} +1 -1
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{tjbnEgXP.js → CZHsSL_X.js} +1 -1
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js +1 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js +41 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.br +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js +1 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.br +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js +2 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.br +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js +2 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js +1 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js +1 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js +1 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js +1 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js +3 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js +1 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js +4 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js +2 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js +2 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.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/client/manifest.json +13 -0
- package/build/client/manifest.json.br +0 -0
- package/build/client/manifest.json.gz +0 -0
- package/build/server/chunks/0-Vk38tI2J.js +9 -0
- package/build/server/chunks/0-Vk38tI2J.js.map +1 -0
- package/build/server/chunks/1-BvYQX5MR.js +9 -0
- package/build/server/chunks/1-BvYQX5MR.js.map +1 -0
- package/build/server/chunks/2-Cl7R4Qk2.js +9 -0
- package/build/server/chunks/2-Cl7R4Qk2.js.map +1 -0
- package/build/server/chunks/3-Ck7ewhOX.js +9 -0
- package/build/server/chunks/3-Ck7ewhOX.js.map +1 -0
- package/build/server/chunks/4-CnDeRm2Z.js +9 -0
- package/build/server/chunks/4-CnDeRm2Z.js.map +1 -0
- package/build/server/chunks/5-IxitzEvN.js +9 -0
- package/build/server/chunks/{5-D0wB7nfE.js.map → 5-IxitzEvN.js.map} +1 -1
- package/build/server/chunks/6-CyZ3r1iS.js +9 -0
- package/build/server/chunks/6-CyZ3r1iS.js.map +1 -0
- package/build/server/chunks/7-BmI7du46.js +9 -0
- package/build/server/chunks/7-BmI7du46.js.map +1 -0
- package/build/server/chunks/{Button-C7D5W6wV.js → Button-Cs1aE6ka.js} +2 -2
- package/build/server/chunks/{Button-C7D5W6wV.js.map → Button-Cs1aE6ka.js.map} +1 -1
- package/build/server/chunks/{EmptyState-Ci4pSpmY.js → EmptyState-DDFH1K8g.js} +10 -4
- package/build/server/chunks/EmptyState-DDFH1K8g.js.map +1 -0
- package/build/server/chunks/{Icon-DyrkHVnV.js → Icon-CEUrotA6.js} +3 -3
- package/build/server/chunks/{Icon-DyrkHVnV.js.map → Icon-CEUrotA6.js.map} +1 -1
- package/build/server/chunks/{Shimmer-BITK6wrm.js → Shimmer-DB8W1zt6.js} +2 -2
- package/build/server/chunks/{Shimmer-BITK6wrm.js.map → Shimmer-DB8W1zt6.js.map} +1 -1
- package/build/server/chunks/_error.svelte-uCOJNxvr.js +39 -0
- package/build/server/chunks/_error.svelte-uCOJNxvr.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-CO4f8UD7.js → _layout.svelte-CtWmEJwe.js} +5 -25
- package/build/server/chunks/_layout.svelte-CtWmEJwe.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C6bns9aQ.js → _page.svelte-BcZaKdX9.js} +13 -9
- package/build/server/chunks/_page.svelte-BcZaKdX9.js.map +1 -0
- package/build/server/chunks/{_page.svelte-3Cc3NMAP.js → _page.svelte-BdYynOck.js} +18 -14
- package/build/server/chunks/_page.svelte-BdYynOck.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CFCONiDK.js → _page.svelte-BgevQjq1.js} +16 -12
- package/build/server/chunks/_page.svelte-BgevQjq1.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DskND_G9.js → _page.svelte-CVq6tRb3.js} +8 -8
- package/build/server/chunks/_page.svelte-CVq6tRb3.js.map +1 -0
- package/build/server/chunks/{_page.svelte-rTrWmhOp.js → _page.svelte-CxWcQ0Am.js} +8 -8
- package/build/server/chunks/_page.svelte-CxWcQ0Am.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C0p3HsIW.js → _page.svelte-DO4oa_LY.js} +11 -13
- package/build/server/chunks/_page.svelte-DO4oa_LY.js.map +1 -0
- package/build/server/chunks/{_server.ts-CS5H5klP.js → _server.ts-CAxsWKvS.js} +14 -10
- package/build/server/chunks/_server.ts-CAxsWKvS.js.map +1 -0
- package/build/server/chunks/{_server.ts-C8slOHB0.js → _server.ts-CTpcLUH8.js} +3 -2
- package/build/server/chunks/_server.ts-CTpcLUH8.js.map +1 -0
- package/build/server/chunks/_server.ts-CtH0dhUp.js +71 -0
- package/build/server/chunks/_server.ts-CtH0dhUp.js.map +1 -0
- package/build/server/chunks/{_server.ts-DhTrdlWH.js → _server.ts-DB_Kg97c.js} +14 -3
- package/build/server/chunks/_server.ts-DB_Kg97c.js.map +1 -0
- package/build/server/chunks/_server.ts-DYpJImqd.js +99 -0
- package/build/server/chunks/_server.ts-DYpJImqd.js.map +1 -0
- package/build/server/chunks/{_server.ts-DpEVfp8W.js → _server.ts-Deok2y88.js} +58 -40
- package/build/server/chunks/_server.ts-Deok2y88.js.map +1 -0
- package/build/server/chunks/{_server.ts-uHUi-4cd.js → _server.ts-vekTmWAx.js} +3 -2
- package/build/server/chunks/_server.ts-vekTmWAx.js.map +1 -0
- package/build/server/chunks/{client2-BjxIYuno.js → client-BdGHe_hY.js} +4 -4
- package/build/server/chunks/client-BdGHe_hY.js.map +1 -0
- package/build/server/chunks/client2-CCBGA-2V.js +7 -0
- package/build/server/chunks/client2-CCBGA-2V.js.map +1 -0
- package/build/server/chunks/{index-Cnl871UW.js → index-DwaY1cAm.js} +2 -2
- package/build/server/chunks/{index-Cnl871UW.js.map → index-DwaY1cAm.js.map} +1 -1
- package/build/server/chunks/{index-server-CUC9Jt7r.js → index-server-CrDaL06Y.js} +2 -2
- package/build/server/chunks/{index-server-CUC9Jt7r.js.map → index-server-CrDaL06Y.js.map} +1 -1
- package/build/server/chunks/{index2-HA3VTH7y.js → index2-CgclKpUj.js} +2 -2
- package/build/server/chunks/{index2-HA3VTH7y.js.map → index2-CgclKpUj.js.map} +1 -1
- package/build/server/chunks/opencode-db-path-DcfhJtJy.js +15 -0
- package/build/server/chunks/opencode-db-path-DcfhJtJy.js.map +1 -0
- package/build/server/chunks/{pty-manager-DR0Wt2Ac.js → pty-manager-BQVB7IVj.js} +17 -15
- package/build/server/chunks/pty-manager-BQVB7IVj.js.map +1 -0
- package/build/server/chunks/{root-DhswcH6o.js → root-DDSnEAZv.js} +2 -2
- package/build/server/chunks/{root-DhswcH6o.js.map → root-DDSnEAZv.js.map} +1 -1
- package/build/server/chunks/{state.svelte-2Lellg7t.js → state.svelte-hBbXlUak.js} +3 -3
- package/build/server/chunks/{state.svelte-2Lellg7t.js.map → state.svelte-hBbXlUak.js.map} +1 -1
- package/build/server/chunks/stores-DHNzYNpX.js +28 -0
- package/build/server/chunks/stores-DHNzYNpX.js.map +1 -0
- package/build/server/index.js +5 -5
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +30 -16
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/scripts/setup.cjs +87 -13
- package/server.ts +3 -0
- package/src/app.html +3 -0
- package/src/lib/modules/client/common/cache.ts +10 -2
- package/src/lib/modules/client/common/index.ts +1 -1
- package/src/lib/modules/client/common/markdown.ts +22 -1
- package/src/lib/modules/client/common/time.ts +13 -11
- package/src/lib/modules/client/terminal/ChatView.svelte +324 -67
- package/src/lib/modules/client/terminal/ConnectionStatus.svelte +1 -0
- package/src/lib/modules/client/terminal/xterm-wrapper.ts +4 -1
- package/src/lib/modules/server/sessions/jsonl-reader.ts +43 -28
- package/src/lib/modules/server/sessions/opencode-db-path.ts +26 -0
- package/src/lib/modules/server/sessions/opencode-reader.ts +13 -15
- package/src/lib/modules/server/sessions/process-detector.ts +103 -0
- package/src/lib/modules/server/terminal/opencode-watcher.ts +3 -14
- package/src/lib/modules/server/terminal/pty-manager.ts +20 -8
- package/src/lib/modules/server/ws/session-handler.ts +282 -104
- package/src/lib/theme.css +30 -0
- package/src/routes/+error.svelte +94 -0
- package/src/routes/+page.svelte +18 -8
- package/src/routes/api/health/+server.ts +14 -2
- package/src/routes/api/sessions/+server.ts +12 -4
- package/src/routes/api/sessions/connect/+server.ts +125 -0
- package/src/routes/api/sessions/detect/+server.ts +27 -0
- package/src/routes/api/terminals/+server.ts +12 -9
- package/src/routes/config/+page.svelte +22 -1
- package/src/routes/project/+page.svelte +159 -8
- package/src/routes/session/[id]/+page.svelte +477 -299
- package/src/routes/terminals/+page.svelte +14 -3
- package/src/routes/terminals/[id]/+page.svelte +25 -0
- package/build/client/_app/immutable/assets/0.DC5pAwP3.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DC5pAwP3.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.BoXp0JoS.css.br +0 -0
- package/build/client/_app/immutable/assets/3.BoXp0JoS.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css +0 -1
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.br +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css +0 -1
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.br +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.PyEFVv_s.css.br +0 -0
- package/build/client/_app/immutable/assets/7.PyEFVv_s.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css +0 -1
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.gz +0 -0
- package/build/client/_app/immutable/chunks/50RPd5u3.js.br +0 -0
- package/build/client/_app/immutable/chunks/50RPd5u3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDC7XD4o.js +0 -1
- package/build/client/_app/immutable/chunks/BDC7XD4o.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDC7XD4o.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BeONA6_G.js +0 -2
- package/build/client/_app/immutable/chunks/BeONA6_G.js.br +0 -0
- package/build/client/_app/immutable/chunks/BeONA6_G.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BygiiMA0.js +0 -1
- package/build/client/_app/immutable/chunks/BygiiMA0.js.br +0 -0
- package/build/client/_app/immutable/chunks/BygiiMA0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js +0 -1
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CHvUpVYv.js +0 -1
- package/build/client/_app/immutable/chunks/CHvUpVYv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CHvUpVYv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CbqC9BW7.js +0 -1
- package/build/client/_app/immutable/chunks/CbqC9BW7.js.br +0 -2
- package/build/client/_app/immutable/chunks/CbqC9BW7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CdL99jkG.js.br +0 -0
- package/build/client/_app/immutable/chunks/CdL99jkG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ClK4wZbC.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClK4wZbC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CojFyTPp.js.br +0 -0
- package/build/client/_app/immutable/chunks/CojFyTPp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DREFAyhX.js +0 -60
- package/build/client/_app/immutable/chunks/DREFAyhX.js.br +0 -0
- package/build/client/_app/immutable/chunks/DREFAyhX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/K_aHH2KN.js +0 -1
- package/build/client/_app/immutable/chunks/K_aHH2KN.js.br +0 -0
- package/build/client/_app/immutable/chunks/K_aHH2KN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ona8oofC.js +0 -1
- package/build/client/_app/immutable/chunks/Ona8oofC.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ona8oofC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/tjbnEgXP.js.br +0 -0
- package/build/client/_app/immutable/chunks/tjbnEgXP.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js +0 -2
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js.br +0 -0
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js +0 -1
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js +0 -1
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js +0 -1
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js +0 -1
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js +0 -3
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js +0 -1
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.shitbtHc.js +0 -1
- package/build/client/_app/immutable/nodes/5.shitbtHc.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.shitbtHc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js +0 -2
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js +0 -2
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.gz +0 -0
- package/build/server/chunks/0-Cs1dzfRz.js +0 -9
- package/build/server/chunks/0-Cs1dzfRz.js.map +0 -1
- package/build/server/chunks/1-BCSX7oED.js +0 -9
- package/build/server/chunks/1-BCSX7oED.js.map +0 -1
- package/build/server/chunks/2-6gkeO8b4.js +0 -9
- package/build/server/chunks/2-6gkeO8b4.js.map +0 -1
- package/build/server/chunks/3-DH9J9Vsc.js +0 -9
- package/build/server/chunks/3-DH9J9Vsc.js.map +0 -1
- package/build/server/chunks/4-Rzy5TYjl.js +0 -9
- package/build/server/chunks/4-Rzy5TYjl.js.map +0 -1
- package/build/server/chunks/5-D0wB7nfE.js +0 -9
- package/build/server/chunks/6-DR2ABDPq.js +0 -9
- package/build/server/chunks/6-DR2ABDPq.js.map +0 -1
- package/build/server/chunks/7-D-oQJsia.js +0 -9
- package/build/server/chunks/7-D-oQJsia.js.map +0 -1
- package/build/server/chunks/EmptyState-Ci4pSpmY.js.map +0 -1
- package/build/server/chunks/_layout.svelte-CO4f8UD7.js.map +0 -1
- package/build/server/chunks/_page.svelte-3Cc3NMAP.js.map +0 -1
- package/build/server/chunks/_page.svelte-C0p3HsIW.js.map +0 -1
- package/build/server/chunks/_page.svelte-C6bns9aQ.js.map +0 -1
- package/build/server/chunks/_page.svelte-CFCONiDK.js.map +0 -1
- package/build/server/chunks/_page.svelte-DskND_G9.js.map +0 -1
- package/build/server/chunks/_page.svelte-rTrWmhOp.js.map +0 -1
- package/build/server/chunks/_server.ts-C8slOHB0.js.map +0 -1
- package/build/server/chunks/_server.ts-CS5H5klP.js.map +0 -1
- package/build/server/chunks/_server.ts-DhTrdlWH.js.map +0 -1
- package/build/server/chunks/_server.ts-DpEVfp8W.js.map +0 -1
- package/build/server/chunks/_server.ts-uHUi-4cd.js.map +0 -1
- package/build/server/chunks/client-BYT9c0ig.js +0 -7
- package/build/server/chunks/client-BYT9c0ig.js.map +0 -1
- package/build/server/chunks/client2-BjxIYuno.js.map +0 -1
- package/build/server/chunks/error.svelte-BG_yE-Wt.js +0 -27
- package/build/server/chunks/error.svelte-BG_yE-Wt.js.map +0 -1
- package/build/server/chunks/pty-manager-DR0Wt2Ac.js.map +0 -1
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { ProjectGroup, ShooterConfig } from '$generated/types';
|
|
3
|
+
import type { DetectedProcess } from '$lib/modules/server/sessions/process-detector';
|
|
3
4
|
|
|
5
|
+
import { goto } from '$app/navigation';
|
|
4
6
|
import { page } from '$app/state';
|
|
5
7
|
import {
|
|
8
|
+
clearCache,
|
|
6
9
|
EmptyState,
|
|
7
10
|
formatRelativeTime,
|
|
8
11
|
getCached,
|
|
@@ -10,7 +13,7 @@
|
|
|
10
13
|
isShooterConfig,
|
|
11
14
|
setCache,
|
|
12
15
|
} from '$lib/modules/client/common';
|
|
13
|
-
import { Button, Pill, Shimmer } from '@juspay/svelte-ui-components';
|
|
16
|
+
import { Banner, Button, Pill, Shimmer } from '@juspay/svelte-ui-components';
|
|
14
17
|
import { onDestroy, onMount } from 'svelte';
|
|
15
18
|
|
|
16
19
|
const POLL_INTERVAL_MS = 15_000;
|
|
@@ -19,14 +22,22 @@
|
|
|
19
22
|
let project = $state<null | ProjectGroup>(null);
|
|
20
23
|
let loading = $state(true);
|
|
21
24
|
let config = $state<null | ShooterConfig>(null);
|
|
25
|
+
let fetchError = $state<null | string>(null);
|
|
22
26
|
let pollTimer: null | ReturnType<typeof setInterval> = null;
|
|
23
27
|
let visibleCount = $state(PAGE_SIZE);
|
|
28
|
+
let detectedProcesses = $state<DetectedProcess[]>([]);
|
|
29
|
+
let connectingSessionId = $state<null | string>(null);
|
|
24
30
|
|
|
25
31
|
const projectId = $derived(page.url.searchParams.get('id') || '');
|
|
26
32
|
|
|
27
33
|
const visibleSessions = $derived(project ? project.sessions.slice(0, visibleCount) : []);
|
|
28
34
|
const hasMore = $derived(project ? visibleCount < project.sessions.length : false);
|
|
29
35
|
|
|
36
|
+
// Build a set of session IDs that have running processes
|
|
37
|
+
const runningSessionIds = $derived(
|
|
38
|
+
new Set(detectedProcesses.filter((p) => p.sessionId).map((p) => p.sessionId))
|
|
39
|
+
);
|
|
40
|
+
|
|
30
41
|
onMount(() => {
|
|
31
42
|
loadConfiguration();
|
|
32
43
|
|
|
@@ -40,11 +51,13 @@
|
|
|
40
51
|
// Delay initial fetch to ensure config and projectId are resolved
|
|
41
52
|
setTimeout(() => {
|
|
42
53
|
void fetchProject();
|
|
54
|
+
void detectRunningProcesses();
|
|
43
55
|
}, 50);
|
|
44
56
|
|
|
45
57
|
pollTimer = setInterval(() => {
|
|
46
58
|
if (config?.apiKey && projectId) {
|
|
47
59
|
void fetchProject();
|
|
60
|
+
void detectRunningProcesses();
|
|
48
61
|
}
|
|
49
62
|
}, POLL_INTERVAL_MS);
|
|
50
63
|
});
|
|
@@ -73,7 +86,7 @@
|
|
|
73
86
|
}
|
|
74
87
|
}
|
|
75
88
|
|
|
76
|
-
async function fetchProject(): Promise<void> {
|
|
89
|
+
async function fetchProject(bustCache = false): Promise<void> {
|
|
77
90
|
if (!config?.apiKey || !projectId) {
|
|
78
91
|
loading = false;
|
|
79
92
|
return;
|
|
@@ -85,17 +98,20 @@
|
|
|
85
98
|
}
|
|
86
99
|
|
|
87
100
|
try {
|
|
88
|
-
const
|
|
101
|
+
const url = bustCache ? '/api/sessions?refresh=true' : '/api/sessions';
|
|
102
|
+
const response = await fetch(url, {
|
|
89
103
|
headers: {
|
|
90
104
|
Authorization: `Bearer ${config.apiKey}`,
|
|
91
105
|
},
|
|
92
106
|
});
|
|
93
107
|
|
|
94
108
|
if (!response.ok) {
|
|
109
|
+
fetchError = `Failed to load project (HTTP ${response.status})`;
|
|
95
110
|
loading = false;
|
|
96
111
|
return;
|
|
97
112
|
}
|
|
98
113
|
|
|
114
|
+
fetchError = null;
|
|
99
115
|
const result: { projects: ProjectGroup[] } = await response.json();
|
|
100
116
|
const foundProject = result.projects.find((p) => p.id === projectId) || null;
|
|
101
117
|
project = foundProject;
|
|
@@ -109,11 +125,71 @@
|
|
|
109
125
|
}
|
|
110
126
|
}
|
|
111
127
|
|
|
128
|
+
async function detectRunningProcesses(): Promise<void> {
|
|
129
|
+
if (!config?.apiKey) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
try {
|
|
134
|
+
const response = await fetch('/api/sessions/detect', {
|
|
135
|
+
headers: { Authorization: `Bearer ${config.apiKey}` },
|
|
136
|
+
});
|
|
137
|
+
if (response.ok) {
|
|
138
|
+
const data: { processes: DetectedProcess[] } = await response.json();
|
|
139
|
+
detectedProcesses = data.processes;
|
|
140
|
+
}
|
|
141
|
+
} catch {
|
|
142
|
+
// Best effort — don't break the page
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async function connectToSession(
|
|
147
|
+
event: MouseEvent,
|
|
148
|
+
sessionId: string,
|
|
149
|
+
command: string
|
|
150
|
+
): Promise<void> {
|
|
151
|
+
// Prevent the click from navigating to the session page
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
event.stopPropagation();
|
|
154
|
+
|
|
155
|
+
if (!config?.apiKey || !project || connectingSessionId) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
connectingSessionId = sessionId;
|
|
160
|
+
|
|
161
|
+
try {
|
|
162
|
+
const response = await fetch('/api/sessions/connect', {
|
|
163
|
+
body: JSON.stringify({
|
|
164
|
+
command,
|
|
165
|
+
cwd: project.fullPath,
|
|
166
|
+
sessionId,
|
|
167
|
+
}),
|
|
168
|
+
headers: {
|
|
169
|
+
Authorization: `Bearer ${config.apiKey}`,
|
|
170
|
+
'Content-Type': 'application/json',
|
|
171
|
+
},
|
|
172
|
+
method: 'POST',
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
if (response.ok) {
|
|
176
|
+
const result: { terminalId: string } = await response.json();
|
|
177
|
+
void goto(`/terminals/${result.terminalId}`);
|
|
178
|
+
}
|
|
179
|
+
} catch (error) {
|
|
180
|
+
console.error('Failed to connect to session:', error);
|
|
181
|
+
} finally {
|
|
182
|
+
connectingSessionId = null;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
112
186
|
async function forceRefresh(): Promise<void> {
|
|
113
187
|
loading = true;
|
|
114
|
-
|
|
188
|
+
project = null;
|
|
115
189
|
visibleCount = PAGE_SIZE;
|
|
116
|
-
|
|
190
|
+
clearCache(`shooter_project_${projectId}`);
|
|
191
|
+
await fetchProject(true);
|
|
192
|
+
await detectRunningProcesses();
|
|
117
193
|
}
|
|
118
194
|
|
|
119
195
|
function loadMore(): void {
|
|
@@ -121,7 +197,10 @@
|
|
|
121
197
|
}
|
|
122
198
|
|
|
123
199
|
function formatDate(ts: string): string {
|
|
124
|
-
|
|
200
|
+
if (!ts) {return '';}
|
|
201
|
+
const d = new Date(ts);
|
|
202
|
+
if (isNaN(d.getTime())) {return '';}
|
|
203
|
+
return d.toLocaleDateString('en-US', {
|
|
125
204
|
day: 'numeric',
|
|
126
205
|
hour: '2-digit',
|
|
127
206
|
minute: '2-digit',
|
|
@@ -143,6 +222,10 @@
|
|
|
143
222
|
</svelte:head>
|
|
144
223
|
|
|
145
224
|
<main class="main">
|
|
225
|
+
{#if fetchError}
|
|
226
|
+
<Banner text={fetchError} classes="banner-error" />
|
|
227
|
+
{/if}
|
|
228
|
+
|
|
146
229
|
{#if loading && !project}
|
|
147
230
|
<div class="loading-container">
|
|
148
231
|
<Shimmer classes="shimmer-header" />
|
|
@@ -195,7 +278,38 @@
|
|
|
195
278
|
<div class="session-card-subtitle">{truncate(session.summary, 80)}</div>
|
|
196
279
|
{/if}
|
|
197
280
|
</div>
|
|
198
|
-
<
|
|
281
|
+
<div class="session-card-actions">
|
|
282
|
+
<Pill text={formatRelativeTime(session.modified)} classes="pill-session-time" />
|
|
283
|
+
{#if runningSessionIds.has(session.id)}
|
|
284
|
+
<Button
|
|
285
|
+
classes="btn-connect btn-xs"
|
|
286
|
+
onclick={(e: MouseEvent) =>
|
|
287
|
+
connectToSession(
|
|
288
|
+
e,
|
|
289
|
+
session.id,
|
|
290
|
+
session.source === 'opencode' ? 'opencode' : 'claude'
|
|
291
|
+
)}
|
|
292
|
+
disabled={connectingSessionId === session.id}
|
|
293
|
+
showLoader={connectingSessionId === session.id}
|
|
294
|
+
>
|
|
295
|
+
<span class="connect-dot"></span>
|
|
296
|
+
Connect
|
|
297
|
+
</Button>
|
|
298
|
+
{:else}
|
|
299
|
+
<Button
|
|
300
|
+
classes="btn-resume btn-xs"
|
|
301
|
+
onclick={(e: MouseEvent) =>
|
|
302
|
+
connectToSession(
|
|
303
|
+
e,
|
|
304
|
+
session.id,
|
|
305
|
+
session.source === 'opencode' ? 'opencode' : 'claude'
|
|
306
|
+
)}
|
|
307
|
+
disabled={connectingSessionId === session.id}
|
|
308
|
+
showLoader={connectingSessionId === session.id}
|
|
309
|
+
text="Resume"
|
|
310
|
+
/>
|
|
311
|
+
{/if}
|
|
312
|
+
</div>
|
|
199
313
|
</div>
|
|
200
314
|
<div class="session-stats">
|
|
201
315
|
<span><strong>{session.messageCount}</strong> messages</span>
|
|
@@ -208,7 +322,10 @@
|
|
|
208
322
|
<Pill text="Claude Code" classes="pill-source-claude" />
|
|
209
323
|
{/if}
|
|
210
324
|
</div>
|
|
211
|
-
<div class="session-
|
|
325
|
+
<div class="session-meta-row">
|
|
326
|
+
<span class="session-modified">Last updated {formatDate(session.modified)}</span>
|
|
327
|
+
<span class="session-duration">Created {formatDate(session.created)}</span>
|
|
328
|
+
</div>
|
|
212
329
|
</a>
|
|
213
330
|
{/each}
|
|
214
331
|
</div>
|
|
@@ -243,11 +360,45 @@
|
|
|
243
360
|
gap: var(--space-3);
|
|
244
361
|
}
|
|
245
362
|
|
|
363
|
+
.session-card-actions {
|
|
364
|
+
display: flex;
|
|
365
|
+
align-items: center;
|
|
366
|
+
gap: var(--space-2);
|
|
367
|
+
flex-shrink: 0;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.connect-dot {
|
|
371
|
+
display: inline-block;
|
|
372
|
+
width: 6px;
|
|
373
|
+
height: 6px;
|
|
374
|
+
border-radius: 50%;
|
|
375
|
+
background: #4ade80;
|
|
376
|
+
margin-right: 2px;
|
|
377
|
+
flex-shrink: 0;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.session-meta-row {
|
|
381
|
+
display: flex;
|
|
382
|
+
justify-content: space-between;
|
|
383
|
+
align-items: center;
|
|
384
|
+
gap: var(--space-2);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.session-duration,
|
|
388
|
+
.session-modified {
|
|
389
|
+
font-size: 0.75rem;
|
|
390
|
+
color: var(--color-text-tertiary, #888);
|
|
391
|
+
}
|
|
392
|
+
|
|
246
393
|
@media (max-width: 480px) {
|
|
247
394
|
.chat-session-header-top {
|
|
248
395
|
flex-direction: column;
|
|
249
396
|
align-items: flex-start;
|
|
250
397
|
gap: var(--space-2);
|
|
251
398
|
}
|
|
399
|
+
|
|
400
|
+
.session-card-actions {
|
|
401
|
+
flex-wrap: wrap;
|
|
402
|
+
}
|
|
252
403
|
}
|
|
253
404
|
</style>
|