@juspay/shooter 1.5.0 → 1.6.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/README.md +24 -20
- package/bin/shooter.cjs +68 -17
- package/build/client/_app/immutable/assets/2.Dk9NfqnS.css +1 -0
- package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.br +0 -0
- package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.DHxQoulp.css +1 -0
- package/build/client/_app/immutable/assets/3.DHxQoulp.css.br +0 -0
- package/build/client/_app/immutable/assets/3.DHxQoulp.css.gz +0 -0
- package/build/client/_app/immutable/assets/{3.DGDHCVnW.css → 4.D5l1JxgO.css} +1 -1
- package/build/client/_app/immutable/assets/4.D5l1JxgO.css.br +0 -0
- package/build/client/_app/immutable/assets/4.D5l1JxgO.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.C5qz-NeI.css +1 -0
- package/build/client/_app/immutable/assets/5.C5qz-NeI.css.br +0 -0
- package/build/client/_app/immutable/assets/5.C5qz-NeI.css.gz +0 -0
- package/build/client/_app/immutable/chunks/1mEchsPO.js +1 -0
- package/build/client/_app/immutable/chunks/1mEchsPO.js.br +0 -0
- package/build/client/_app/immutable/chunks/1mEchsPO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B7X-vhXI.js +1 -0
- package/build/client/_app/immutable/chunks/B7X-vhXI.js.br +0 -0
- package/build/client/_app/immutable/chunks/B7X-vhXI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BRkqKgVG.js +1 -0
- package/build/client/_app/immutable/chunks/BRkqKgVG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BRkqKgVG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BfJ-f-Tu.js +1 -0
- package/build/client/_app/immutable/chunks/BfJ-f-Tu.js.br +2 -0
- package/build/client/_app/immutable/chunks/BfJ-f-Tu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGMJxf7r.js +1 -0
- package/build/client/_app/immutable/chunks/CGMJxf7r.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGMJxf7r.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CZHsSL_X.js → CJFjKwJ7.js} +1 -1
- package/build/client/_app/immutable/chunks/CJFjKwJ7.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJFjKwJ7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CNH2HlKj.js +20 -0
- package/build/client/_app/immutable/chunks/CNH2HlKj.js.br +0 -0
- package/build/client/_app/immutable/chunks/CNH2HlKj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CR6bkGJW.js +6 -0
- package/build/client/_app/immutable/chunks/CR6bkGJW.js.br +0 -0
- package/build/client/_app/immutable/chunks/CR6bkGJW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CVtJ6yRM.js +1 -0
- package/build/client/_app/immutable/chunks/CVtJ6yRM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CVtJ6yRM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CSoRdFvv.js → CaiJSUi3.js} +1 -1
- package/build/client/_app/immutable/chunks/CaiJSUi3.js.br +0 -0
- package/build/client/_app/immutable/chunks/CaiJSUi3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DjsDGxCa.js → CmczWE_d.js} +4 -4
- package/build/client/_app/immutable/chunks/CmczWE_d.js.br +0 -0
- package/build/client/_app/immutable/chunks/CmczWE_d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CiF38mQq.js → CqfYvnci.js} +1 -1
- package/build/client/_app/immutable/chunks/CqfYvnci.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqfYvnci.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CsgHjHGZ.js +1 -0
- package/build/client/_app/immutable/chunks/CsgHjHGZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CsgHjHGZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{UJOiqIYE.js → CtrCjGZT.js} +1 -1
- package/build/client/_app/immutable/chunks/CtrCjGZT.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtrCjGZT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DDiOVAd8.js +61 -0
- package/build/client/_app/immutable/chunks/DDiOVAd8.js.br +0 -0
- package/build/client/_app/immutable/chunks/DDiOVAd8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVl0sebP.js +2 -0
- package/build/client/_app/immutable/chunks/DVl0sebP.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVl0sebP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/EhLZwqfu.js +3 -0
- package/build/client/_app/immutable/chunks/EhLZwqfu.js.br +0 -0
- package/build/client/_app/immutable/chunks/EhLZwqfu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/gQJcRhou.js +1 -0
- package/build/client/_app/immutable/chunks/gQJcRhou.js.br +0 -0
- package/build/client/_app/immutable/chunks/gQJcRhou.js.gz +0 -0
- package/build/client/_app/immutable/chunks/pRcLbE0d.js +1 -0
- package/build/client/_app/immutable/chunks/pRcLbE0d.js.br +0 -0
- package/build/client/_app/immutable/chunks/pRcLbE0d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CRbaG9cv.js → y_g-KC7l.js} +1 -1
- package/build/client/_app/immutable/chunks/y_g-KC7l.js.br +0 -0
- package/build/client/_app/immutable/chunks/{CRbaG9cv.js.gz → y_g-KC7l.js.gz} +0 -0
- package/build/client/_app/immutable/entry/app.zJvbFXsj.js +2 -0
- package/build/client/_app/immutable/entry/app.zJvbFXsj.js.br +0 -0
- package/build/client/_app/immutable/entry/app.zJvbFXsj.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js +1 -0
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js.br +2 -0
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.B_E4j3MX.js +1 -0
- package/build/client/_app/immutable/nodes/0.B_E4j3MX.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.B_E4j3MX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B0oFqb8X.js +1 -0
- package/build/client/_app/immutable/nodes/1.B0oFqb8X.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B0oFqb8X.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Bqul0XyM.js +13 -0
- package/build/client/_app/immutable/nodes/2.Bqul0XyM.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Bqul0XyM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CTqUQKSN.js +9 -0
- package/build/client/_app/immutable/nodes/3.CTqUQKSN.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CTqUQKSN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B_pbOZoD.js +4 -0
- package/build/client/_app/immutable/nodes/4.B_pbOZoD.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B_pbOZoD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CdLPNo5-.js +1 -0
- package/build/client/_app/immutable/nodes/5.CdLPNo5-.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CdLPNo5-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BvjUfHnH.js +1 -0
- package/build/client/_app/immutable/nodes/6.BvjUfHnH.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BvjUfHnH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.DIkXVP4q.js → 7.5K7Od8ba.js} +3 -3
- package/build/client/_app/immutable/nodes/7.5K7Od8ba.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.5K7Od8ba.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Bs1DrW0_.js +2 -0
- package/build/client/_app/immutable/nodes/8.Bs1DrW0_.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Bs1DrW0_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.1fMlGdqv.js +2 -0
- package/build/client/_app/immutable/nodes/9.1fMlGdqv.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.1fMlGdqv.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-e1fgD9Mi.js +23 -0
- package/build/server/chunks/0-e1fgD9Mi.js.map +1 -0
- package/build/server/chunks/1-D2_XVthm.js +9 -0
- package/build/server/chunks/{1-D0N7vVhH.js.map → 1-D2_XVthm.js.map} +1 -1
- package/build/server/chunks/2-DADX86JZ.js +21 -0
- package/build/server/chunks/2-DADX86JZ.js.map +1 -0
- package/build/server/chunks/3-CHacdiCg.js +21 -0
- package/build/server/chunks/3-CHacdiCg.js.map +1 -0
- package/build/server/chunks/4-0UE_6Ep-.js +23 -0
- package/build/server/chunks/4-0UE_6Ep-.js.map +1 -0
- package/build/server/chunks/5-BBIP1PzX.js +24 -0
- package/build/server/chunks/5-BBIP1PzX.js.map +1 -0
- package/build/server/chunks/6-CWLNQu6F.js +9 -0
- package/build/server/chunks/6-CWLNQu6F.js.map +1 -0
- package/build/server/chunks/7-DmQ3B8uy.js +9 -0
- package/build/server/chunks/7-DmQ3B8uy.js.map +1 -0
- package/build/server/chunks/8-CnFVjQtZ.js +9 -0
- package/build/server/chunks/8-CnFVjQtZ.js.map +1 -0
- package/build/server/chunks/9-Dw7-P6aF.js +9 -0
- package/build/server/chunks/9-Dw7-P6aF.js.map +1 -0
- package/build/server/chunks/{Button-Cs1aE6ka.js → Button-WKgiLWZI.js} +4 -9
- package/build/server/chunks/Button-WKgiLWZI.js.map +1 -0
- package/build/server/chunks/{EmptyState-DDFH1K8g.js → EmptyState-BUBqASsp.js} +3 -3
- package/build/server/chunks/{EmptyState-DDFH1K8g.js.map → EmptyState-BUBqASsp.js.map} +1 -1
- package/build/server/chunks/{Icon-CEUrotA6.js → Icon-BNBAg85a.js} +3 -3
- package/build/server/chunks/Icon-BNBAg85a.js.map +1 -0
- package/build/server/chunks/{Shimmer-DB8W1zt6.js → Shimmer-C4uBVwxz.js} +2 -2
- package/build/server/chunks/{Shimmer-DB8W1zt6.js.map → Shimmer-C4uBVwxz.js.map} +1 -1
- package/build/server/chunks/{_error.svelte-uCOJNxvr.js → _error.svelte-DkIwmECt.js} +5 -5
- package/build/server/chunks/{_error.svelte-uCOJNxvr.js.map → _error.svelte-DkIwmECt.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-CtWmEJwe.js → _layout.svelte-DllETxmJ.js} +13 -7
- package/build/server/chunks/_layout.svelte-DllETxmJ.js.map +1 -0
- package/build/server/chunks/_page.svelte-BZSdLKE_.js +118 -0
- package/build/server/chunks/_page.svelte-BZSdLKE_.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CxWcQ0Am.js → _page.svelte-Cmuco1mC.js} +84 -199
- package/build/server/chunks/_page.svelte-Cmuco1mC.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BgevQjq1.js → _page.svelte-Co5sF7W-.js} +12 -11
- package/build/server/chunks/{_page.svelte-BgevQjq1.js.map → _page.svelte-Co5sF7W-.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DO4oa_LY.js → _page.svelte-CpL3R-VI.js} +8 -8
- package/build/server/chunks/{_page.svelte-DO4oa_LY.js.map → _page.svelte-CpL3R-VI.js.map} +1 -1
- package/build/server/chunks/_page.svelte-DDSzYLUs.js +137 -0
- package/build/server/chunks/_page.svelte-DDSzYLUs.js.map +1 -0
- package/build/server/chunks/_page.svelte-JIkgFUFf.js +26 -0
- package/build/server/chunks/_page.svelte-JIkgFUFf.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CVq6tRb3.js → _page.svelte-Y9-O5a5w.js} +10 -9
- package/build/server/chunks/_page.svelte-Y9-O5a5w.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BcZaKdX9.js → _page.svelte-fcX09N4d.js} +9 -9
- package/build/server/chunks/{_page.svelte-BcZaKdX9.js.map → _page.svelte-fcX09N4d.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DYpJImqd.js → _server.ts-0Xr2fWaq.js} +9 -5
- package/build/server/chunks/_server.ts-0Xr2fWaq.js.map +1 -0
- package/build/server/chunks/{_server.ts-CTpcLUH8.js → _server.ts-2ixC-X3K.js} +20 -5
- package/build/server/chunks/_server.ts-2ixC-X3K.js.map +1 -0
- package/build/server/chunks/{_server.ts-CAxsWKvS.js → _server.ts-40c_epk8.js} +20 -4
- package/build/server/chunks/_server.ts-40c_epk8.js.map +1 -0
- package/build/server/chunks/{_server.ts-WhTJBEJy.js → _server.ts-A9_tRR-K.js} +5 -4
- package/build/server/chunks/{_server.ts-WhTJBEJy.js.map → _server.ts-A9_tRR-K.js.map} +1 -1
- package/build/server/chunks/_server.ts-BRAzC6W1.js +98 -0
- package/build/server/chunks/_server.ts-BRAzC6W1.js.map +1 -0
- package/build/server/chunks/{_server.ts-DB_Kg97c.js → _server.ts-BScvgttw.js} +24 -4
- package/build/server/chunks/_server.ts-BScvgttw.js.map +1 -0
- package/build/server/chunks/{_server.ts-Ch-6iOHp.js → _server.ts-B__YN2kX.js} +121 -87
- package/build/server/chunks/_server.ts-B__YN2kX.js.map +1 -0
- package/build/server/chunks/{_server.ts-tSpgyl1D.js → _server.ts-Bjbr7glm.js} +4 -3
- package/build/server/chunks/_server.ts-Bjbr7glm.js.map +1 -0
- package/build/server/chunks/{_server.ts-COu0vNpd.js → _server.ts-BrqaMMAa.js} +7 -6
- package/build/server/chunks/_server.ts-BrqaMMAa.js.map +1 -0
- package/build/server/chunks/{_server.ts-vekTmWAx.js → _server.ts-BuYyCrnF.js} +6 -4
- package/build/server/chunks/_server.ts-BuYyCrnF.js.map +1 -0
- package/build/server/chunks/{_server.ts-Deok2y88.js → _server.ts-ByIrRtCx.js} +132 -76
- package/build/server/chunks/_server.ts-ByIrRtCx.js.map +1 -0
- package/build/server/chunks/{_server.ts-DYvb9ijZ.js → _server.ts-ByPExYfO.js} +4 -3
- package/build/server/chunks/{_server.ts-DYvb9ijZ.js.map → _server.ts-ByPExYfO.js.map} +1 -1
- package/build/server/chunks/_server.ts-CjpQ10xh.js +123 -0
- package/build/server/chunks/_server.ts-CjpQ10xh.js.map +1 -0
- package/build/server/chunks/_server.ts-CyjDrcZN.js +21 -0
- package/build/server/chunks/_server.ts-CyjDrcZN.js.map +1 -0
- package/build/server/chunks/{_server.ts-DV8zTCF9.js → _server.ts-DOGUMzPx.js} +4 -3
- package/build/server/chunks/{_server.ts-DV8zTCF9.js.map → _server.ts-DOGUMzPx.js.map} +1 -1
- package/build/server/chunks/_server.ts-DZvfyuNj.js +15 -0
- package/build/server/chunks/_server.ts-DZvfyuNj.js.map +1 -0
- package/build/server/chunks/{_server.ts-XzT2UHM1.js → _server.ts-DkPPTUPo.js} +4 -3
- package/build/server/chunks/{_server.ts-XzT2UHM1.js.map → _server.ts-DkPPTUPo.js.map} +1 -1
- package/build/server/chunks/{auth-DeCdZ83n.js → auth-DuunT7Cg.js} +2 -2
- package/build/server/chunks/{auth-DeCdZ83n.js.map → auth-DuunT7Cg.js.map} +1 -1
- package/build/server/chunks/{client-BdGHe_hY.js → client-DRtPDkMh.js} +4 -4
- package/build/server/chunks/{client-BdGHe_hY.js.map → client-DRtPDkMh.js.map} +1 -1
- package/build/server/chunks/client2-bqqmu0b7.js +7 -0
- package/build/server/chunks/{client2-CCBGA-2V.js.map → client2-bqqmu0b7.js.map} +1 -1
- package/build/server/chunks/close-BGlLztTb.js +192 -0
- package/build/server/chunks/close-BGlLztTb.js.map +1 -0
- package/build/server/chunks/events-handler-Dm1mNPQP.js +20 -0
- package/build/server/chunks/events-handler-Dm1mNPQP.js.map +1 -0
- package/build/server/chunks/html-FW6Ia4bL.js +8 -0
- package/build/server/chunks/html-FW6Ia4bL.js.map +1 -0
- package/build/server/chunks/{shared-server-sSGG17Df.js → index-CoD1IJuy.js} +2 -11
- package/build/server/chunks/index-CoD1IJuy.js.map +1 -0
- package/build/server/chunks/{index-DwaY1cAm.js → index-DP9bWJrR.js} +2 -2
- package/build/server/chunks/{index-DwaY1cAm.js.map → index-DP9bWJrR.js.map} +1 -1
- package/build/server/chunks/{index-server-CrDaL06Y.js → index-server-BUmV4MIG.js} +2 -2
- package/build/server/chunks/index-server-BUmV4MIG.js.map +1 -0
- package/build/server/chunks/index-server2-BJrT0wnA.js +5 -0
- package/build/server/chunks/index-server2-BJrT0wnA.js.map +1 -0
- package/build/server/chunks/{index2-CgclKpUj.js → index2-D5Y19GKR.js} +2 -2
- package/build/server/chunks/index2-D5Y19GKR.js.map +1 -0
- package/build/server/chunks/{library-apns-BqJbvSKh.js → library-apns-Cf-E-DhM.js} +5 -2
- package/build/server/chunks/library-apns-Cf-E-DhM.js.map +1 -0
- package/build/server/chunks/providers-DtstoHQ0.js +17 -0
- package/build/server/chunks/providers-DtstoHQ0.js.map +1 -0
- package/build/server/chunks/{pty-manager-BQVB7IVj.js → pty-manager-TyMUpDA9.js} +41 -9
- package/build/server/chunks/pty-manager-TyMUpDA9.js.map +1 -0
- package/build/server/chunks/{root-DDSnEAZv.js → root-CATOR_0t.js} +2 -2
- package/build/server/chunks/root-CATOR_0t.js.map +1 -0
- package/build/server/chunks/shared-server-DaWdgxVh.js +11 -0
- package/build/server/chunks/shared-server-DaWdgxVh.js.map +1 -0
- package/build/server/chunks/{state.svelte-hBbXlUak.js → state.svelte-CftllyvC.js} +3 -3
- package/build/server/chunks/state.svelte-CftllyvC.js.map +1 -0
- package/build/server/chunks/{stores-DHNzYNpX.js → stores-BjL57aOK.js} +4 -4
- package/build/server/chunks/{stores-DHNzYNpX.js.map → stores-BjL57aOK.js.map} +1 -1
- package/build/server/index.js +173 -6
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +53 -30
- package/build/server/manifest.js.map +1 -1
- package/package.json +24 -6
- package/scripts/dev.mjs +361 -0
- package/scripts/install.sh +11 -3
- package/scripts/{fix-generated-types.sh → postgen-types.sh} +2 -2
- package/scripts/setup.cjs +219 -24
- package/scripts/vercel-env-commands.sh +3 -3
- package/server.ts +3 -3
- package/src/app.html +163 -0
- package/src/lib/modules/client/activity/ActivityFeed.svelte +279 -0
- package/src/lib/modules/client/activity/index.ts +8 -0
- package/src/lib/modules/client/activity/store.svelte.ts +478 -0
- package/src/lib/modules/client/activity/summarizer.ts +224 -0
- package/src/lib/modules/client/common/Card.svelte +2 -9
- package/src/lib/modules/client/common/EmptyState.svelte +2 -20
- package/src/lib/modules/client/common/Icon.svelte +3 -7
- package/src/lib/modules/client/common/StatusBadge.svelte +2 -4
- package/src/lib/modules/client/common/config-guard.ts +22 -2
- package/src/lib/modules/client/common/index.ts +1 -1
- package/src/lib/modules/client/common/time.ts +27 -9
- package/src/lib/modules/client/dashboard/DashboardCard.svelte +374 -0
- package/src/lib/modules/client/dashboard/DashboardView.svelte +66 -0
- package/src/lib/modules/client/dashboard/index.ts +12 -0
- package/src/lib/modules/client/dashboard/store.svelte.ts +663 -0
- package/src/lib/modules/client/dashboard/summarizer.ts +205 -0
- package/src/lib/modules/client/neurolink/fetch-proxy.ts +70 -0
- package/src/lib/modules/client/neurolink/provider-config.ts +111 -0
- package/src/lib/modules/client/terminal/ChatView.svelte +46 -43
- package/src/lib/modules/client/terminal/CommandPalette.svelte +3 -12
- package/src/lib/modules/client/terminal/ConnectionStatus.svelte +3 -6
- package/src/lib/modules/client/terminal/LaunchSheet.svelte +10 -21
- package/src/lib/modules/client/terminal/QuickKeys.svelte +4 -11
- package/src/lib/modules/client/terminal/ShortcutsHelp.svelte +3 -6
- package/src/lib/modules/client/terminal/keyboard-shortcuts.ts +5 -7
- package/src/lib/modules/client/terminal/xterm-wrapper.ts +27 -47
- package/src/lib/modules/server/apn/library-apns.ts +6 -3
- package/src/lib/modules/server/apn/notification-history.ts +2 -2
- package/src/lib/modules/server/apn/notification-sessions.ts +1 -3
- package/src/lib/modules/server/apn/pending-requests.ts +1 -1
- package/src/lib/modules/server/apn/types.ts +2 -52
- package/src/lib/modules/server/cli/index.ts +1 -30
- package/src/lib/modules/server/cli/runner.ts +7 -15
- package/src/lib/modules/server/fcm/fcm-service.ts +2 -2
- package/src/lib/modules/server/sessions/jsonl-parser.ts +97 -42
- package/src/lib/modules/server/sessions/jsonl-reader.ts +69 -60
- package/src/lib/modules/server/sessions/opencode-reader.ts +1 -1
- package/src/lib/modules/server/sessions/process-detector.ts +72 -31
- package/src/lib/modules/server/sessions/types.ts +2 -42
- package/src/lib/modules/server/terminal/holder-client.ts +11 -35
- package/src/lib/modules/server/terminal/opencode-watcher.ts +16 -24
- package/src/lib/modules/server/terminal/pty-manager.ts +40 -45
- package/src/lib/modules/server/terminal/session-watcher.ts +15 -17
- package/src/lib/modules/server/terminal/terminal-store.ts +1 -1
- package/src/lib/modules/server/ws/events-handler.ts +1 -16
- package/src/lib/modules/server/ws/keepalive.ts +1 -5
- package/src/lib/modules/server/ws/server.ts +1 -1
- package/src/lib/modules/server/ws/session-handler.ts +20 -86
- package/src/lib/modules/server/ws/terminal-handler.ts +28 -51
- package/src/lib/modules/server/ws/ticket-store.ts +1 -1
- package/src/lib/modules/shared/providers.ts +21 -0
- package/src/lib/types/activity.ts +18 -0
- package/src/lib/types/apn.ts +43 -0
- package/src/lib/types/cli.ts +39 -0
- package/src/lib/types/common.ts +39 -0
- package/src/lib/types/dashboard.ts +4 -0
- package/src/lib/types/generated/Client.ts +1656 -0
- package/src/{generated/types → lib/types/generated}/WsProtocol.ts +344 -2
- package/src/lib/types/index.ts +28 -0
- package/src/lib/types/neurolink.ts +4 -0
- package/src/lib/types/server.ts +93 -0
- package/src/lib/types/sessions.ts +59 -0
- package/src/lib/types/terminal-client.ts +132 -0
- package/src/lib/types/ws.ts +161 -0
- package/src/routes/+error.svelte +7 -2
- package/src/routes/+layout.server.ts +9 -0
- package/src/routes/+layout.svelte +36 -7
- package/src/routes/+page.server.ts +7 -0
- package/src/routes/+page.svelte +85 -35
- package/src/routes/activity/+page.server.ts +7 -0
- package/src/routes/activity/+page.svelte +58 -0
- package/src/routes/api/health/+server.ts +32 -19
- package/src/routes/api/neurolink-proxy/+server.ts +136 -0
- package/src/routes/api/notify/+server.ts +159 -84
- package/src/routes/api/sessions/+server.ts +1 -1
- package/src/routes/api/sessions/connect/+server.ts +10 -6
- package/src/routes/api/terminals/+server.ts +20 -1
- package/src/routes/api/terminals/[id]/+server.ts +16 -2
- package/src/routes/api/webhook/+server.ts +5 -33
- package/src/routes/api/ws-ticket/+server.ts +4 -4
- package/src/routes/config/+page.server.ts +9 -0
- package/src/routes/config/+page.svelte +118 -25
- package/src/routes/neurolink/+page.server.ts +10 -0
- package/src/routes/neurolink/+page.svelte +331 -0
- package/src/routes/project/+page.svelte +17 -12
- package/src/routes/session/[id]/+page.svelte +146 -62
- package/src/routes/terminals/+page.svelte +2 -2
- package/src/routes/terminals/[id]/+page.svelte +99 -88
- package/svelte.config.js +1 -3
- package/tsconfig.json +1 -0
- package/build/client/_app/immutable/assets/2.CAShZ7lQ.css +0 -1
- package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.br +0 -1
- package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.gz +0 -0
- 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/chunks/B5NAKyil.js +0 -20
- 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 +0 -1
- 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/B8zoBsv3.js +0 -6
- 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/BIaXC2t9.js +0 -1
- package/build/client/_app/immutable/chunks/BIaXC2t9.js.br +0 -0
- package/build/client/_app/immutable/chunks/BIaXC2t9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js +0 -1
- 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/Bu1aqm5j.js +0 -1
- 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/CQjSATpv.js +0 -61
- 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/CRbaG9cv.js.br +0 -0
- 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/CZHsSL_X.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CiF38mQq.js.br +0 -0
- package/build/client/_app/immutable/chunks/CiF38mQq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js +0 -1
- package/build/client/_app/immutable/chunks/DSU1n5N_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js +0 -1
- 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.br +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.gz +0 -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 +0 -2
- 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.CU7KVZja.js +0 -2
- package/build/client/_app/immutable/entry/app.CU7KVZja.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CU7KVZja.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.RAMZY19t.js +0 -1
- package/build/client/_app/immutable/entry/start.RAMZY19t.js.br +0 -2
- package/build/client/_app/immutable/entry/start.RAMZY19t.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js +0 -1
- package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DTmfBFmm.js +0 -1
- package/build/client/_app/immutable/nodes/1.DTmfBFmm.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DTmfBFmm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Cm269yzt.js +0 -1
- package/build/client/_app/immutable/nodes/2.Cm269yzt.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Cm269yzt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js +0 -3
- 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.C25c5hMg.js +0 -1
- package/build/client/_app/immutable/nodes/4.C25c5hMg.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.C25c5hMg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DIkXVP4q.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DIkXVP4q.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BPL-HzUX.js +0 -2
- package/build/client/_app/immutable/nodes/6.BPL-HzUX.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BPL-HzUX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.IgEqce53.js +0 -2
- package/build/client/_app/immutable/nodes/7.IgEqce53.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.IgEqce53.js.gz +0 -0
- package/build/server/chunks/0-DiORznXb.js +0 -9
- package/build/server/chunks/0-DiORznXb.js.map +0 -1
- package/build/server/chunks/1-D0N7vVhH.js +0 -9
- package/build/server/chunks/2-DfSav7a7.js +0 -9
- package/build/server/chunks/2-DfSav7a7.js.map +0 -1
- package/build/server/chunks/3-Ck7ewhOX.js +0 -9
- package/build/server/chunks/3-Ck7ewhOX.js.map +0 -1
- package/build/server/chunks/4-DV5MZUz_.js +0 -9
- package/build/server/chunks/4-DV5MZUz_.js.map +0 -1
- package/build/server/chunks/5-DJhoAjb0.js +0 -9
- package/build/server/chunks/5-DJhoAjb0.js.map +0 -1
- package/build/server/chunks/6-Cp8CzYbr.js +0 -9
- package/build/server/chunks/6-Cp8CzYbr.js.map +0 -1
- package/build/server/chunks/7-BA4xzUj3.js +0 -9
- package/build/server/chunks/7-BA4xzUj3.js.map +0 -1
- package/build/server/chunks/Button-Cs1aE6ka.js.map +0 -1
- package/build/server/chunks/Icon-CEUrotA6.js.map +0 -1
- package/build/server/chunks/_layout.svelte-CtWmEJwe.js.map +0 -1
- package/build/server/chunks/_page.svelte-BdYynOck.js +0 -85
- package/build/server/chunks/_page.svelte-BdYynOck.js.map +0 -1
- package/build/server/chunks/_page.svelte-CVq6tRb3.js.map +0 -1
- package/build/server/chunks/_page.svelte-CxWcQ0Am.js.map +0 -1
- package/build/server/chunks/_server.ts-BStnNIcq.js +0 -34
- package/build/server/chunks/_server.ts-BStnNIcq.js.map +0 -1
- package/build/server/chunks/_server.ts-CAxsWKvS.js.map +0 -1
- package/build/server/chunks/_server.ts-COu0vNpd.js.map +0 -1
- package/build/server/chunks/_server.ts-CTpcLUH8.js.map +0 -1
- package/build/server/chunks/_server.ts-Cf84YIaW.js +0 -25
- package/build/server/chunks/_server.ts-Cf84YIaW.js.map +0 -1
- package/build/server/chunks/_server.ts-Ch-6iOHp.js.map +0 -1
- package/build/server/chunks/_server.ts-CtH0dhUp.js +0 -71
- package/build/server/chunks/_server.ts-CtH0dhUp.js.map +0 -1
- package/build/server/chunks/_server.ts-DB_Kg97c.js.map +0 -1
- package/build/server/chunks/_server.ts-DYpJImqd.js.map +0 -1
- package/build/server/chunks/_server.ts-Deok2y88.js.map +0 -1
- package/build/server/chunks/_server.ts-tSpgyl1D.js.map +0 -1
- package/build/server/chunks/_server.ts-vekTmWAx.js.map +0 -1
- package/build/server/chunks/client2-CCBGA-2V.js +0 -7
- package/build/server/chunks/index-server-CrDaL06Y.js.map +0 -1
- package/build/server/chunks/index2-CgclKpUj.js.map +0 -1
- package/build/server/chunks/library-apns-BqJbvSKh.js.map +0 -1
- package/build/server/chunks/pty-manager-BQVB7IVj.js.map +0 -1
- package/build/server/chunks/root-DDSnEAZv.js.map +0 -1
- package/build/server/chunks/shared-server-sSGG17Df.js.map +0 -1
- package/build/server/chunks/state.svelte-hBbXlUak.js.map +0 -1
- package/src/generated/types/Client.ts +0 -589
- package/src/lib/types/config.ts +0 -1
- /package/build/client/_app/immutable/assets/{4.BFUut--w.css → 6.BFUut--w.css} +0 -0
- /package/build/client/_app/immutable/assets/{4.BFUut--w.css.br → 6.BFUut--w.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{4.BFUut--w.css.gz → 6.BFUut--w.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{5.BTOx7yt7.css → 7.BTOx7yt7.css} +0 -0
- /package/build/client/_app/immutable/assets/{5.BTOx7yt7.css.br → 7.BTOx7yt7.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{5.BTOx7yt7.css.gz → 7.BTOx7yt7.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{6.eZGZN-BF.css → 8.eZGZN-BF.css} +0 -0
- /package/build/client/_app/immutable/assets/{6.eZGZN-BF.css.br → 8.eZGZN-BF.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{6.eZGZN-BF.css.gz → 8.eZGZN-BF.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{7.DwS5ZHBh.css → 9.DwS5ZHBh.css} +0 -0
- /package/build/client/_app/immutable/assets/{7.DwS5ZHBh.css.br → 9.DwS5ZHBh.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{7.DwS5ZHBh.css.gz → 9.DwS5ZHBh.css.gz} +0 -0
- /package/src/{generated/types → lib/types/generated}/API.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/APN.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/CLI.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/Config.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/Holder.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/JWT.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/Notification.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/OpenCode.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/Sessions.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/Terminal.ts +0 -0
- /package/src/{generated/types → lib/types/generated}/index.ts +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{al as Z,ad as ee,a9 as $,ae as ue,am as le,an as ce,g as j,b as de,ao as he,v as _e,a as te,w as pe,i as z,ap as S,n as c,j as _,x as m,aq as G,h as ve,R as re,ar as ge,as as J,at as v,e as y,au as L,av as x,aw as se,ax as me,ay as I,az as C,aA as X,aB as be,aC as ye,aD as ne,p as ie,aE as Ee,aF as w,m as k,a1 as Te,V as we,aG as R,T as Ae,E as Ne,aH as Se,aI as ke,aJ as Re,ai as Me,o as P,aK as De,aL as Oe,aM as Le,aN as Ie,aO as Ce,aP as Fe,aQ as V,C as ae,ab as xe,k as Pe,ah as B,l as M,aR as Ve,aS as Be,aT as He,aU as We,W as Ue,aV as Ye,ag as je,Y as qe,aW as $e,aX as ze}from"./CJFjKwJ7.js";let D=!1,H=Symbol();function ut(t,e,r){const n=r[e]??={store:null,source:ue(void 0),unsubscribe:$};if(n.store!==t&&!(H in r))if(n.unsubscribe(),n.store=t??null,t==null)n.source.v=void 0,n.unsubscribe=$;else{var i=!0;n.unsubscribe=le(t,s=>{i?n.source.v=s:de(n.source,s)}),i=!1}return t&&H in r?ce(t):j(n.source)}function lt(){const t={};function e(){Z(()=>{for(var r in t)t[r].unsubscribe();ee(t,H,{enumerable:!1,value:!0})})}return[t,e]}function ct(t){var e=D;try{return D=!1,[t(),D]}finally{D=e}}function Ge(t){let e=0,r=te(0),n;return()=>{he()&&(j(r),_e(()=>(e===0&&(n=pe(()=>t(()=>z(r)))),e+=1,()=>{S(()=>{e-=1,e===0&&(n?.(),n=void 0,z(r))})})))}}var Je=Ae|Ne;function Xe(t,e,r,n){new Ke(t,e,r,n)}class Ke{parent;is_pending=!1;transform_error;#e;#n=_?c:null;#t;#a;#r;#i=null;#s=null;#o=null;#f=null;#c=0;#l=0;#d=!1;#p=new Set;#v=new Set;#u=null;#b=Ge(()=>(this.#u=te(this.#c),()=>{this.#u=null}));constructor(e,r,n,i){this.#e=e,this.#t=r,this.#a=s=>{var a=m;a.b=this,a.f|=G,n(s)},this.parent=m.b,this.transform_error=i??this.parent?.transform_error??(s=>s),this.#r=ve(()=>{if(_){const s=this.#n;re();const a=s.data===ge;if(s.data.startsWith(J)){const o=JSON.parse(s.data.slice(J.length));this.#E(o)}else a?this.#T():this.#y()}else this.#g()},Je),_&&(this.#e=c)}#y(){try{this.#i=v(()=>this.#a(this.#e))}catch(e){this.error(e)}}#E(e){const r=this.#t.failed;r&&(this.#o=v(()=>{r(this.#e,()=>e,()=>()=>{})}))}#T(){const e=this.#t.pending;e&&(this.is_pending=!0,this.#s=v(()=>e(this.#e)),S(()=>{var r=this.#f=document.createDocumentFragment(),n=y();r.append(n),this.#i=this.#_(()=>v(()=>this.#a(n))),this.#l===0&&(this.#e.before(r),this.#f=null,L(this.#s,()=>{this.#s=null}),this.#h(x))}))}#g(){try{if(this.is_pending=this.has_pending_snippet(),this.#l=0,this.#c=0,this.#i=v(()=>{this.#a(this.#e)}),this.#l>0){var e=this.#f=document.createDocumentFragment();se(this.#i,e);const r=this.#t.pending;this.#s=v(()=>r(this.#e))}else this.#h(x)}catch(r){this.error(r)}}#h(e){this.is_pending=!1,e.transfer_effects(this.#p,this.#v)}defer_effect(e){me(e,this.#p,this.#v)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#t.pending}#_(e){var r=m,n=ne,i=ie;I(this.#r),C(this.#r),X(this.#r.ctx);try{return be.ensure(),e()}catch(s){return ye(s),null}finally{I(r),C(n),X(i)}}#m(e,r){if(!this.has_pending_snippet()){this.parent&&this.parent.#m(e,r);return}this.#l+=e,this.#l===0&&(this.#h(r),this.#s&&L(this.#s,()=>{this.#s=null}),this.#f&&(this.#e.before(this.#f),this.#f=null))}update_pending_count(e,r){this.#m(e,r),this.#c+=e,!(!this.#u||this.#d)&&(this.#d=!0,S(()=>{this.#d=!1,this.#u&&Ee(this.#u,this.#c)}))}get_effect_pending(){return this.#b(),j(this.#u)}error(e){var r=this.#t.onerror;let n=this.#t.failed;if(!r&&!n)throw e;this.#i&&(w(this.#i),this.#i=null),this.#s&&(w(this.#s),this.#s=null),this.#o&&(w(this.#o),this.#o=null),_&&(k(this.#n),Te(),k(we()));var i=!1,s=!1;const a=()=>{if(i){ke();return}i=!0,s&&Se(),this.#o!==null&&L(this.#o,()=>{this.#o=null}),this.#_(()=>{this.#g()})},f=o=>{try{s=!0,r?.(o,a),s=!1}catch(u){R(u,this.#r&&this.#r.parent)}n&&(this.#o=this.#_(()=>{try{return v(()=>{var u=m;u.b=this,u.f|=G,n(this.#e,()=>o,()=>a)})}catch(u){return R(u,this.#r.parent),null}}))};S(()=>{var o;try{o=this.transform_error(e)}catch(u){R(u,this.#r&&this.#r.parent);return}o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(f,u=>R(u,this.#r&&this.#r.parent)):f(o)})}}function dt(t){return t.endsWith("capture")&&t!=="gotpointercapture"&&t!=="lostpointercapture"}const Qe=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function ht(t){return Qe.includes(t)}const Ze={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function _t(t){return t=t.toLowerCase(),Ze[t]??t}const et=["touchstart","touchmove"];function tt(t){return et.includes(t)}const N=Symbol("events"),oe=new Set,W=new Set;function pt(t){if(!_)return;t.removeAttribute("onload"),t.removeAttribute("onerror");const e=t.__e;e!==void 0&&(t.__e=void 0,queueMicrotask(()=>{t.isConnected&&t.dispatchEvent(e)}))}function rt(t,e,r,n={}){function i(s){if(n.capture||U.call(e,s),!s.cancelBubble)return Re(()=>r?.call(this,s))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?S(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function vt(t,e,r,n,i){var s={capture:n,passive:i},a=rt(t,e,r,s);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&Z(()=>{e.removeEventListener(t,a,s)})}function gt(t,e,r){(e[N]??={})[t]=r}function mt(t){for(var e=0;e<t.length;e++)oe.add(t[e]);for(var r of W)r(t)}let K=null;function U(t){var e=this,r=e.ownerDocument,n=t.type,i=t.composedPath?.()||[],s=i[0]||t.target;K=t;var a=0,f=K===t&&t[N];if(f){var o=i.indexOf(f);if(o!==-1&&(e===document||e===window)){t[N]=e;return}var u=i.indexOf(e);if(u===-1)return;o<=u&&(a=o)}if(s=i[a]||t.target,s!==e){ee(t,"currentTarget",{configurable:!0,get(){return s||r}});var E=ne,A=m;C(null),I(null);try{for(var g,d=[];s!==null;){var l=s.assignedSlot||s.parentNode||s.host||null;try{var h=s[N]?.[n];h!=null&&(!s.disabled||t.target===s)&&h.call(s,t)}catch(p){g?d.push(p):g=p}if(t.cancelBubble||l===e||l===null)break;s=l}if(g){for(let p of d)queueMicrotask(()=>{throw p});throw g}}finally{t[N]=e,delete t.currentTarget,C(E),I(A)}}}const st=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:t=>t});function nt(t){return st?.createHTML(t)??t}function it(t){var e=Me("template");return e.innerHTML=nt(t.replaceAll("<!>","<!---->")),e.content}function b(t,e){var r=m;r.nodes===null&&(r.nodes={start:t,end:e,a:null,t:null})}function bt(t,e){var r=(e&Oe)!==0,n=(e&Le)!==0,i,s=!t.startsWith("<!>");return()=>{if(_)return b(c,null),c;i===void 0&&(i=it(s?t:"<!>"+t),r||(i=P(i)));var a=n||De?document.importNode(i,!0):i.cloneNode(!0);if(r){var f=P(a),o=a.lastChild;b(f,o)}else b(a,a);return a}}function yt(t=""){if(!_){var e=y(t+"");return b(e,e),e}var r=c;return r.nodeType!==Ce?(r.before(r=y()),k(r)):Fe(r),b(r,r),r}function Et(){if(_)return b(c,null),c;var t=document.createDocumentFragment(),e=document.createComment(""),r=y();return t.append(e,r),b(e,r),t}function Tt(t,e){if(_){var r=m;((r.f&Ie)===0||r.nodes.end===null)&&(r.nodes.end=c),re();return}t!==null&&t.before(e)}let Q=!0;function wt(t,e){var r=e==null?"":typeof e=="object"?`${e}`:e;r!==(t.__t??=t.nodeValue)&&(t.__t=r,t.nodeValue=`${r}`)}function at(t,e){return fe(t,e)}function At(t,e){V(),e.intro=e.intro??!1;const r=e.target,n=_,i=c;try{for(var s=P(r);s&&(s.nodeType!==ae||s.data!==xe);)s=Pe(s);if(!s)throw B;M(!0),k(s);const a=fe(t,{...e,anchor:s});return M(!1),a}catch(a){if(a instanceof Error&&a.message.split(`
|
|
2
|
+
`).some(f=>f.startsWith("https://svelte.dev/e/")))throw a;return a!==B&&console.warn("Failed to hydrate: ",a),e.recover===!1&&Ve(),V(),Be(r),M(!1),at(t,e)}finally{M(n),k(i)}}const O=new Map;function fe(t,{target:e,anchor:r,props:n={},events:i,context:s,intro:a=!0,transformError:f}){V();var o=void 0,u=He(()=>{var E=r??e.appendChild(y());Xe(E,{pending:()=>{}},d=>{Ue({});var l=ie;if(s&&(l.c=s),i&&(n.$$events=i),_&&b(d,null),Q=a,o=t(d,n)||{},Q=!0,_&&(m.nodes.end=c,c===null||c.nodeType!==ae||c.data!==Ye))throw je(),B;qe()},f);var A=new Set,g=d=>{for(var l=0;l<d.length;l++){var h=d[l];if(!A.has(h)){A.add(h);var p=tt(h);for(const F of[e,document]){var T=O.get(F);T===void 0&&(T=new Map,O.set(F,T));var q=T.get(h);q===void 0?(F.addEventListener(h,U,{passive:p}),T.set(h,1)):T.set(h,q+1)}}}};return g(We(oe)),W.add(g),()=>{for(var d of A)for(const p of[e,document]){var l=O.get(p),h=l.get(d);--h==0?(p.removeEventListener(d,U),l.delete(d),l.size===0&&O.delete(p)):l.set(d,h)}W.delete(g),E!==r&&E.parentNode?.removeChild(E)}});return Y.set(o,u),o}let Y=new WeakMap;function Nt(t,e){const r=Y.get(t);return r?(Y.delete(t),r(e)):Promise.resolve()}class St{anchor;#e=new Map;#n=new Map;#t=new Map;#a=new Set;#r=!0;constructor(e,r=!0){this.anchor=e,this.#r=r}#i=e=>{if(this.#e.has(e)){var r=this.#e.get(e),n=this.#n.get(r);if(n)$e(n),this.#a.delete(r);else{var i=this.#t.get(r);i&&(this.#n.set(r,i.effect),this.#t.delete(r),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),n=i.effect)}for(const[s,a]of this.#e){if(this.#e.delete(s),s===e)break;const f=this.#t.get(a);f&&(w(f.effect),this.#t.delete(a))}for(const[s,a]of this.#n){if(s===r||this.#a.has(s))continue;const f=()=>{if(Array.from(this.#e.values()).includes(s)){var u=document.createDocumentFragment();se(a,u),u.append(y()),this.#t.set(s,{effect:a,fragment:u})}else w(a);this.#a.delete(s),this.#n.delete(s)};this.#r||!n?(this.#a.add(s),L(a,f,!1)):f()}}};#s=e=>{this.#e.delete(e);const r=Array.from(this.#e.values());for(const[n,i]of this.#t)r.includes(n)||(w(i.effect),this.#t.delete(n))};ensure(e,r){var n=x,i=ze();if(r&&!this.#n.has(e)&&!this.#t.has(e))if(i){var s=document.createDocumentFragment(),a=y();s.append(a),this.#t.set(e,{effect:v(()=>r(a)),fragment:s})}else this.#n.set(e,v(()=>r(this.anchor)));if(this.#e.set(n,e),i){for(const[f,o]of this.#n)f===e?n.unskip_effect(o):n.skip_effect(o);for(const[f,o]of this.#t)f===e?n.unskip_effect(o.effect):n.skip_effect(o.effect);n.oncommit(this.#i),n.ondiscard(this.#s)}else _&&(this.anchor=c),this.#i(n)}}const ot="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(ot);export{St as B,Tt as a,ct as b,Et as c,mt as d,gt as e,bt as f,lt as g,ut as h,vt as i,At as j,b as k,Q as l,at as m,dt as n,rt as o,_t as p,ht as q,pt as r,wt as s,yt as t,Nt as u};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{bq as Te,X as Ve,s as P,g as j,b as C,aa as oe,br as vt}from"./CJFjKwJ7.js";class pe{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ue{constructor(t,n){this.status=t,this.location=n}}class Le extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function bt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function kt(e){return e.split("%25").map(decodeURI).join("%25")}function Et(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ye({href:e}){return e.split("#")[0]}function At(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const St=new TextDecoder;function Rt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const It=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&J.delete(Pe(e)),It(e,t));const J=new Map;function Tt(e,t){const n=Pe(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&J.set(n,{body:a,init:s,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Rt(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function Ut(e,t,n){if(J.size>0){const r=Pe(e,n),a=J.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);J.delete(r)}}return window.fetch(t,n)}function Pe(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${At(...a)}"]`}return r}const Lt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Pt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Ct(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((i,l)=>{if(l%2){if(i.startsWith("x+"))return ve(String.fromCharCode(parseInt(i.slice(2),16)));if(i.startsWith("u+"))return ve(String.fromCharCode(...i.slice(2).split("-").map(h=>parseInt(h,16))));const f=Lt.exec(i),[,u,_,p,d]=f;return t.push({name:p,matcher:d,optional:!!u,rest:!!_,chained:_?l===1&&o[0]==="":!1}),_?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return ve(i)}).join("")}).join("")}/?$`),params:t}}function jt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Ct(e){return e.slice(1).split("/").filter(jt)}function Ot(e,t,n){const r={},a=e.slice(1),s=a.filter(c=>c!==void 0);let o=0;for(let c=0;c<t.length;c+=1){const i=t[c];let l=a[c-o];if(i.chained&&i.rest&&o&&(l=a.slice(c-o,c+1).filter(f=>f).join("/"),o=0),l===void 0)if(i.rest)l="";else continue;if(!i.matcher||n[i.matcher](l)){r[i.name]=l;const f=t[c+1],u=a[c+1];f&&!f.rest&&f.optional&&u&&i.chained&&(o=0),!f&&!u&&Object.keys(r).length===s.length&&(o=0);continue}if(i.optional&&i.chained){o++;continue}return}if(!o)return r}function ve(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Nt({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([c,[i,l,f]])=>{const{pattern:u,params:_}=Pt(c),p={id:c,exec:d=>{const h=u.exec(d);if(h)return Ot(h,_,r)},errors:[1,...f||[]].map(d=>e[d]),layouts:[0,...l||[]].map(o),leaf:s(i)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function s(c){const i=c<0;return i&&(c=~c),[i,e[c]]}function o(c){return c===void 0?c:[a.has(c),e[c]]}}function Ze(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Me(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const T=globalThis.__sveltekit_o213ui?.base??"",xt=globalThis.__sveltekit_o213ui?.assets??T??"",$t="1776286979388",Qe="sveltekit:snapshot",et="sveltekit:scroll",tt="sveltekit:states",Dt="sveltekit:pageurl",q="sveltekit:history",Q="sveltekit:navigation",B={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},re=location.origin;function je(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function V(){return{x:pageXOffset,y:pageYOffset}}function M(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const qe={...B,"":B.hover};function nt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function rt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=nt(e)}}function Ee(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const c=location.hash.split("#")[1]||"/";r.hash=`#${c}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||_e(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=r?.origin===re&&e.hasAttribute("download");return{url:r,external:s,target:a,download:o}}function se(e){let t=null,n=null,r=null,a=null,s=null,o=null,c=e;for(;c&&c!==document.documentElement;)r===null&&(r=M(c,"preload-code")),a===null&&(a=M(c,"preload-data")),t===null&&(t=M(c,"keepfocus")),n===null&&(n=M(c,"noscroll")),s===null&&(s=M(c,"reload")),o===null&&(o=M(c,"replacestate")),c=nt(c);function i(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:qe[r??"off"],preload_data:qe[a??"off"],keepfocus:i(t),noscroll:i(n),reload:i(s),replace_state:i(o)}}function Ge(e){const t=Te(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function s(o){let c;return t.subscribe(i=>{(c===void 0||n&&i!==c)&&o(c=i)})}return{notify:r,set:a,subscribe:s}}const at={v:()=>{}};function Bt(){const{set:e,subscribe:t}=Te(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${xt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==$t;return o&&(e(!0),at.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function _e(e,t,n){return e.origin!==re||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Sn(e){}function Ft(e){const t=Mt(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,t.charCodeAt(a));return n}const Vt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Mt(e){e.length%4===0&&(e=e.replace(/==?$/,""));let t="",n=0,r=0;for(let a=0;a<e.length;a++)n<<=6,n|=Vt.indexOf(e[a]),r+=6,r===24&&(t+=String.fromCharCode((n&16711680)>>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const qt=-1,Gt=-2,Kt=-3,Yt=-4,Wt=-5,Ht=-6,zt=-7;function Jt(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);let a=null;function s(o,c=!1){if(o===qt)return;if(o===Kt)return NaN;if(o===Yt)return 1/0;if(o===Wt)return-1/0;if(o===Ht)return-0;if(c||typeof o!="number")throw new Error("Invalid input");if(o in r)return r[o];const i=n[o];if(!i||typeof i!="object")r[o]=i;else if(Array.isArray(i))if(typeof i[0]=="string"){const l=i[0],f=t&&Object.hasOwn(t,l)?t[l]:void 0;if(f){let u=i[1];if(typeof u!="number"&&(u=n.push(i[1])-1),a??=new Set,a.has(u))throw new Error("Invalid circular reference");return a.add(u),r[o]=f(s(u)),a.delete(u),r[o]}switch(l){case"Date":r[o]=new Date(i[1]);break;case"Set":const u=new Set;r[o]=u;for(let h=1;h<i.length;h+=1)u.add(s(i[h]));break;case"Map":const _=new Map;r[o]=_;for(let h=1;h<i.length;h+=2)_.set(s(i[h]),s(i[h+1]));break;case"RegExp":r[o]=new RegExp(i[1],i[2]);break;case"Object":const p=Object(i[1]);if(Object.hasOwn(p,"__proto__"))throw new Error("Cannot parse an object with a `__proto__` property");r[o]=p;break;case"BigInt":r[o]=BigInt(i[1]);break;case"null":const d=Object.create(null);r[o]=d;for(let h=1;h<i.length;h+=2){if(i[h]==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");d[i[h]]=s(i[h+1])}break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{if(n[i[1]][0]!=="ArrayBuffer")throw new Error("Invalid data");const h=globalThis[l],w=s(i[1]),g=new h(w);r[o]=i[2]!==void 0?g.subarray(i[2],i[3]):g;break}case"ArrayBuffer":{const h=i[1];if(typeof h!="string")throw new Error("Invalid ArrayBuffer encoding");const w=Ft(h);r[o]=w;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":{const h=l.slice(9);r[o]=Temporal[h].from(i[1]);break}case"URL":{const h=new URL(i[1]);r[o]=h;break}case"URLSearchParams":{const h=new URLSearchParams(i[1]);r[o]=h;break}default:throw new Error(`Unknown type ${l}`)}}else if(i[0]===zt){const l=i[1];if(!Number.isInteger(l)||l<0)throw new Error("Invalid input");const f=new Array(l);r[o]=f;for(let u=2;u<i.length;u+=2){const _=i[u];if(!Number.isInteger(_)||_<0||_>=l)throw new Error("Invalid input");f[_]=s(i[u+1])}}else{const l=new Array(i.length);r[o]=l;for(let f=0;f<i.length;f+=1){const u=i[f];u!==Gt&&(l[f]=s(u))}}else{const l={};r[o]=l;for(const f of Object.keys(i)){if(f==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");const u=i[f];l[f]=s(u)}}return r[o]}return s(0)}const ot=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...ot];const Xt=new Set([...ot]);[...Xt];function Zt(e){return e.filter(t=>t!=null)}const Qt="x-sveltekit-invalidated",en="x-sveltekit-trailing-slash";function ie(e){return e instanceof pe||e instanceof Le?e.status:500}function tn(e){return e instanceof Le?e.text:"Internal Error"}let R,ee,be;const nn=Ve.toString().includes("$$")||/function \w+\(\) \{\}/.test(Ve.toString()),Ke="a:";nn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ke)},ee={current:null},be={current:!1}):(R=new class{#e=P({});get data(){return j(this.#e)}set data(t){C(this.#e,t)}#t=P(null);get form(){return j(this.#t)}set form(t){C(this.#t,t)}#n=P(null);get error(){return j(this.#n)}set error(t){C(this.#n,t)}#r=P({});get params(){return j(this.#r)}set params(t){C(this.#r,t)}#a=P({id:null});get route(){return j(this.#a)}set route(t){C(this.#a,t)}#o=P({});get state(){return j(this.#o)}set state(t){C(this.#o,t)}#s=P(-1);get status(){return j(this.#s)}set status(t){C(this.#s,t)}#i=P(new URL(Ke));get url(){return j(this.#i)}set url(t){C(this.#i,t)}},ee=new class{#e=P(null);get current(){return j(this.#e)}set current(t){C(this.#e,t)}},be=new class{#e=P(!1);get current(){return j(this.#e)}set current(t){C(this.#e,t)}},at.v=()=>be.current=!0);function rn(e){Object.assign(R,e)}const an="/__data.json",on=".html__data.json";function sn(e){return e.endsWith(".html")?e.replace(/\.html$/,on):e.replace(/\/$/,"")+an}const cn=new Set(["icon","shortcut icon","apple-touch-icon"]);let H=null;const $=Ze(et)??{},te=Ze(Qe)??{},x={url:Ge({}),page:Ge({}),navigating:Te(null),updated:Bt()};function Ce(e){$[e]=V()}function ln(e,t){let n=e+1;for(;$[n];)delete $[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function Y(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function st(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(T||"/");e&&await e.update()}}function Ye(){}let Oe,Ae,ce,N,Se,k;const le=[],fe=[];let L=null;function Re(){L?.fork?.then(e=>e?.discard()),L=null}const ae=new Map,it=new Set,fn=new Set,X=new Set;let y={branch:[],error:null,url:null},Ne=!1,ue=!1,We=!0,ne=!1,z=!1,ct=!1,xe=!1,lt,S,I,F;const Z=new Set,He=new Map;async function Un(e,t,n){globalThis.__sveltekit_o213ui?.data&&globalThis.__sveltekit_o213ui.data,document.URL!==location.href&&(location.href=location.href),k=e,await e.hooks.init?.(),Oe=Nt(e),N=document.documentElement,Se=t,Ae=e.nodes[0],ce=e.nodes[1],Ae(),ce(),S=history.state?.[q],I=history.state?.[Q],S||(S=I=Date.now(),history.replaceState({...history.state,[q]:S,[Q]:I},""));const r=$[S];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await bn(Se,n)):(await G({type:"enter",url:je(k.hash?En(new URL(location.href)):location.href),replace_state:!0}),a()),vn()}function un(){le.length=0,xe=!1}function ft(e){fe.some(t=>t?.snapshot)&&(te[e]=fe.map(t=>t?.snapshot?.capture()))}function ut(e){te[e]?.forEach((t,n)=>{fe[n]?.snapshot?.restore(t)})}function ze(){Ce(S),Me(et,$),ft(I),Me(Qe,te)}async function dt(e,t,n,r){let a;t.invalidateAll&&Re(),await G({type:"goto",url:je(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(xe=!0,a=[...He.keys()]),t.invalidate&&t.invalidate.forEach(yn)}}),t.invalidateAll&&oe().then(oe).then(()=>{He.forEach(({resource:s},o)=>{a?.includes(o)&&s.refresh?.()})})}async function dn(e){if(e.id!==L?.id){Re();const t={};Z.add(t),L={id:e.id,token:t,promise:pt({...e,preload:t}).then(n=>(Z.delete(t),n.type==="loaded"&&n.state.error&&Re(),n)),fork:null}}return L.promise}async function ke(e){const t=(await me(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function ht(e,t,n){const r={params:y.params,route:{id:y.route?.id??null},url:new URL(location.href)};y={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(R,e.props.page),lt=new k.root({target:t,props:{...e.props,stores:x,components:fe},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ut(I),n){const s={from:null,to:{...r,scroll:$[S]??V()},willUnload:!1,type:"enter",complete:Promise.resolve()};X.forEach(o=>o(s))}ue=!0}async function de({url:e,params:t,branch:n,errors:r,status:a,error:s,route:o,form:c}){let i="never";if(T&&(e.pathname===T||e.pathname===T+"/"))i="always";else for(const d of n)d?.slash!==void 0&&(i=d.slash);e.pathname=bt(e.pathname,i),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:s,route:o},props:{constructors:Zt(n).map(d=>d.node.component),page:Fe(R)}};c!==void 0&&(l.props.form=c);let f={},u=!R,_=0;for(let d=0;d<Math.max(n.length,y.branch.length);d+=1){const h=n[d],w=y.branch[d];h?.data!==w?.data&&(u=!0),h&&(f={...f,...h.data},u&&(l.props[`data_${_}`]=f),_+=1)}return(!y.url||e.href!==y.url.href||y.error!==s||c!==void 0&&c!==R.form||u)&&(l.props.page={error:s,params:t,route:{id:o?.id??null},state:{},status:a,url:new URL(e),form:c??null,data:u?f:R.data}),l}async function $e({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let o=null;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},i=await e();return{node:i,loader:e,server:s,universal:i.universal?.load?{type:"data",data:o,uses:c}:null,data:o??s?.data??null,slash:i.universal?.trailingSlash??s?.slash}}function hn(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=ue?Ut(r,a.href,t):Tt(r,t);return{resolved:a,promise:s}}function Je(e,t,n,r,a,s){if(xe)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(s[o]!==y.params[o])return!0;for(const o of a.dependencies)if(le.some(c=>c(new URL(o))))return!0;return!1}function De(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function pn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(o=>s.includes(o))&&s.every(o=>a.includes(o))&&n.delete(r)}return n}function Xe({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Fe(R),constructors:[]}}}async function pt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(L?.id===e)return Z.delete(L.token),L.promise;const{errors:o,layouts:c,leaf:i}=a,l=[...c,i];o.forEach(m=>m?.().catch(()=>{})),l.forEach(m=>m?.[1]().catch(()=>{}));let f=null;const u=y.url?e!==he(y.url):!1,_=y.route?a.id!==y.route.id:!1,p=pn(y.url,n);let d=!1;{const m=l.map((v,E)=>{const A=y.branch[E],b=!!v?.[0]&&(A?.loader!==v[1]||Je(d,_,u,p,A.server?.uses,r));return b&&(d=!0),b});if(m.some(Boolean)){try{f=await mt(n,m)}catch(v){const E=await K(v,{url:n,params:r,route:{id:e}});return Z.has(s)?Xe({error:E,url:n,params:r,route:a}):ge({status:ie(v),error:E,url:n,route:a})}if(f.type==="redirect")return f}}const h=f?.nodes;let w=!1;const g=l.map(async(m,v)=>{if(!m)return;const E=y.branch[v],A=h?.[v];if((!A||A.type==="skip")&&m[1]===E?.loader&&!Je(w,_,u,p,E.universal?.uses,r))return E;if(w=!0,A?.type==="error")throw A;return $e({loader:m[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let D=0;D<v;D+=1)Object.assign(O,(await g[D])?.data);return O},server_data_node:De(A===void 0&&m[0]?{type:"skip"}:A??null,m[0]?E?.server:void 0)})});for(const m of g)m.catch(()=>{});const U=[];for(let m=0;m<l.length;m+=1)if(l[m])try{U.push(await g[m])}catch(v){if(v instanceof Ue)return{type:"redirect",location:v.location};if(Z.has(s))return Xe({error:await K(v,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let E=ie(v),A;if(h?.includes(v))E=v.status??E,A=v.error;else if(v instanceof pe)A=v.body;else{if(await x.updated.check())return await st(),await Y(n);A=await K(v,{params:r,url:n,route:{id:a.id}})}const b=await _n(m,U,o);return b?de({url:n,params:r,branch:U.slice(0,b.idx).concat(b.node),errors:o,status:E,error:A,route:a}):await gt(n,{id:a.id},A,E)}else U.push(void 0);return de({url:n,params:r,branch:U,errors:o,status:200,error:null,route:a,form:t?void 0:null})}async function _n(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function ge({status:e,error:t,url:n,route:r}){const a={};let s=null;if(k.server_loads[0]===0)try{const c=await mt(n,[!0]);if(c.type!=="data"||c.nodes[0]&&c.nodes[0].type!=="data")throw 0;s=c.nodes[0]??null}catch{(n.origin!==re||n.pathname!==location.pathname||Ne)&&await Y(n)}try{const o=await $e({loader:Ae,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:De(s)}),c={node:await ce(),loader:ce,universal:null,server:null,data:null};return de({url:n,params:a,branch:[o,c],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Ue)return dt(new URL(o.location,location.href),{},0);throw o}}async function gn(e){const t=e.href;if(ae.has(t))return ae.get(t);let n;try{const r=(async()=>{let a=await k.hooks.reroute({url:new URL(e),fetch:async(s,o)=>hn(s,o,e).promise})??e;if(typeof a=="string"){const s=new URL(e);k.hash?s.hash=a:s.pathname=a,a=s}return a})();ae.set(t,r),n=await r}catch{ae.delete(t);return}return n}async function me(e,t){if(e&&!_e(e,T,k.hash)){const n=await gn(e);if(!n)return;const r=mn(n);for(const a of Oe){const s=a.exec(r);if(s)return{id:he(e),invalidating:t,route:a,params:Et(s),url:e}}}}function mn(e){return kt(k.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(T.length))||"/"}function he(e){return(k.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function _t({url:e,type:t,intent:n,delta:r,event:a,scroll:s}){let o=!1;const c=Be(y,n,e,t,s??null);r!==void 0&&(c.navigation.delta=r),a!==void 0&&(c.navigation.event=a);const i={...c.navigation,cancel:()=>{o=!0,c.reject(new Error("navigation cancelled"))}};return ne||it.forEach(l=>l(i)),o?null:c}async function G({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o={},redirect_count:c=0,nav_token:i={},accept:l=Ye,block:f=Ye,event:u}){const _=F;F=i;const p=await me(t,!1),d=e==="enter"?Be(y,p,t,e):_t({url:t,type:e,delta:n?.delta,intent:p,scroll:n?.scroll,event:u});if(!d){f(),F===i&&(F=_);return}const h=S,w=I;l(),ne=!0,ue&&d.navigation.type!=="enter"&&x.navigating.set(ee.current=d.navigation);let g=p&&await pt(p);if(!g){if(_e(t,T,k.hash))return await Y(t,s);g=await gt(t,{id:null},await K(new Le(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=p?.url||t,F!==i)return d.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(c<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o,redirect_count:c+1,nav_token:i}),d.fulfil(void 0);return}g=await ge({status:500,error:await K(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await x.updated.check()&&(await st(),await Y(t,s));if(un(),Ce(h),ft(w),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const b=s?0:1,O={[q]:S+=b,[Q]:I+=b,[tt]:o};(s?history.replaceState:history.pushState).call(history,O,"",t),s||ln(S,I)}const U=p&&L?.id===p.id?L.fork:null;L=null,g.props.page.state=o;let m;if(ue){const b=(await Promise.all(Array.from(fn,W=>W(d.navigation)))).filter(W=>typeof W=="function");if(b.length>0){let W=function(){b.forEach(we=>{X.delete(we)})};b.push(W),b.forEach(we=>{X.add(we)})}const O=d.navigation.to;y={...g.state,nav:{params:O.params,route:O.route,url:O.url}},g.props.page&&(g.props.page.url=t);const D=U&&await U;D?m=D.commit():(H=null,lt.$set(g.props),H&&Object.assign(g.props.page,H),rn(g.props.page),m=vt?.()),ct=!0}else await ht(g,Se,!1);const{activeElement:v}=document;await m,await oe(),await oe();let E=null;if(We){const b=n?n.scroll:a?V():null;b?scrollTo(b.x,b.y):(E=t.hash&&document.getElementById(yt(t)))?E.scrollIntoView():scrollTo(0,0)}const A=document.activeElement!==v&&document.activeElement!==document.body;!r&&!A&&kn(t,!E),We=!0,g.props.page&&(H&&Object.assign(g.props.page,H),Object.assign(R,g.props.page)),ne=!1,e==="popstate"&&ut(I),d.fulfil(void 0),d.navigation.to&&(d.navigation.to.scroll=V()),X.forEach(b=>b(d.navigation)),x.navigating.set(ee.current=null)}async function gt(e,t,n,r,a){return e.origin===re&&e.pathname===location.pathname&&!Ne?await ge({status:r,error:n,url:e,route:t}):await Y(e,a)}function wn(){let e,t={element:void 0,href:void 0},n;N.addEventListener("mousemove",c=>{const i=c.target;clearTimeout(e),e=setTimeout(()=>{s(i,B.hover)},20)});function r(c){c.defaultPrevented||s(c.composedPath()[0],B.tap)}N.addEventListener("mousedown",r),N.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(c=>{for(const i of c)i.isIntersecting&&(ke(new URL(i.target.href)),a.unobserve(i.target))},{threshold:0});async function s(c,i){const l=rt(c,N),f=l===t.element&&l?.href===t.href&&i>=n;if(!l||f)return;const{url:u,external:_,download:p}=Ee(l,T,k.hash);if(_||p)return;const d=se(l),h=u&&he(y.url)===he(u);if(!(d.reload||h))if(i<=d.preload_data){t={element:l,href:l.href},n=B.tap;const w=await me(u,!1);if(!w)return;dn(w)}else i<=d.preload_code&&(t={element:l,href:l.href},n=i,ke(u))}function o(){a.disconnect();for(const c of N.querySelectorAll("a")){const{url:i,external:l,download:f}=Ee(c,T,k.hash);if(l||f)continue;const u=se(c);u.reload||(u.preload_code===B.viewport&&a.observe(c),u.preload_code===B.eager&&ke(i))}}X.add(o),o()}function K(e,t){if(e instanceof pe)return e.body;const n=ie(e),r=tn(e);return k.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Ln(e,t={}){return e=new URL(je(e)),e.origin!==re?Promise.reject(new Error("goto: invalid URL")):dt(e,t,0)}function yn(e){if(typeof e=="function")le.push(e);else{const{href:t}=new URL(e,location.href);le.push(n=>n.href===t)}}function vn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(ze(),!ne){const r=Be(y,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};it.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ze()}),navigator.connection?.saveData||wn(),N.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=rt(t.composedPath()[0],N);if(!n)return;const{url:r,external:a,target:s,download:o}=Ee(n,T,k.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const c=se(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[l,f]=(k.hash?r.hash.replace(/^#/,""):r.href).split("#"),u=l===ye(location);if(a||c.reload&&(!u||!f)){_t({url:r,type:"link",event:t})?ne=!0:t.preventDefault();return}if(f!==void 0&&u){const[,_]=y.url.href.split("#");if(_===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const p=n.ownerDocument.getElementById(decodeURIComponent(f));p&&(p.scrollIntoView(),p.focus())}return}if(z=!0,Ce(S),e(r),!c.replace_state)return;z=!1}t.preventDefault(),await new Promise(_=>{requestAnimationFrame(()=>{setTimeout(_,0)}),setTimeout(_,100)}),await G({type:"link",url:r,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??r.href===location.href,event:t})}),N.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const o=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(_e(o,T,!1))return;const c=t.target,i=se(c);if(i.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(c,r);o.search=new URLSearchParams(l).toString(),G({type:"form",url:o,keepfocus:i.keepfocus,noscroll:i.noscroll,replace_state:i.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Ie){if(t.state?.[q]){const n=t.state[q];if(F={},n===S)return;const r=$[n],a=t.state[tt]??{},s=new URL(t.state[Dt]??location.href),o=t.state[Q],c=y.url?ye(location)===ye(y.url):!1;if(o===I&&(ct||c)){a!==R.state&&(R.state=a),e(s),$[S]=V(),r&&scrollTo(r.x,r.y),S=n;return}const l=n-S;await G({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{S=n,I=o},block:()=>{history.go(-l)},nav_token:F,event:t})}else if(!z){const n=new URL(location.href);e(n),k.hash&&location.reload()}}}),addEventListener("hashchange",()=>{z&&(z=!1,history.replaceState({...history.state,[q]:++S,[Q]:I},"",location.href))});for(const t of document.querySelectorAll("link"))cn.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&x.navigating.set(ee.current=null)});function e(t){y.url=R.url=t,x.page.set(Fe(R)),x.page.notify()}}async function bn(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:o,data:c,form:i}){Ne=!0;const l=new URL(location.href);let f;({params:a={},route:s={id:null}}=await me(l,!1)||{}),f=Oe.find(({id:p})=>p===s.id);let u,_=!0;try{const p=r.map(async(h,w)=>{const g=c[w];return g?.uses&&(g.uses=wt(g.uses)),$e({loader:k.nodes[h],url:l,params:a,route:s,parent:async()=>{const U={};for(let m=0;m<w;m+=1)Object.assign(U,(await p[m]).data);return U},server_data_node:De(g)})}),d=await Promise.all(p);if(f){const h=f.layouts;for(let w=0;w<h.length;w++)h[w]||d.splice(w,0,void 0)}u=await de({url:l,params:a,branch:d,status:t,error:n,errors:f?.errors,form:i,route:f??null})}catch(p){if(p instanceof Ue){await Y(new URL(p.location,location.href));return}u=await ge({status:ie(p),error:await K(p,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",_=!1}u.props.page&&(u.props.page.state={}),await ht(u,e,_)}async function mt(e,t){const n=new URL(e);n.pathname=sn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(en,"1"),n.searchParams.append(Qt,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new pe(a.status,s)}return new Promise(async s=>{const o=new Map,c=a.body.getReader();function i(f){return Jt(f,{...k.decoders,Promise:u=>new Promise((_,p)=>{o.set(u,{fulfil:_,reject:p})})})}let l="";for(;;){const{done:f,value:u}=await c.read();if(f&&!l)break;for(l+=!u&&l?`
|
|
2
|
+
`:St.decode(u,{stream:!0});;){const _=l.indexOf(`
|
|
3
|
+
`);if(_===-1)break;const p=JSON.parse(l.slice(0,_));if(l=l.slice(_+1),p.type==="redirect")return s(p);if(p.type==="data")p.nodes?.forEach(d=>{d?.type==="data"&&(d.uses=wt(d.uses),d.data=i(d.data))}),s(p);else if(p.type==="chunk"){const{id:d,data:h,error:w}=p,g=o.get(d);o.delete(d),w?g.reject(i(w)):g.fulfil(i(h))}}}})}function wt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let Ie=!1;function kn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=yt(e);if(r&&document.getElementById(r)){const{x:s,y:o}=V();setTimeout(()=>{const c=history.state;Ie=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(c,"",e),t&&scrollTo(s,o),Ie=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let o=0;o<a.rangeCount;o+=1)s.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===s.length){for(let o=0;o<a.rangeCount;o+=1){const c=s[o],i=a.getRangeAt(o);if(c.commonAncestorContainer!==i.commonAncestorContainer||c.startContainer!==i.startContainer||c.endContainer!==i.endContainer||c.startOffset!==i.startOffset||c.endOffset!==i.endOffset)return}a.removeAllRanges()}})}}}function Be(e,t,n,r,a=null){let s,o;const c=new Promise((l,f)=>{s=l,o=f});return c.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:V()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:c},fulfil:s,reject:o}}function Fe(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function En(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function yt(e){let t;if(k.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Un as a,Ln as g,Sn as l,R as p,x as s};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function i(){try{const t=localStorage.getItem("shooter_config");if(!t)return"";const e=JSON.parse(t);if(e&&typeof e=="object"){const r=e;if(typeof r.apiKey=="string")return r.apiKey}}catch{}return""}function o(t){if(!t||typeof t!="object")return!1;const e=t;return typeof e.apiKey!="string"||e.apiKey.length===0||e.deviceToken!==void 0&&e.deviceToken!==null&&typeof e.deviceToken!="string"||e.serverUrl!==void 0&&e.serverUrl!==null&&typeof e.serverUrl!="string"||e.lastUpdated!==void 0&&e.lastUpdated!==null&&typeof e.lastUpdated!="number"?!1:(e.deviceToken===void 0&&(e.deviceToken=null),e.serverUrl===void 0&&(e.serverUrl=null),e.lastUpdated===void 0&&(e.lastUpdated=null),!0)}export{i as g,o as i};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const r=[{cors:"proxy",envKeys:["GOOGLE_AI_API_KEY"],id:"google-ai",label:"Google AI",model:"gemini-3.1-flash-lite-preview"},{cors:"proxy",envKeys:["ANTHROPIC_API_KEY"],id:"anthropic",label:"Anthropic",model:"claude-haiku-4-5-20251001"},{cors:"proxy",envKeys:["OPENAI_API_KEY"],id:"openai",label:"OpenAI",model:"gpt-4o-mini"},{cors:"proxy",envKeys:["MISTRAL_API_KEY"],id:"mistral",label:"Mistral",model:"mistral-small-2506"},{cors:"direct",envKeys:["LITELLM_API_KEY","LITELLM_BASE_URL"],extraEnvKeys:["LITELLM_MODEL"],id:"litellm",label:"LiteLLM",model:"open-large"}];function s(n,d){if(d){const e=r.find(o=>o.id===d);if(e){if(e.cors==="direct"){const o=typeof window<"u"?window.process?.env??{}:{};if(e.envKeys.every(i=>!!o[i]))return{model:e.model,provider:e.id}}else if(n?.[e.id])return{model:e.model,provider:e.id}}}const l=typeof window<"u"?window.process?.env??{}:{};for(const e of r)if(e.cors==="direct"){if(e.envKeys.every(i=>!!l[i]))return{model:e.model,provider:e.id}}else if(n?.[e.id])return{model:e.model,provider:e.id};return null}export{r as P,s as d};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as r,p as e}from"./
|
|
1
|
+
import{s as r,p as e}from"./EhLZwqfu.js";const a={get params(){return e.params},get url(){return e.url}};r.updated.check;const s=a;export{s as p};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.B_E4j3MX.js","../chunks/DVl0sebP.js","../chunks/CJFjKwJ7.js","../chunks/DDiOVAd8.js","../assets/markdown.Dc-OSJWY.css","../chunks/EhLZwqfu.js","../chunks/CqfYvnci.js","../chunks/CmczWE_d.js","../chunks/B7X-vhXI.js","../assets/0.BhZOCxO4.css","../nodes/1.B0oFqb8X.js","../chunks/BfJ-f-Tu.js","../chunks/CsgHjHGZ.js","../assets/1.BYutk3aU.css","../nodes/2.Bqul0XyM.js","../chunks/CNH2HlKj.js","../chunks/1mEchsPO.js","../assets/Phone.FQEfwCX2.css","../chunks/CtrCjGZT.js","../chunks/gQJcRhou.js","../chunks/CaiJSUi3.js","../chunks/BLszSzTT.js","../chunks/CGMJxf7r.js","../chunks/BRkqKgVG.js","../chunks/pRcLbE0d.js","../assets/2.Dk9NfqnS.css","../nodes/3.CTqUQKSN.js","../assets/3.DHxQoulp.css","../nodes/4.B_pbOZoD.js","../assets/4.D5l1JxgO.css","../nodes/5.CdLPNo5-.js","../assets/5.C5qz-NeI.css","../nodes/6.BvjUfHnH.js","../chunks/y_g-KC7l.js","../assets/6.BFUut--w.css","../nodes/7.5K7Od8ba.js","../chunks/CVtJ6yRM.js","../assets/ChatView.CwWbzIL-.css","../assets/7.BTOx7yt7.css","../nodes/8.Bs1DrW0_.js","../assets/8.eZGZN-BF.css","../nodes/9.1fMlGdqv.js","../chunks/PPVm8Dsz.js","../assets/9.DwS5ZHBh.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_}from"../chunks/PPVm8Dsz.js";import{j as V,R as H,h as U,T as W,U as X,V as Z,m as q,l as j,ab as z,n as J,b as R,O as K,g as u,ac as Q,ad as $,ae as tt,W as et,a2 as rt,a3 as at,X as st,aa as ot,f as b,d as nt,Y as it,s as O,c as ct,r as _t,t as ut,Z as P}from"../chunks/CJFjKwJ7.js";import{B as mt,j as dt,m as lt,u as ft,a as v,c as T,f as k,t as ht,s as vt}from"../chunks/DVl0sebP.js";import{i as A}from"../chunks/BfJ-f-Tu.js";import{b as x}from"../chunks/1mEchsPO.js";import{p as D}from"../chunks/B7X-vhXI.js";function I(s,t,a){var n;V&&(n=J,H());var o=new mt(s);U(()=>{var e=t()??null;if(V){var r=X(n),c=r===z,p=e!==null;if(c!==p){var g=Z();q(g),o.anchor=g,j(!1),o.ensure(e,e&&(f=>a(f,e))),j(!0);return}}o.ensure(e,e&&(f=>a(f,e)))},W)}function gt(s){return class extends Et{constructor(t){super({component:s,...t})}}}class Et{#e;#t;constructor(t){var a=new Map,n=(e,r)=>{var c=tt(r,!1,!1);return a.set(e,c),c};const o=new Proxy({...t.props||{},$$events:{}},{get(e,r){return u(a.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===K?!0:(u(a.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,c){return R(a.get(r)??n(r,c),c),Reflect.set(e,r,c)}});this.#t=(t.hydrate?dt:lt)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&Q(),this.#e=o.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||$(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(o,e)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,a){this.#e[t]=this.#e[t]||[];const n=(...o)=>a.call(this,...o);return this.#e[t].push(n),()=>{this.#e[t]=this.#e[t].filter(o=>o!==n)}}$destroy(){this.#t.$destroy()}}const Lt={};var yt=k('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),bt=k("<!> <!>",1);function Rt(s,t){et(t,!0);let a=D(t,"components",23,()=>[]),n=D(t,"data_0",3,null),o=D(t,"data_1",3,null);rt(()=>t.stores.page.set(t.page)),at(()=>{t.stores,t.page,t.constructors,a(),t.form,n(),o(),t.stores.page.notify()});let e=O(!1),r=O(!1),c=O(null);st(()=>{const i=t.stores.page.subscribe(()=>{u(e)&&(R(r,!0),ot().then(()=>{R(c,document.title||"untitled page",!0)}))});return R(e,!0),i});const p=P(()=>t.constructors[1]);var g=bt(),f=b(g);{var C=i=>{const m=P(()=>t.constructors[0]);var d=T(),E=b(d);I(E,()=>u(m),(l,h)=>{x(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(y,Ot)=>{var L=T(),Y=b(L);I(Y,()=>u(p),(B,F)=>{x(F(B,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),G=>a()[1]=G,()=>a()?.[1])}),v(y,L)},$$slots:{default:!0}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)},S=i=>{const m=P(()=>t.constructors[0]);var d=T(),E=b(d);I(E,()=>u(m),(l,h)=>{x(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)};A(f,i=>{t.constructors[1]?i(C):i(S,-1)})}var M=nt(f,2);{var N=i=>{var m=yt(),d=ct(m);{var E=l=>{var h=ht();ut(()=>vt(h,u(c))),v(l,h)};A(d,l=>{u(r)&&l(E)})}_t(m),v(i,m)};A(M,i=>{u(e)&&i(N)})}v(s,g),it()}const Vt=gt(Rt),jt=[()=>_(()=>import("../nodes/0.B_E4j3MX.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>_(()=>import("../nodes/1.B0oFqb8X.js"),__vite__mapDeps([10,1,2,11,12,5,6,13]),import.meta.url),()=>_(()=>import("../nodes/2.Bqul0XyM.js"),__vite__mapDeps([14,1,2,11,15,3,4,16,8,17,12,5,18,19,20,7,21,22,23,24,25]),import.meta.url),()=>_(()=>import("../nodes/3.CTqUQKSN.js"),__vite__mapDeps([26,1,2,11,12,5,15,3,4,16,8,17,19,21,22,23,24,27]),import.meta.url),()=>_(()=>import("../nodes/4.B_pbOZoD.js"),__vite__mapDeps([28,1,2,11,15,3,4,16,8,17,12,19,7,24,29]),import.meta.url),()=>_(()=>import("../nodes/5.CdLPNo5-.js"),__vite__mapDeps([30,1,2,11,15,3,4,16,8,17,23,19,24,31]),import.meta.url),()=>_(()=>import("../nodes/6.BvjUfHnH.js"),__vite__mapDeps([32,1,2,11,15,3,4,16,8,17,12,5,33,18,19,20,7,21,34]),import.meta.url),()=>_(()=>import("../nodes/7.5K7Od8ba.js"),__vite__mapDeps([35,1,2,11,12,15,3,4,16,8,17,33,5,18,36,22,37,38]),import.meta.url),()=>_(()=>import("../nodes/8.Bs1DrW0_.js"),__vite__mapDeps([39,1,2,11,15,3,4,16,8,17,12,5,18,19,20,7,21,40]),import.meta.url),()=>_(()=>import("../nodes/9.1fMlGdqv.js"),__vite__mapDeps([41,42,1,2,11,12,15,3,4,16,8,17,5,6,20,7,36,22,37,43]),import.meta.url)],kt=[0],wt={"/":[-3],"/activity":[-4],"/config":[-5],"/neurolink":[-6],"/project":[6],"/session/[id]":[7],"/terminals":[8],"/terminals/[id]":[9]},w={handleError:(({error:s})=>{console.error(s)}),reroute:(()=>{}),transport:{}},pt=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.decode])),Ct=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.encode])),St=!1,Mt=(s,t)=>pt[s](t);export{Mt as decode,pt as decoders,wt as dictionary,Ct as encoders,St as hash,w as hooks,Lt as matchers,jt as nodes,Vt as root,kt as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as o,a as r}from"../chunks/EhLZwqfu.js";export{o as load_css,r as start};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as P,f as j,s as R,d as V,e as z,g as E,h as H}from"../chunks/DVl0sebP.js";import{t as C,d as o,c as t,r as e,W as L,a3 as M,X as N,Y as K,b as m,g as T,a1 as U,s as X}from"../chunks/CJFjKwJ7.js";import{a as h,s as Y}from"../chunks/DDiOVAd8.js";import{g as F}from"../chunks/EhLZwqfu.js";import{p as G}from"../chunks/CqfYvnci.js";import{I as J}from"../chunks/CmczWE_d.js";var Q=j('<div><span class="status-dot"></span> <span> </span></div>');function Z(p,a){function n(s){switch(s){case"degraded":return"Degraded";case"error":return"Offline";case"healthy":return"Online";default:return"Checking"}}function g(s){switch(s){case"degraded":return"degraded";case"error":return"offline";case"healthy":return"online";default:return""}}var l=Q(),i=o(t(l),2),v=t(i,!0);e(i),e(l),C((s,d)=>{h(l,1,`status-badge ${s??""}`),R(v,d)},[()=>g(a.status),()=>n(a.status)]),P(p,l)}var $=j('<div class="app"><header class="header"><div class="header-content"><a href="/" class="logo"><img src="/app-icon.png" alt="Shooter" class="logo-icon" width="24" height="24"/> <span class="logo-text">Shooter</span></a> <div class="nav-right svelte-12qhfyh"><!> <button aria-label="Settings"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg></button></div></div></header> <div class="content-area svelte-12qhfyh"><!></div> <nav class="bottom-tabs svelte-12qhfyh"><div class="bottom-tabs-inner svelte-12qhfyh"><a href="/"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect></svg> <span>Dashboard</span></a> <a href="/activity"><!> <span>Activity</span></a> <a href="/terminals"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line></svg> <span>Terminals</span></a></div></nav></div>');function it(p,a){L(a,!0);const n=()=>H(G,"$page",g),[g,l]=E();M(()=>{if(a.data?.aiProviders&&(window.__aiProviders=a.data.aiProviders,a.data.neurolinkProvider)){const r=window.process;r?.env&&(r.env.NEUROLINK_PROVIDER=a.data.neurolinkProvider)}});let i=X("unknown");N(()=>{v();const r=setInterval(()=>{v()},3e4);return()=>{clearInterval(r)}});async function v(){try{const r=await fetch("/api/health");if(!r.ok){m(i,"error");return}const c=await r.json();m(i,c.status==="healthy"||c.status==="degraded"||c.status==="error"?c.status:"unknown",!0)}catch{m(i,"error")}}var s=$(),d=t(s),y=t(d),w=o(t(y),2),k=t(w);Z(k,{get status(){return T(i)}});var _=o(k,2);e(w),e(y),e(d);var f=o(d,2),W=t(f);Y(W,()=>a.children),e(f);var b=o(f,2),x=t(b),S=t(x);let q;var u=o(S,2);let A;var B=t(u);J(B,{name:"bell",size:26}),U(2),e(u);var O=o(u,2);let I;e(x),e(b),e(s),C((r,c,D)=>{h(_,1,`btn-gear ${n().url.pathname==="/config"?"btn-gear-active":""}`,"svelte-12qhfyh"),q=h(S,1,"tab-item svelte-12qhfyh",null,q,r),A=h(u,1,"tab-item svelte-12qhfyh",null,A,c),I=h(O,1,"tab-item svelte-12qhfyh",null,I,D)},[()=>({active:n().url.pathname==="/"||n().url.pathname.startsWith("/project")||n().url.pathname.startsWith("/session")}),()=>({active:n().url.pathname.startsWith("/activity")}),()=>({active:n().url.pathname.startsWith("/terminals")})]),z("click",_,()=>{F("/config")}),P(p,s),K(),l()}V(["click"]);export{it as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as W,e as w,a as c,g as Y,f as z,s as x,h as C,t as u}from"../chunks/DVl0sebP.js";import{p as D,a2 as F,a3 as k,w as I,a4 as j,a5 as J,g as S,a6 as K,L as M,a7 as N,W as O,t as y,Y as Q,c as f,d as m,q as R,a0 as U,r as v}from"../chunks/CJFjKwJ7.js";import{i as $}from"../chunks/BfJ-f-Tu.js";import{h as V}from"../chunks/CsgHjHGZ.js";import{g as X}from"../chunks/EhLZwqfu.js";import{p as Z}from"../chunks/CqfYvnci.js";function ee(n=!1){const a=D,t=a.l.u;if(!t)return;let p=()=>K(a.s);if(n){let l=0,s={};const g=M(()=>{let i=!1;const d=a.s;for(const o in d)d[o]!==s[o]&&(s[o]=d[o],i=!0);return i&&l++,l});p=()=>S(g)}t.b.length&&F(()=>{G(a,p),j(t.b)}),k(()=>{const l=I(()=>t.m.map(J));return()=>{for(const s of l)typeof s=="function"&&s()}}),t.a.length&&k(()=>{G(a,p),j(t.a)})}function G(n,a){if(n.l.s)for(const t of n.l.s)S(t);a()}N();var te=z('<main class="error-page svelte-1j96wlh"><div class="error-content svelte-1j96wlh"><div class="error-code svelte-1j96wlh"> </div> <h1 class="error-title svelte-1j96wlh"><!></h1> <p class="error-message svelte-1j96wlh"><!></p> <div class="error-actions svelte-1j96wlh"><button class="error-btn svelte-1j96wlh">Go Home</button> <button class="error-btn error-btn-secondary svelte-1j96wlh">Go Back</button></div></div></main>');function ie(n,a){O(a,!1);const t=()=>C(Z,"$page",p),[p,l]=Y();ee();var s=te();V("1j96wlh",e=>{R(()=>{U.title="Error - Shooter"})});var g=f(s),i=f(g),d=f(i,!0);v(i);var o=m(i,2),T=f(o);{var q=e=>{var r=u("Page not found");c(e,r)},A=e=>{var r=u("Something went wrong");c(e,r)};$(T,e=>{t().status===404?e(q):e(A,-1)})}v(o);var h=m(o,2),B=f(h);{var E=e=>{var r=u();y(()=>x(r,t().error.message)),c(e,r)},H=e=>{var r=u("The page you're looking for doesn't exist or has been moved.");c(e,r)},L=e=>{var r=u("An unexpected error occurred. Try refreshing or going back.");c(e,r)};$(B,e=>{t().error?.message?e(E):t().status===404?e(H,1):e(L,-1)})}v(h);var _=m(h,2),b=f(_),P=m(b,2);v(_),v(g),v(s),y(()=>x(d,t().status)),w("click",b,()=>{X("/")}),w("click",P,()=>{history.back()}),c(n,s),Q(),l()}W(["click"]);export{ie as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{d as lt,s as E,e as Re,a as h,f as p}from"../chunks/DVl0sebP.js";import{W as Ee,c as d,r as c,d as g,g as r,t as W,Y as Ne,Z as O,f as ie,s as R,A as We,b as m,X as ct,_ as dt,q as ut,a0 as vt,a1 as ft}from"../chunks/CJFjKwJ7.js";import{i as P}from"../chunks/BfJ-f-Tu.js";import{P as Ue,s as xe,e as ee,b as Ie,B as ke,a as mt,i as je}from"../chunks/CNH2HlKj.js";import{h as gt}from"../chunks/CsgHjHGZ.js";import{g as Le}from"../chunks/EhLZwqfu.js";import{g as ht,s as pt,c as _t,S as Me}from"../chunks/CtrCjGZT.js";import{i as St}from"../chunks/gQJcRhou.js";import{E as qe}from"../chunks/CaiJSUi3.js";import{I as yt}from"../chunks/CmczWE_d.js";import{b as bt,a as wt,c as Ct}from"../chunks/DDiOVAd8.js";import{f as kt}from"../chunks/BLszSzTT.js";import{S as At}from"../chunks/CGMJxf7r.js";import{i as xt}from"../chunks/BRkqKgVG.js";import{d as Et}from"../chunks/pRcLbE0d.js";var Nt=p('<p class="goal-text svelte-1qbe2oo"> </p>'),It=p('<span class="summarizing svelte-1qbe2oo">Analyzing…</span>'),Pt=p('<span class="summary-text svelte-1qbe2oo"> </span>'),Tt=p('<span class="summary-fallback svelte-1qbe2oo"> </span>'),Dt=p('<span class="stat stat-error svelte-1qbe2oo"> </span>'),Ot=p('<div class="card svelte-1qbe2oo" role="button" tabindex="0"><div class="card-header svelte-1qbe2oo"><span class="project-name svelte-1qbe2oo"> </span> <!></div> <!> <div class="summary-row svelte-1qbe2oo"><!></div> <div class="stats-row svelte-1qbe2oo"><span class="stat svelte-1qbe2oo"><span></span> </span> <span class="stat svelte-1qbe2oo"> </span> <!> <span class="stat stat-path svelte-1qbe2oo"> </span></div></div>');function Be(t,e){Ee(e,!0);function s(o){const l=Math.floor(o/1e3);if(l<60)return`${l}s`;const f=Math.floor(l/60);return f<60?`${f}m ${l%60}s`:`${Math.floor(f/60)}h ${f%60}m`}function i(o){const l=o.replace(/\/$/,"").split("/");return l.length<=2?o:l.slice(-2).join("/")}const a=O(()=>e.card.status==="running"&&e.card.isActive?"var(--ds-green-700)":e.card.status==="running"?"var(--ds-blue-700)":e.card.status==="idle"?"var(--ds-amber-700)":e.card.status==="error"?"var(--ds-red-700)":"var(--ds-gray-600)"),n=O(()=>e.card.status==="running"&&e.card.isActive||e.card.status==="running"?"● Running":e.card.status==="idle"?"◎ Idle":e.card.status==="exited"?"○ Done":e.card.status==="error"?"✕ Error":e.card.status),_=O(()=>e.card.status==="running"&&e.card.isActive?"status-pill status-pill--running-active":e.card.status==="running"?"status-pill status-pill--running":e.card.status==="idle"?"status-pill status-pill--idle":e.card.status==="exited"?"status-pill status-pill--exited":e.card.status==="error"?"status-pill status-pill--error":"status-pill"),S=O(()=>e.card.toolCallCount===0?"Waiting for activity…":e.card.toolCallCount===1?"1 tool call so far":`${e.card.toolCallCount} tool calls so far`);function w(o){(o.key==="Enter"||o.key===" ")&&(o.key===" "&&o.preventDefault(),e.onclick?.())}var y=Ot(),v=d(y),u=d(v),C=d(u,!0);c(u);var b=g(u,2);Ue(b,{get text(){return r(n)},get classes(){return r(_)}}),c(v);var k=g(v,2);{var ue=o=>{var l=Nt(),f=d(l,!0);c(l),W(()=>E(f,e.card.goal)),h(o,l)};P(k,o=>{e.card.goal&&o(ue)})}var H=g(k,2),ve=d(H);{var fe=o=>{var l=It();h(o,l)},me=o=>{var l=Pt(),f=d(l,!0);c(l),W(()=>E(f,e.card.summary)),h(o,l)},J=o=>{var l=Tt(),f=d(l,!0);c(l),W(()=>E(f,r(S))),h(o,l)};P(ve,o=>{e.card.isSummarizing?o(fe):e.card.summary?o(me,1):e.card.status==="running"&&o(J,2)})}c(H);var M=g(H,2),q=d(M),X=d(q),ge=g(X);c(q);var B=g(q,2),he=d(B);c(B);var se=g(B,2);{var pe=o=>{var l=Dt(),f=d(l);c(l),W(()=>E(f,`${e.card.errorCount??""} errors`)),h(o,l)};P(se,o=>{e.card.errorCount>0&&o(pe)})}var Z=g(se,2),_e=d(Z,!0);c(Z),c(M),c(y),W((o,l)=>{bt(y,`--status-color: ${r(a)??""}`),xe(y,"aria-label",`Open ${e.card.projectName??""} session`),E(C,e.card.projectName),wt(X,1,Ct(e.card.status==="running"&&e.card.isActive?"status-dot-active":"status-dot-static"),"svelte-1qbe2oo"),E(ge,` ${o??""}`),E(he,`${e.card.toolCallCount??""} tools`),xe(Z,"title",e.card.cwd),E(_e,l)},[()=>s(e.card.duration),()=>i(e.card.cwd)]),Re("click",y,function(...o){e.onclick?.apply(this,o)}),Re("keydown",y,w),h(t,y),Ne()}lt(["click","keydown"]);var zt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Active</h3> <!></div>'),Rt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Recent</h3> <!></div>'),jt=p("<!> <!>",1);function Lt(t,e){Ee(e,!0);const s=O(()=>e.cards.filter(v=>v.status==="running")),i=O(()=>e.cards.filter(v=>v.status!=="running"));function a(v){e.onCardClick?.(v)}var n=jt(),_=ie(n);{var S=v=>{var u=zt(),C=g(d(u),2);ee(C,17,()=>r(s),b=>b.terminalId,(b,k)=>{Be(b,{get card(){return r(k)},onclick:()=>{a(r(k))}})}),c(u),h(v,u)};P(_,v=>{r(s).length>0&&v(S)})}var w=g(_,2);{var y=v=>{var u=Rt(),C=g(d(u),2);ee(C,17,()=>r(i),b=>b.terminalId,(b,k)=>{Be(b,{get card(){return r(k)},onclick:()=>{a(r(k))}})}),c(u),h(v,u)};P(w,v=>{r(i).length>0&&v(y)})}h(t,n),Ne()}const Mt="https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js",qt=new Set(["agent-question","terminal-exited","tool-failed"]);let re=null,ne=null,le=null;class Bt{async summarize(e){const s=this.chooseTone(e),i=s==="conversational"?this.buildConversationalPrompt(e):this.buildStatusReportPrompt(e);try{const a=await Kt();if(!a)return console.log("[SessionSummarizer] NeuroLink not available, using fallback."),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s};const n=await a.generate({input:{text:i},...le?{model:le.model,provider:le.provider}:{}}),_=Ft(n.content??"").trim()||this.fallbackText(e);return{generatedAt:new Date().toISOString(),text:_,tone:s}}catch(a){return console.warn("[SessionSummarizer] summarize failed:",a instanceof Error?a.message:String(a)),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s}}}buildConversationalPrompt(e){const s=e.goal??"unknown",i=e.recentEvents.map(a=>{const n=[a.type];return a.tool&&n.push(`tool=${a.tool}`),a.error&&n.push(`error=${a.error}`),a.command&&n.push(`command=${a.command}`),n.join(" ")}).join(", ");return`You are monitoring a coding session. Based on the context below, write ONE sentence (max 100 chars) describing what's happening in plain English. Be specific about what Claude did or is doing.
|
|
2
|
+
|
|
3
|
+
Goal: ${s}
|
|
4
|
+
Recent events: ${i}
|
|
5
|
+
Conversation excerpt: ${e.conversationExcerpt}
|
|
6
|
+
Status: ${e.status}
|
|
7
|
+
|
|
8
|
+
One sentence only, no quotes, no markdown.`}buildStatusReportPrompt(e){return`You are monitoring a coding session. Write a brief status update (max 60 chars) in the format "Doing X, Y done". Focus on the action.
|
|
9
|
+
|
|
10
|
+
Recent tool calls: ${e.recentEvents.flatMap(i=>i.tool?[i.tool]:[]).join(", ")||"none"}
|
|
11
|
+
Status: ${e.status}
|
|
12
|
+
|
|
13
|
+
Short phrase only, no quotes.`}chooseTone(e){return e.status==="error"||e.errorCount>0||e.recentEvents.some(i=>qt.has(i.type))?"conversational":"status-report"}fallbackText(e){const s=e.recentEvents.flatMap(a=>a.tool?[a.tool]:[]),i=[...new Set(s)];return i.length>0?`Running: ${i.join(", ")} (${e.toolCallCount} tools)`:`Status: ${e.status} — ${e.toolCallCount} tool calls`}}async function Kt(){if(ne)return ne;xt();const e=(await Yt()).NeuroLink;if(!e)return null;const s=window.__aiProviders,i=window.process?.env?.NEUROLINK_PROVIDER,a=Et(s,i);if(!a)return console.warn("[SessionSummarizer] No AI provider configured"),null;const n=window.process;return n?.env&&s&&(s["google-ai"]&&!n.env.GOOGLE_AI_API_KEY&&(n.env.GOOGLE_AI_API_KEY="proxy-via-server"),s.anthropic&&!n.env.ANTHROPIC_API_KEY&&(n.env.ANTHROPIC_API_KEY="proxy-via-server"),s.openai&&!n.env.OPENAI_API_KEY&&(n.env.OPENAI_API_KEY="proxy-via-server"),s.mistral&&!n.env.MISTRAL_API_KEY&&(n.env.MISTRAL_API_KEY="proxy-via-server")),ne=new e({provider:a.provider}),le=a,console.log(`[SessionSummarizer] Using provider: ${a.provider}/${a.model}`),ne}function Yt(){return re||(re=import(Mt).catch(t=>{throw console.warn("[SessionSummarizer] Failed to load NeuroLink SDK:",t),re=null,t})),re}function Ft(t){return typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):""}function Pe(){return new Date(Date.now()).toISOString()}const Gt=100,Wt=15e3,Ut=3e4,Ve=2e3,Vt=3e4;let D=R(We([])),$=R(!1),N=null,U=null,V=null,ce=Ve,Ht=0,j="";const ae=new Ie,L=new Ie,de=new At;async function Jt(t){j=t||$t(),j&&(await Fe(j),await Je(j),U&&clearInterval(U),U=setInterval(()=>{Fe(j)},Wt))}function Xt(){N&&(N.onclose=null,N.close(),N=null),U&&(clearInterval(U),U=null),V&&(clearTimeout(V),V=null);for(const[,t]of L)t.onclose=null,t.close();L.clear(),de.clear(),ae.clear(),m($,!1),j=""}function Zt(){const t=Date.now();return Te(r(D)).map(e=>{const s=Date.parse(e.createdAt),i=e.events.length>0?Date.parse(e.events[e.events.length-1].timestamp):0;return{...e,duration:t-s,goal:e.goal,isActive:i>0&&t-i<Ut,isSummarizing:e.isSummarizing,summary:e.summary}})}function Ke(t,e){const s=r(D).find(i=>i.terminalId===t);s&&(s.goal=e)}function Qt(t,e){const s=r(D).find(i=>i.terminalId===t);s&&(s.summary=e,s.summaryUpdatedAt=Pe(),s.isSummarizing=!1)}function G(t,e,s){const i={data:s,id:`evt-${++Ht}`,summarized:!1,terminalId:t.terminalId,timestamp:s.timestamp??Pe(),type:e},a=t.events.length>=Gt?[...t.events.slice(1),i]:[...t.events,i];t.events=a,t.eventCount+=1}function He(t){return t.split("/").filter(Boolean).pop()??t}function te(t){const e=L.get(t);e&&(e.onclose=null,e.close(),L.delete(t))}async function Je(t){if(!(N&&N.readyState<=1))try{const e=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t}`},method:"POST"});if(!e.ok){Ae(t);return}const{ticket:s}=await e.json(),i=window.location.origin.replace(/^http/,"ws");N=new WebSocket(`${i}/ws/events?ticket=${s}`),N.onopen=()=>{m($,!0),ce=Ve},N.onmessage=a=>{try{const n=JSON.parse(a.data);n&&typeof n=="object"&&ea(n)}catch{}},N.onclose=()=>{m($,!1),N=null,Ae(t)},N.onerror=()=>{m($,!1)}}catch{m($,!1),Ae(t)}}function Ye(t){let e="";return typeof t=="string"?e=t:Array.isArray(t)&&(e=t.find(i=>i.type==="text")?.content??""),e.slice(0,200).trim()}async function Fe(t){if(t)try{const e=await fetch("/api/terminals",{headers:{Authorization:`Bearer ${t}`}});if(!e.ok)return;const i=(await e.json()).terminals??[];m(D,Te(aa(r(D),i)),!0)}catch{}}function $t(){try{const t=localStorage.getItem("shooter_config");if(!t)return"";const e=JSON.parse(t);if(e&&typeof e=="object"){const s=e;if(typeof s.apiKey=="string")return s.apiKey}}catch{}return""}function ea(t){const e=t.type;if(!e||e==="welcome")return;const s=t.terminalId??null;if(!s)return;const i=r(D).findIndex(_=>_.terminalId===s);if(i===-1)return;const a=r(D)[i];switch(e){case"agent-idle":case"agent-question":{a.status="idle",G(a,e,t);break}case"terminal-exited":{a.status="exited",a.exitedAt=t.exitedAt??Pe(),G(a,e,t),te(s),ae.delete(s);break}case"tool-completed":{G(a,e,t);break}case"tool-failed":{a.errorCount+=1,G(a,e,t);break}case"tool-started":{a.toolCallCount+=1,a.status="running",G(a,e,t);break}default:{G(a,e,t);break}}(e==="tool-failed"||e==="agent-question"||a.errorCount>=3||a.eventCount>0&&a.eventCount%20===0)&&!a.isSummarizing&&sa(a),m(D,Te(r(D)),!0)}function ta(t){return{command:t.command,createdAt:t.createdAt,cwd:t.cwd,errorCount:0,eventCount:0,events:[],exitedAt:t.exitedAt,goal:"",isSummarizing:!1,projectName:He(t.cwd),projectPath:t.cwd,status:Xe(t.status),summary:"",summaryUpdatedAt:"",terminalId:t.id,toolCallCount:0}}function Xe(t){return t==="running"?"running":t==="idle"?"idle":t==="exited"?"exited":"error"}function aa(t,e){const s=new Set(e.map(a=>a.id));for(const a of t)s.has(a.terminalId)||(te(a.terminalId),ae.delete(a.terminalId));const i=new Ie;for(const a of t)s.has(a.terminalId)&&i.set(a.terminalId,a);for(const a of e){const n=i.get(a.id);n?(n.command=a.command,n.cwd=a.cwd,n.projectName=He(a.cwd),n.projectPath=a.cwd,n.exitedAt=a.exitedAt,n.status!=="error"&&(n.status=Xe(a.status)),n.goal||Ge(a.id)):(i.set(a.id,ta(a)),Ge(a.id))}return Array.from(i.values())}async function Ge(t){if(j&&!(L.has(t)||de.has(t))){de.add(t),console.log(`[DashboardStore] Opening session socket for ${t}`);try{const e=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${j}`},method:"POST"});if(!e.ok){console.warn(`[DashboardStore] Failed to get WS ticket for ${t}:`,e.status);return}const{ticket:s}=await e.json(),a=`${window.location.origin.replace(/^http/,"ws")}/ws/session/${t}?ticket=${s}`;console.log(`[DashboardStore] Connecting session socket for ${t}`);const n=new WebSocket(a);L.set(t,n),n.onopen=()=>{console.log(`[DashboardStore] Session socket opened for ${t}`)},n.onmessage=_=>{try{const S=JSON.parse(_.data);if(!S||typeof S!="object")return;const w=S,y=r(D).find(u=>u.terminalId===t),v=y?.goal&&y.goal.length>0;if(w.type==="history"){console.log(`[DashboardStore] Received history for ${t}, extracting goal...`);const u=w.messages;if(!Array.isArray(u)){console.warn(`[DashboardStore] No messages array in history for ${t}`);return}console.log(`[DashboardStore] Found ${u.length} messages, looking for first user message...`);for(const C of u)if(C.role==="user"){const b=Ye(C.content);console.log(`[DashboardStore] Extracted goal for ${t}: "${b.substring(0,50)}..."`),b&&Ke(t,b),te(t);return}console.log(`[DashboardStore] No user message found in history for ${t}`);return}if(w.type==="message"&&w.role==="user"&&!v){const u=Ye(w.content);u&&(console.log(`[DashboardStore] Extracted goal from message for ${t}: "${u.substring(0,50)}..."`),Ke(t,u),te(t));return}if(!v)return;te(t)}catch(S){console.warn("[DashboardStore] Error processing session message:",S)}},n.onclose=()=>{console.log(`[DashboardStore] Session socket closed for ${t}`),L.delete(t)},n.onerror=_=>{console.warn(`[DashboardStore] Session socket error for ${t}:`,_),L.delete(t)}}catch(e){console.warn("[DashboardStore] Failed to open session socket:",e)}finally{de.delete(t)}}}function Ae(t){V||(V=setTimeout(()=>{V=null,Je(t)},ce),ce=Math.min(ce*2,Vt))}function Te(t){return[...t].sort((e,s)=>{const i={error:2,exited:3,idle:1,running:0},a=i[e.status],n=i[s.status];if(a!==n)return a-n;if(e.status!=="exited"&&s.status!=="exited")return s.createdAt.localeCompare(e.createdAt);const _=e.exitedAt??e.createdAt;return(s.exitedAt??s.createdAt).localeCompare(_)})}function sa(t){t.isSummarizing=!0;let e=ae.get(t.terminalId);e||(e=new Bt,ae.set(t.terminalId,e));const s=t.events.slice(-10).map(a=>({command:typeof a.data.command=="string"?a.data.command:null,error:typeof a.data.error=="string"?a.data.error:null,tool:typeof a.data.tool=="string"?a.data.tool:null,type:a.type})),i={conversationExcerpt:t.goal??"",errorCount:t.errorCount,goal:t.goal,recentEvents:s,status:t.status,toolCallCount:t.toolCallCount};(async()=>{try{const a=await e.summarize(i);Qt(t.terminalId,a.text)}catch(a){console.error(`[dashboard] Summarization failed for ${t.terminalId}:`,a)}finally{t.isSummarizing=!1}})()}var oa=p('<meta name="description" content="Active terminals and Claude Code sessions"/>'),ra=p("<!> Refresh",1),na=p('<div class="loading-container"></div>'),ia=p('<div class="dashboard-section svelte-1uha8ag"><!></div>'),la=p('<div class="loading-container"></div>'),ca=p('<h3 class="section-label svelte-1uha8ag">Sessions</h3>'),da=p('<a class="session-card"><div class="session-card-header"><div><h3 class="session-card-title"> </h3> <div class="session-card-subtitle"> </div></div> <!></div> <div class="session-stats"><span><strong> </strong> </span></div></a>'),ua=p('<div style="text-align: center; padding: 1rem;"><!></div>'),va=p('<!> <div class="projects-container svelte-1uha8ag"></div> <!>',1),fa=p("<!> <!>",1),ma=p('<main class="main"><div class="page-header svelte-1uha8ag"><div class="page-header-content svelte-1uha8ag"><div><h1 class="page-title svelte-1uha8ag">Dashboard</h1> <p class="page-description svelte-1uha8ag">Active terminals and Claude Code sessions</p></div> <div class="page-actions svelte-1uha8ag"><!></div></div></div> <!> <!></main>');function Pa(t,e){Ee(e,!0);const s=1e4,i=20;let a=R(We([])),n=R(!1),_=!1,S=R(null),w=null,y=R(null),v=R(!1),u=R(0);const C=O(Zt);ct(()=>{b();const o=ht("shooter_projects");o&&(m(a,o,!0),m(n,!1)),k(),w=setInterval(()=>{r(S)?.apiKey&&r(u)<=i&&k()},s)}),dt(()=>{w&&(clearInterval(w),w=null),Xt()});function b(){try{const o=localStorage.getItem("shooter_config");if(o){const l=JSON.parse(o);St(l)?(m(S,l,!0),Jt(r(S).apiKey)):(localStorage.removeItem("shooter_config"),m(S,null))}}catch{}}async function k(o=!1,l=!1){if(!r(S)?.apiKey||_)return;_=!0,r(a).length===0&&m(n,!0);const f=o?r(u):0;try{const Q=await fetch(`${l?"/api/sessions?refresh=true&":"/api/sessions?"}limit=${i}&offset=${f}`,{headers:{Authorization:`Bearer ${r(S).apiKey}`}});if(!Q.ok){m(y,`Failed to load projects (HTTP ${Q.status})`);return}m(y,null);const K=await Q.json();o?m(a,[...r(a),...K.projects],!0):m(a,K.projects,!0),m(u,r(a).length,!0),m(v,K.total!==void 0?r(a).length<K.total:!1,!0),pt("shooter_projects",r(a))}catch(z){m(y,"Failed to load projects"),console.error("Failed to fetch sessions:",z)}finally{m(n,!1),_=!1}}async function ue(){await k(!0)}async function H(){m(n,!0),_t("shooter_projects"),await k(!1,!0)}function ve(){Le("/config")}function fe(o){Le(`/terminals/${o}`)}function me(){return r(a).reduce((o,l)=>o+l.sessionCount,0)}var J=ma();gt("1uha8ag",o=>{var l=oa();ut(()=>{vt.title="Dashboard - Shooter"}),h(o,l)});var M=d(J),q=d(M),X=g(d(q),2),ge=d(X);ke(ge,{classes:"btn-secondary",onclick:H,get disabled(){return r(n)},children:(o,l)=>{var f=ra(),z=ie(f);yt(z,{name:"refresh",size:14}),ft(),h(o,f)},$$slots:{default:!0}}),c(X),c(q),c(M);var B=g(M,2);{var he=o=>{mt(o,{get text(){return r(y)},classes:"banner-error"})};P(B,o=>{r(y)&&o(he)})}var se=g(B,2);{var pe=o=>{var l=na();ee(l,20,()=>Array(3),je,(f,z)=>{Me(f,{classes:"shimmer-card"})}),c(l),h(o,l)},Z=o=>{qe(o,{icon:"settings",title:"Configuration Required",description:"Set up your API credentials to start tracking sessions",children:(l,f)=>{ke(l,{classes:"btn-primary",onclick:ve,text:"Configure Settings"})}})},_e=o=>{var l=fa(),f=ie(l);{var z=A=>{var T=ia(),Y=d(T);Lt(Y,{get cards(){return r(C)},onCardClick:oe=>{fe(oe.terminalId)}}),c(T),h(A,T)};P(f,A=>{r(C).length>0&&A(z)})}var Q=g(f,2);{var K=A=>{var T=la();ee(T,20,()=>Array(3),je,(Y,oe)=>{Me(Y,{classes:"shimmer-card"})}),c(T),h(A,T)},Ze=A=>{qe(A,{icon:"bell",title:"No sessions yet",description:"Claude Code sessions will appear here once JSONL files are found"})},Qe=O(()=>me()===0&&r(C).length===0),$e=A=>{var T=va(),Y=ie(T);{var oe=I=>{var x=ca();h(I,x)};P(Y,I=>{r(C).length>0&&I(oe)})}var Se=g(Y,2);ee(Se,21,()=>r(a),I=>I.id,(I,x)=>{var F=da(),ye=d(F),be=d(ye),we=d(be),at=d(we,!0);c(we);var De=g(we,2),st=d(De,!0);c(De),c(be);var ot=g(be,2);{let it=O(()=>kt(r(x).lastModified));Ue(ot,{get text(){return`Last updated ${r(it)??""}`},classes:"pill-session-time"})}c(ye);var Oe=g(ye,2),ze=d(Oe),Ce=d(ze),rt=d(Ce,!0);c(Ce);var nt=g(Ce);c(ze),c(Oe),c(F),W(()=>{xe(F,"href",`/project?id=${r(x).id??""}`),E(at,r(x).name),E(st,r(x).fullPath),E(rt,r(x).sessionCount),E(nt,` ${r(x).sessionCount===1?"session":"sessions"}`)}),h(I,F)}),c(Se);var et=g(Se,2);{var tt=I=>{var x=ua(),F=d(x);ke(F,{classes:"btn-secondary",onclick:ue,text:"Load More"}),c(x),h(I,x)};P(et,I=>{r(v)&&I(tt)})}h(A,T)};P(Q,A=>{r(n)&&r(a).length===0?A(K):r(Qe)?A(Ze,1):r(a).length>0&&A($e,2)})}h(o,l)};P(se,o=>{r(n)&&r(a).length===0&&r(C).length===0?o(pe):r(S)?.apiKey?o(_e,-1):o(Z,1)})}c(J),h(t,J),Ne()}export{Pa as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{s as h,a as g,t as Be,f as A}from"../chunks/DVl0sebP.js";import{s as O,A as ke,b as _,g as n,W as Ee,X as Pe,_ as Ge,c as u,d as p,r as d,t as E,a1 as He,Y as Ne,Z as N,q as We,a0 as Ve}from"../chunks/CJFjKwJ7.js";import{i as P}from"../chunks/BfJ-f-Tu.js";import{h as Je}from"../chunks/CsgHjHGZ.js";import{g as ce}from"../chunks/EhLZwqfu.js";import{b as ue,e as le,B as Xe,a as qe}from"../chunks/CNH2HlKj.js";import{a as Ae}from"../chunks/DDiOVAd8.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/CGMJxf7r.js";import{i as et}from"../chunks/BRkqKgVG.js";import{d as tt}from"../chunks/pRcLbE0d.js";const ot="https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js",rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
|
|
2
|
+
|
|
3
|
+
${t?`Project: ${t}
|
|
4
|
+
`:""}Events:
|
|
5
|
+
${s}
|
|
6
|
+
|
|
7
|
+
Summary:`;try{const o=await i.generate({input:{text:a},maxTokens:300,...me?{model:me}:{},...de?{provider:de}:{}});return{error:null,text:w(o.content??o.text).trim()||`${e.length} events processed`}}catch(o){return{error:o instanceof Error?o.message:String(o),text:`${e.length} events (summary unavailable)`}}}function nt(e){const t=e.data,i=e.projectName?`[${e.projectName}] `:"",s=w(t.tool)||w(t.name)||"",r=w(t.filePath),a=w(t.command),o=w(t.pattern);switch(e.type){case"agent-idle":case"agent-question":return`${i}${e.type}: ${w(t.message).slice(0,80)}`;case"error":return`${i}Error: ${w(t.error||t.message).slice(0,100)}`;case"session_end":return`${i}Session ended`;case"tool-completed":return`${i}[${s}] completed`;case"tool-failed":return`${i}[${s}] FAILED: ${w(t.error).slice(0,80)}`;case"tool-started":return`${i}[${s}] started${r?`: ${r}`:""}`;case"tool_result":{const l=t.is_error?"FAILED":"done";return`${i}${s?`[${s}] → `:""}${l}`}case"tool_use":{const l=r||a||o||"";return s?`${i}[${s}] ${l}`.trim():`${i}[tool] ${l}`.trim()}case"user_message":return`${i}User: ${w(t.text).slice(0,80)}`;default:return`${i}${e.type}`}}function at(e){return e.map(nt).join(`
|
|
8
|
+
`)}let me="",de="";async function it(){if(Q)return Q;if(Y)return Y;if(L>=Se){if(Date.now()<$e)return null;L=0}return L++,Y=(async()=>{try{et();const e=await import(ot),t=window.__aiProviders,i=window.process?.env?.NEUROLINK_PROVIDER,s=tt(t,i);if(!s)return console.warn("[ActivityFeed] No AI provider configured"),null;const r=window.process;return r?.env&&t&&(t["google-ai"]&&!r.env.GOOGLE_AI_API_KEY&&(r.env.GOOGLE_AI_API_KEY="proxy-via-server"),t.anthropic&&!r.env.ANTHROPIC_API_KEY&&(r.env.ANTHROPIC_API_KEY="proxy-via-server"),t.openai&&!r.env.OPENAI_API_KEY&&(r.env.OPENAI_API_KEY="proxy-via-server"),t.mistral&&!r.env.MISTRAL_API_KEY&&(r.env.MISTRAL_API_KEY="proxy-via-server")),Q=new e.NeuroLink({provider:s.provider}),me=s.model,de=s.provider,L=0,console.log(`[ActivityFeed] NeuroLink SDK loaded: ${s.provider}/${s.model}`),Q}catch(e){return console.warn("[ActivityFeed] NeuroLink SDK load failed (attempt",L,"):",e instanceof Error?e.message:String(e)),L>=Se&&($e=Date.now()+rt),null}finally{Y=null}})(),Y}function w(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):JSON.stringify(e)}const ct=50,be=5,lt=15e3,mt=15e3,dt=5;let S=O(ke([])),te=O(ke([])),ve=O(!0),M=O(!1),B=O(!1),G=null,ee=null,fe=0;const I=new ue;let H="",oe=null;async function ut(e){if(!G){if(H=je(),!H){console.warn("[ActivityStore] No API key available");return}oe=e,await Ie(),G=setInterval(()=>{Ie()},mt),ee=setInterval(()=>{T()},lt)}}function vt(){G&&(clearInterval(G),G=null),ee&&(clearInterval(ee),ee=null);for(const[e,t]of I)t.onclose=null,t.close(),console.log(`[ActivityStore] Closed session socket for ${e}`);I.clear(),_(S,[],!0),_(te,[],!0),fe=0,_(ve,!0),_(B,!1),_(M,!1),H="",oe=null}function ft(){return n(S)}function pt(){return n(te)}function _t(){return n(ve)}function gt(){return n(M)}function yt(){return n(B)}function R(e,t,i,s){const r={data:i,id:`evt-${++fe}`,projectName:e.projectName,sessionId:e.id,summarized:!1,timestamp:s||new Date().toISOString(),type:t};_(S,[...n(S),r].slice(-200),!0),n(S).filter(o=>!o.summarized).length>=be&&T()}async function ht(e){if(oe)try{const t=await oe(),s=`${window.location.origin.replace(/^http/,"ws")}/ws/session/${e.id}?ticket=${t}`;console.log(`[ActivityStore] Connecting to session ${e.id}`);const r=new WebSocket(s);I.set(e.id,r),r.onopen=()=>{console.log(`[ActivityStore] Session socket opened: ${e.id}`),_(M,!0)},r.onmessage=a=>{try{const o=JSON.parse(a.data);if(!o||typeof o!="object")return;const l=o;At(e,l),l.type==="history"&&T()}catch{}},r.onclose=()=>{console.log(`[ActivityStore] Session socket closed: ${e.id}`),I.delete(e.id),_(M,I.size>0)},r.onerror=a=>{console.warn(`[ActivityStore] Session socket error for ${e.id}:`,a),I.delete(e.id),_(M,I.size>0)}}catch(t){console.warn(`[ActivityStore] Failed to connect session ${e.id}:`,t)}}async function Ie(){if(H)try{const e=await fetch("/api/sessions?limit=50",{headers:{Authorization:`Bearer ${H}`}});if(!e.ok){console.warn("[ActivityStore] Failed to fetch sessions:",e.status);return}const i=(await e.json()).projects??[],s=Date.now()-dt*60*1e3,r=[];for(const o of i)for(const l of o.sessions)Date.parse(l.modified)>s&&r.push({createdAt:l.created,id:l.id,modifiedAt:l.modified,projectName:o.name,projectPath:o.fullPath});const a=new Set(r.map(o=>o.id));for(const[o,l]of I)a.has(o)||(l.onclose=null,l.close(),I.delete(o),console.log(`[ActivityStore] Session ${o} went stale, closed socket`));for(const o of r)I.has(o.id)||ht(o);_(M,I.size>0)}catch(e){console.warn("[ActivityStore] Error discovering sessions:",e)}}function At(e,t){const i=t.type;if(i==="history"&&Array.isArray(t.messages)){const r=t.messages.slice(-20);for(const a of r)xe(e,a)}else if(i==="message")xe(e,{content:t.content||"",role:t.role||"assistant",timestamp:t.timestamp});else if(i==="tool-use"){const s=t.name||"unknown",r=typeof t.input=="object"&&t.input!==null?t.input:{},a=r.file_path||r.path||"",o=r.command||"",l=r.pattern||"";R(e,"tool_use",{command:o.slice(0,120),filePath:a.slice(0,200),name:s,pattern:l.slice(0,100),tool:s})}else if(i==="tool-result"){const s=t.isError===!0,r=(t.output||"").slice(0,200);let a=t.name||"";if(!a){for(let o=n(S).length-1;o>=0;o--)if(n(S)[o].type==="tool_use"&&n(S)[o].data.name){a=n(S)[o].data.name;break}}R(e,"tool_result",{is_error:s,output:r,status:s?"error":"done",tool:a}),s&&T()}else i==="thinking"||(i==="error"?(R(e,"error",{message:t.message||"Unknown error"}),T()):i==="session-end"&&(R(e,"session_end",{}),T()))}function xe(e,t){const i=t.timestamp||new Date().toISOString();let s="";if(typeof t.content=="string"?s=t.content:Array.isArray(t.content)&&(s=t.content.filter(a=>a.type==="text").map(a=>a.text||a.content||"").join("")),t.role==="user")R(e,"user_message",{text:s.slice(0,150)},i);else if(t.role==="assistant"&&Array.isArray(t.content)){const r=t.content.filter(a=>a.type==="tool_use");for(const a of r){const o=a,l=typeof o.input=="object"&&o.input!==null?o.input:{};R(e,"tool_use",{command:(l.command||"").slice(0,120),filePath:(l.file_path||l.path||"").slice(0,200),name:a.name||"unknown",tool:a.name||"unknown"},i)}}}async function T(){if(n(B))return;const e=n(S).filter(s=>!s.summarized);if(e.length===0)return;const t=new ue;for(const s of e){const r=s.projectName||"Unknown";t.has(r)||t.set(r,[]);const a=t.get(r);a&&a.push(s)}const i=Array.from(t.entries()).filter(([,s])=>s.length>=be);if(i.length!==0){_(B,!0);try{const s=await Promise.allSettled(i.slice(0,3).map(async([r,a])=>{const o=await st(a,r);return{projectEvents:a,projectName:r,result:o}}));for(const r of s){if(r.status!=="fulfilled"||!r.value.result.text)continue;const{projectEvents:a,projectName:o,result:l}=r.value;l.error?.includes("No AI provider")&&_(ve,!1);const x={eventIds:a.map(k=>k.id),id:`sum-${++fe}`,projectName:o,text:l.text,timestamp:new Date().toISOString()};_(te,[...n(te),x].slice(-ct),!0);const W=new Set(a.map(k=>k.id));_(S,n(S).map(k=>W.has(k.id)?{...k,summarized:!0}:k),!0)}}catch(s){console.warn("[ActivityStore] Summarization failed:",s)}finally{_(B,!1)}}}var wt=A('<span class="summarizing svelte-tc58m">Summarizing...</span>'),St=A(`<p class="empty svelte-tc58m">No recent activity. Summaries will appear here when Claude Code sessions are active on this
|
|
9
|
+
machine.</p>`),$t=A('<div class="summary-card svelte-tc58m"><time class="svelte-tc58m"> </time> <p class="svelte-tc58m"> </p> <span class="event-count svelte-tc58m"> </span></div>'),It=A('<div class="project-group svelte-tc58m"><h3 class="project-name svelte-tc58m"> </h3> <!></div>'),xt=A('<div class="pending svelte-tc58m"><span> </span></div>'),kt=A('<span class="tool svelte-tc58m"> </span>'),Et=A('<code class="file-path svelte-tc58m"> </code>'),Pt=A('<code class="svelte-tc58m"> </code>'),Nt=A('<div><time class="svelte-tc58m"> </time> <span class="project svelte-tc58m"> </span> <span class="type svelte-tc58m"> </span> <!> <!> <!></div>'),jt=A('<div class="raw-events svelte-tc58m"></div>'),bt=A('<div class="feed svelte-tc58m"><header class="svelte-tc58m"><h2 class="svelte-tc58m">Activity</h2> <span> </span> <!></header> <!> <div class="entries svelte-tc58m"><!> <!> <!></div> <!> <!></div>');function Ot(e,t){Ee(t,!0);let i=O(!1);async function s(){const c=je();if(!c)throw new Error("No API key configured");const m=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${c}`},method:"POST"});if(!m.ok)throw new Error("Failed to get WS ticket");return(await m.json()).ticket}Pe(()=>{ut(s)}),Ge(()=>{vt()});const r=N(pt),a=N(ft),o=N(gt),l=N(_t),x=N(yt),W=N(()=>n(a).filter(c=>!c.summarized).length),k=N(()=>{const c=new Qe;for(const m of n(a))m.sessionId&&c.add(m.sessionId);return c.size}),Oe=N(()=>{const c=new ue;for(const m of[...n(r)].reverse()){const v=m.projectName||"Unknown";c.has(v)||c.set(v,{name:v,summaries:[]});const f=c.get(v);f&&f.summaries.push(m)}return Array.from(c.values())});var re=bt(),se=u(re),V=p(u(se),2);let pe;var ze=u(V,!0);d(V);var Le=p(V,2);{var Re=c=>{var m=wt();g(c,m)};P(Le,c=>{n(x)&&c(Re)})}d(se);var _e=p(se,2);{var Me=c=>{qe(c,{text:"AI summaries unavailable — configure a provider to enable",classes:"banner-warning"})};P(_e,c=>{n(l)||c(Me)})}var ne=p(_e,2),ge=u(ne);{var Te=c=>{var m=St();g(c,m)};P(ge,c=>{n(r).length===0&&n(a).length===0&&c(Te)})}var ye=p(ge,2);le(ye,17,()=>n(Oe),c=>c.name,(c,m)=>{var v=It(),f=u(v),z=u(f,!0);d(f);var J=p(f,2);le(J,17,()=>n(m).summaries,j=>j.id,(j,D)=>{var b=$t(),C=u(b),K=u(C,!0);d(C);var F=p(C,2),X=u(F,!0);d(F);var q=p(F,2),Z=u(q);d(q),d(b),E(ae=>{h(K,ae),h(X,n(D).text),h(Z,`${n(D).eventIds.length??""} events`)},[()=>we(n(D).timestamp)]),g(j,b)}),d(v),E(()=>h(z,n(m).name)),g(c,v)});var De=p(ye,2);{var Ce=c=>{var m=xt(),v=u(m),f=u(v);d(v),d(m),E(()=>h(f,`${n(W)??""} events pending summary...`)),g(c,m)};P(De,c=>{n(W)>0&&c(Ce)})}d(ne);var he=p(ne,2);Xe(he,{classes:"btn-ghost raw-toggle",onclick:()=>{_(i,!n(i))},children:(c,m)=>{He();var v=Be();E(()=>h(v,`${n(i)?"▾":"▸"} Raw events (${n(a).length??""})`)),g(c,v)},$$slots:{default:!0}});var Ke=p(he,2);{var Fe=c=>{var m=jt();le(m,21,()=>[...n(a)].reverse().slice(0,50),v=>v.id,(v,f)=>{var z=Nt();let J;var j=u(z),D=u(j,!0);d(j);var b=p(j,2),C=u(b,!0);d(b);var K=p(b,2),F=u(K,!0);d(K);var X=p(K,2);{var q=y=>{var $=kt(),U=u($,!0);d($),E(()=>h(U,n(f).data.tool)),g(y,$)};P(X,y=>{n(f).data.tool&&y(q)})}var Z=p(X,2);{var ae=y=>{var $=Et(),U=u($,!0);d($),E(ie=>h(U,ie),[()=>n(f).data.filePath.slice(0,80)]),g(y,$)};P(Z,y=>{n(f).data.filePath&&y(ae)})}var Ue=p(Z,2);{var Ye=y=>{var $=Pt(),U=u($,!0);d($),E(ie=>h(U,ie),[()=>n(f).data.command.slice(0,60)]),g(y,$)};P(Ue,y=>{n(f).data.command&&y(Ye)})}d(z),E(y=>{J=Ae(z,1,"raw-event svelte-tc58m",null,J,{summarized:n(f).summarized}),h(D,y),h(C,n(f).projectName||"Unknown"),h(F,n(f).type)},[()=>we(n(f).timestamp)]),g(v,z)}),d(m),g(c,m)};P(Ke,c=>{n(i)&&c(Fe)})}d(re),E(()=>{pe=Ae(V,1,"status svelte-tc58m",null,pe,{live:n(o)}),h(ze,n(o)?`● Watching ${n(k)} sessions`:"○ No active sessions")}),g(e,re),Ne()}var zt=A('<meta name="description" content="Real-time activity feed"/>'),Lt=A('<main class="main"><h1 class="page-title svelte-13r34ge">Activity Feed</h1> <!></main>');function Wt(e,t){Ee(t,!0);let i=O(!1);Pe(()=>{try{const o=localStorage.getItem("shooter_config");if(!o){ce("/config");return}const l=JSON.parse(o);if(!Ze(l)){localStorage.removeItem("shooter_config"),ce("/config");return}_(i,!0)}catch{localStorage.removeItem("shooter_config"),ce("/config")}});var s=Lt();Je("13r34ge",o=>{var l=zt();We(()=>{Ve.title="Activity Feed - Shooter"}),g(o,l)});var r=p(u(s),2);{var a=o=>{Ot(o,{})};P(r,o=>{n(i)&&o(a)})}d(s),g(e,s),Ne()}export{Wt as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as l,f as v,s as D}from"../chunks/DVl0sebP.js";import{t as R,c as d,d as f,r as i,g as e,W as Be,X as Ne,Y as Qe,q as Ke,f as E,b as t,Z as x,s as k,a0 as Oe,a1 as Se}from"../chunks/CJFjKwJ7.js";import{i as Q}from"../chunks/BfJ-f-Tu.js";import{e as we,c as $e,i as De,B as G,I as se,a as Le,s as Je}from"../chunks/CNH2HlKj.js";import{h as je}from"../chunks/CsgHjHGZ.js";import{s as ze,a as Z}from"../chunks/DDiOVAd8.js";import{p as Ee}from"../chunks/B7X-vhXI.js";import{i as Me}from"../chunks/gQJcRhou.js";import{I as ie}from"../chunks/CmczWE_d.js";import{P as Fe}from"../chunks/pRcLbE0d.js";var Ge=v('<p class="card-description"> </p>'),We=v('<div class="card-header"><h2 class="card-title"> </h2> <!></div>'),Ye=v('<div><!> <div class="card-content"><!></div></div>');function W(g,s){const _=Ee(s,"class",3,"");var o=Ye(),y=d(o);{var u=U=>{var T=We(),q=d(T),L=d(q,!0);i(q);var B=f(q,2);{var K=M=>{var J=Ge(),j=d(J,!0);i(J),R(()=>D(j,s.description)),l(M,J)};Q(B,M=>{s.description&&M(K)})}i(T),R(()=>D(L,s.title)),l(U,T)};Q(y,U=>{s.title&&U(u)})}var S=f(y,2),c=d(S);ze(c,()=>s.children),i(S),i(o),R(()=>Z(o,1,`card ${_()??""}`)),l(g,o)}function Y(g){return g instanceof Error?g.message:typeof g=="string"?g:String(g)}function Ze(){return be()!==null}async function He(){const g=be();if(!g)throw new Error("Scanner not available");return g()}function be(){if(typeof window>"u")return null;const g=window.ShooterBridge?.scanner;if(g&&typeof g.scan=="function")return()=>g.scan();const s=window.ShooterNativeBridge?.scanner;return s&&typeof s.scan=="function"?()=>s.scan():null}var Ve=v("<div><!></div>"),Xe=v("<div></div>");function et(g,s){var _=Xe();we(_,21,()=>s.steps,De,(o,y,u)=>{var S=Ve();let c;var U=d(S);$e(U,{get onclick(){return s.onhandleStepClick},get label(){return e(y).label},get icon(){return e(y).icon},stepIndex:u+1}),i(S),R(()=>c=Z(S,1,"step-container svelte-xw39st",null,c,{"active-step":s.currentStepIndex===u,"completed-step":s.currentStepIndex>u})),l(o,S)}),i(_),R(()=>Z(_,1,`container ${s.classes??""??""}`,"svelte-xw39st")),l(g,_)}var tt=v('<meta name="description" content="Configure notification system settings"/>'),rt=v(`<!> <!> <p class="input-help svelte-1gp6n77">Find this in your <code class="svelte-1gp6n77">~/.shooter/.env</code> file. Run <code class="svelte-1gp6n77">shooter setup</code> to generate
|
|
2
|
+
one.</p> <!> <p class="input-help svelte-1gp6n77">Optional — only needed for iOS/Android push notifications.</p>`,1),at=v("<!> Test Connection",1),nt=v(`<p class="qr-description svelte-1gp6n77">Scan the QR code shown on your server's settings page to auto-configure the
|
|
3
|
+
connection.</p> <!>`,1),ot=v('<p class="qr-server-url svelte-1gp6n77">Server: <code class="svelte-1gp6n77"> </code></p>'),st=v('<div class="qr-container svelte-1gp6n77"><img alt="QR code for mobile app pairing" class="qr-image svelte-1gp6n77"/></div> <p class="qr-hint svelte-1gp6n77">Scan this QR code with the Shooter iOS or Android app to connect.</p> <!>',1),it=v('<div class="qr-placeholder svelte-1gp6n77"><p class="qr-loading-text svelte-1gp6n77">Generating QR code...</p></div>'),ct=v('<p class="qr-error svelte-1gp6n77"> </p>'),lt=v(`<p class="qr-description svelte-1gp6n77">Generate a QR code containing your server URL and API key. Your mobile app can
|
|
4
|
+
scan it to auto-configure the connection.</p>`),dt=v("<!> <!>",1),vt=v('<div class="qr-section svelte-1gp6n77"><!></div>'),ut=v('<div class="provider-row svelte-1gp6n77"><!> <span class="provider-label svelte-1gp6n77"> </span> <span> </span></div>'),ft=v('<div class="active-provider svelte-1gp6n77">Active: <strong> </strong></div>'),pt=v('<div class="active-provider svelte-1gp6n77">Auto-detected from configured keys</div>'),gt=v('<p class="ai-help svelte-1gp6n77">Run <code class="svelte-1gp6n77">shooter setup</code> to configure AI providers for summaries.</p>'),mt=v('<div class="ai-providers svelte-1gp6n77"><!> <!></div>'),ht=v('<p class="danger-description svelte-1gp6n77">Clear all saved configuration data from this device.</p> <!>',1),_t=v('<main class="main"><div class="settings-container svelte-1gp6n77"><div style="margin-bottom: var(--space-4);"><a href="/" class="back-link">← Back to Projects</a></div> <div class="page-header svelte-1gp6n77"><h1 class="page-title svelte-1gp6n77">Settings</h1> <p class="page-description svelte-1gp6n77">Configure your API credentials and notification preferences</p></div> <div class="settings-grid svelte-1gp6n77"><section class="settings-section svelte-1gp6n77"><!> <!> <div class="button-group svelte-1gp6n77"><!> <!></div></section> <aside class="settings-sidebar svelte-1gp6n77"><!> <!> <!> <!></aside></div></div></main>');function Ut(g,s){Be(s,!0);let _=k(""),o=k(""),y=k(""),u=k(""),S=k(!1),c=k(""),U=k(!1),T=k(""),q=k(""),L=k(!1),B=k(""),K=k(!1),M=k(!1),J=!1,j=k(!1);async function ke(){if(!e(o).trim()){t(B,"Save an API key first to generate a QR code");return}t(L,!0),t(B,""),t(T,""),t(q,"");try{const r=await fetch("/api/qr-config",{headers:{Authorization:`Bearer ${e(o).trim()}`}});if(!r.ok){const n=await r.json();t(B,n.error||"Failed to generate QR code",!0);return}const a=await r.json();t(T,a.dataUrl,!0),t(q,a.serverUrl,!0)}catch(r){t(B,`Network error: ${Y(r)}`)}finally{t(L,!1)}}async function Ce(){t(j,!0),t(u,""),t(c,"");try{const r=await He();try{const a=JSON.parse(r);typeof a.serverUrl=="string"&&a.serverUrl&&t(_,a.serverUrl,!0),typeof a.apiKey=="string"&&a.apiKey&&t(o,a.apiKey,!0),await X();const n=e(c);n!=="error"&&n!=="warning"&&(t(u,"Configuration updated from QR code"),t(c,"success"))}catch{t(u,"Invalid QR code data"),t(c,"error")}}catch(r){const a=Y(r);a!=="cancelled"&&(t(u,`Scanner error: ${a}`),t(c,"error"))}finally{t(j,!1)}}function H(){return typeof window>"u"?null:window.ShooterBridge?window.ShooterBridge:window.ShooterNativeBridge?window.ShooterNativeBridge:null}function V(){return window.location.origin}function ce(){const r=H();if(r&&!J){t(U,!0);try{const a=JSON.parse(r.getConfig?.()??"{}");a.serverUrl&&t(_,a.serverUrl,!0),a.apiKey&&t(o,a.apiKey,!0);const n=r.getFcmToken?.();n&&t(y,n,!0),J=!0}catch{}}t(K,Ze(),!0)}Ne(()=>{{const r=window.location.hash.slice(1);if(r){const a=new URLSearchParams(r),n=a.get("key"),p=a.get("url");n&&(t(o,n,!0),p&&t(_,p,!0),X(),window.history.replaceState({},"",window.location.pathname))}if(!e(o))try{const a=localStorage.getItem("shooter_config");if(a){const n=JSON.parse(a);Me(n)?(n.apiKey&&t(o,n.apiKey,!0),n.deviceToken&&t(y,n.deviceToken,!0),n.serverUrl&&t(_,n.serverUrl,!0)):localStorage.removeItem("shooter_config")}}catch{}if(ce(),e(_)||t(_,V(),!0),t(M,!0),!e(K)){const a=setInterval(()=>{ce(),e(K)&&clearInterval(a)},200);setTimeout(()=>{clearInterval(a)},3e3)}}});async function X(){t(S,!0),t(u,""),t(c,"");try{const r=e(_).trim().replace(/\/+$/,"");localStorage.setItem("shooter_config",JSON.stringify({apiKey:e(o).trim(),deviceToken:e(y).trim(),lastUpdated:Date.now(),serverUrl:r||V()}));const a=H();a&&a.saveConfig?.(JSON.stringify({apiKey:e(o).trim(),serverUrl:r||V()})),(await fetch("/api/health")).ok?(t(u,"Configuration saved successfully"),t(c,"success")):(t(u,"Configuration saved but system health check failed"),t(c,"warning"))}catch(r){t(u,`Configuration failed: ${Y(r)}`),t(c,"error")}t(S,!1)}async function xe(){if(!e(o).trim()){t(u,"API key is required for testing"),t(c,"error");return}t(S,!0),t(u,""),t(c,"");try{const r={data:{source:"config-test",timestamp:Date.now()},message:`Configuration test at ${new Date().toLocaleTimeString()}`,title:"Configuration Test"};e(y).trim()&&(r.deviceToken=e(y).trim());const a=await fetch("/api/notify",{body:JSON.stringify(r),headers:{Authorization:`Bearer ${e(o)}`,"Content-Type":"application/json"},method:"POST"}),n=await a.json();a.ok?(t(u,"Test notification sent successfully"),t(c,"success")):(t(u,`Test failed: ${typeof n.error=="string"?n.error:"Unknown error"}`),t(c,"error"))}catch(r){t(u,`Network error: ${Y(r)}`),t(c,"error")}t(S,!1)}function Ie(){{localStorage.removeItem("shooter_config"),t(_,typeof window<"u"?window.location.origin:"",!0),t(o,""),t(y,""),t(u,"Configuration cleared"),t(c,"success");const r=H();r&&r.saveConfig?.(JSON.stringify({apiKey:"",serverUrl:""}))}}var ee=_t();je("1gp6n77",r=>{var a=tt();Ke(()=>{Oe.title="Settings - Shooter"}),l(r,a)});var le=d(ee),de=f(d(le),4),te=d(de),ve=d(te);W(ve,{title:"Server Configuration",description:"Configure server connection and credentials",children:(r,a)=>{var n=rt(),p=E(n);se(p,{name:"serverUrl",label:"Server URL",dataType:"text",placeholder:"https://shooter.breezehq.dev",infoMessage:"Base URL of your Shooter server. Apps will reload with this URL on next launch.",get value(){return e(_)},set value(C){t(_,C,!0)}});var I=f(p,2);se(I,{name:"apiKey",label:"API Key",dataType:"password",placeholder:"Enter your API key",infoMessage:"Required for sending notifications",get value(){return e(o)},set value(C){t(o,C,!0)}});var O=f(I,4);{let C=x(()=>e(U)?"Waiting for token...":"64-character hex string"),P=x(()=>e(U)&&e(y)?"Auto-detected from app":"Device token from app registration");se(O,{name:"deviceToken",label:"Device Token",dataType:"text",get placeholder(){return e(C)},get infoMessage(){return e(P)},classes:"input-mono",get value(){return e(y)},set value(A){t(y,A,!0)}})}Se(2),l(r,n)},$$slots:{default:!0}});var ue=f(ve,2);{var Pe=r=>{const a=x(()=>e(c)==="success"?"check-circle":e(c)==="error"?"x-circle":"alert-triangle");{const n=I=>{ie(I,{get name(){return e(a)},size:16})};let p=x(()=>e(c)||"info");Le(r,{get text(){return e(u)},get classes(){return`banner-${e(p)??""}`},icon:n,$$slots:{icon:!0}})}};Q(ue,r=>{e(u)&&r(Pe)})}var fe=f(ue,2),pe=d(fe);{let r=x(()=>e(S)||!e(o).trim());G(pe,{classes:"btn-secondary",onclick:xe,get disabled(){return e(r)},children:(a,n)=>{var p=at(),I=E(p);{var O=C=>{ie(C,{name:"play",size:14})};Q(I,C=>{e(S)||C(O)})}Se(),l(a,p)},$$slots:{default:!0}})}var Re=f(pe,2);{let r=x(()=>e(S)||!e(o).trim());G(Re,{classes:"btn-primary",onclick:X,get disabled(){return e(r)},get showLoader(){return e(S)},text:"Save Changes"})}i(fe),i(te);var ge=f(te,2),me=d(ge);W(me,{title:"Setup Guide",children:(r,a)=>{{let n=x(()=>e(o).trim()&&e(y).trim()?2:e(o).trim()?1:0);et(r,{steps:[{label:"Get API Key"},{label:"Find Device Token"},{label:"Test Connection"}],get currentStepIndex(){return e(n)},classes:"setup-stepper"})}},$$slots:{default:!0}});var he=f(me,2);{let r=x(()=>e(K)?"Scan a QR code to connect":"Scan to connect your mobile app");W(he,{title:"Mobile App Setup",get description(){return e(r)},children:(a,n)=>{var p=vt(),I=d(p);{var O=P=>{var A=nt(),m=f(E(A),2);{let w=x(()=>e(j)?"Scanning...":"Scan QR Code");G(m,{classes:"btn-secondary btn-sm",onclick:Ce,get disabled(){return e(j)},get text(){return e(w)}})}l(P,A)},C=P=>{var A=dt(),m=E(A);{var w=h=>{var b=st(),$=E(b),ae=d($);i($);var Te=f($,4);{var Ae=ne=>{var oe=ot(),ye=f(d(oe)),qe=d(ye,!0);i(ye),i(oe),R(()=>D(qe,e(q))),l(ne,oe)};Q(Te,ne=>{e(q)&&ne(Ae)})}R(()=>Je(ae,"src",e(T))),l(h,b)},N=h=>{var b=it();l(h,b)},z=h=>{var b=ct(),$=d(b,!0);i(b),R(()=>D($,e(B))),l(h,b)},F=h=>{var b=lt();l(h,b)};Q(m,h=>{e(T)?h(w):e(L)?h(N,1):e(B)?h(z,2):h(F,-1)})}var re=f(m,2);{let h=x(()=>e(L)||!e(o).trim()),b=x(()=>e(T)?"Regenerate QR Code":"Generate QR Code");G(re,{classes:"btn-secondary btn-sm",onclick:ke,get disabled(){return e(h)},get text(){return e(b)}})}l(P,A)};Q(I,P=>{e(K)?P(O):P(C,-1)})}i(p),l(a,p)},$$slots:{default:!0}})}var _e=f(he,2);W(_e,{title:"AI Providers",description:"NeuroLink-powered summaries and AI features",children:(r,a)=>{var n=mt(),p=d(n);we(p,17,()=>Fe,m=>m.id,(m,w)=>{var N=ut(),z=d(N);{let ae=x(()=>s.data.aiProviders[e(w).id]?"check-circle":"x-circle");ie(z,{get name(){return e(ae)},size:14})}var F=f(z,2),re=d(F,!0);i(F);var h=f(F,2);let b;var $=d(h,!0);i(h),i(N),R(()=>{D(re,e(w).label),b=Z(h,1,"provider-status svelte-1gp6n77",null,b,{configured:s.data.aiProviders[e(w).id]}),D($,s.data.aiProviders[e(w).id]?"configured":"not configured")}),l(m,N)});var I=f(p,2);{var O=m=>{var w=ft(),N=f(d(w)),z=d(N,!0);i(N),i(w),R(()=>D(z,s.data.activeProvider)),l(m,w)},C=m=>{var w=pt();l(m,w)},P=x(()=>Object.values(s.data.aiProviders).some(Boolean)),A=m=>{var w=gt();l(m,w)};Q(I,m=>{s.data.activeProvider?m(O):e(P)?m(C,1):m(A,-1)})}i(n),l(r,n)},$$slots:{default:!0}});var Ue=f(_e,2);W(Ue,{title:"Danger Zone",children:(r,a)=>{var n=ht(),p=f(E(n),2);G(p,{classes:"btn-danger btn-sm",onclick:Ie,text:"Clear Configuration"}),l(r,n)},$$slots:{default:!0}}),i(ge),i(de),i(le),i(ee),l(g,ee),Qe()}export{Ut as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as H,e as V,a as E,f as P,s as W}from"../chunks/DVl0sebP.js";import{W as X,s as n,A as Z,X as q,Y as z,g as t,b as s,Z as _,d as m,c as h,r as c,t as J}from"../chunks/CJFjKwJ7.js";import{i as K}from"../chunks/BfJ-f-Tu.js";import{e as S,I as Q,B as ee,i as te,P as I}from"../chunks/CNH2HlKj.js";import{a as ae}from"../chunks/DDiOVAd8.js";import{i as re}from"../chunks/BRkqKgVG.js";import{P as O}from"../chunks/pRcLbE0d.js";var se=P('<div class="provider-bar svelte-sjabew"></div>'),ie=P("<div> </div>"),oe=P('<div class="page svelte-sjabew"><header class="svelte-sjabew"><h1 class="svelte-sjabew">NeuroLink</h1> <span class="version svelte-sjabew">new NeuroLink()</span> <!></header> <!> <div class="log svelte-sjabew" id="log"></div> <div class="input-bar svelte-sjabew"><!> <!></div></div>');function fe(M,p){X(p,!0);const N="https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js";let u=n(null),g=n(null),b=n(Z([])),d=n(""),v=n(!1),f=n(!1),o=n("litellm");function i(e,a="info"){s(b,[...t(b),{text:e,type:a}],!0)}function R(){const e=globalThis.process;if(!e?.env)return;const a=e.env;p.data.litellmBaseUrl&&(a.LITELLM_BASE_URL=p.data.litellmBaseUrl),p.data.litellmModel&&(a.LITELLM_MODEL=p.data.litellmModel);const r=window.__aiProviders;r?.["google-ai"]&&(a.GOOGLE_AI_API_KEY="proxy-via-server"),r?.anthropic&&(a.ANTHROPIC_API_KEY="proxy-via-server"),r?.openai&&(a.OPENAI_API_KEY="proxy-via-server"),r?.mistral&&(a.MISTRAL_API_KEY="proxy-via-server")}q(async()=>{$(),re(),R(),i("Loading NeuroLink from CDN..."),i(N,"dim");try{s(u,await import(N),!0),i(`Loaded! ${Object.keys(t(u)??{}).length} exports`,"pass"),s(g,new(t(u)).NeuroLink({provider:t(o)}),!0),i(`NeuroLink ready · provider: ${t(o)}`,"pass"),s(f,!0)}catch(e){i(`Failed to load: ${e instanceof Error?e.message:String(e)}`,"fail")}});function D(e){!t(u)||e===t(o)||(s(o,e,!0),s(g,new(t(u)).NeuroLink({provider:e}),!0),i(`Switched to provider: ${e}`,"dim"))}function $(){typeof globalThis.process>"u"&&(globalThis.process={cwd:()=>"/",env:{},platform:"browser",version:"v24.0.0"}),typeof globalThis.global>"u"&&(globalThis.global=globalThis)}async function j(){if(!t(d).trim()||!t(g)||t(v))return;const e=t(d).trim();s(d,""),s(v,!0),i(`> ${e}`,"user");const a=O.find(r=>r.id===t(o));if(!a){s(v,!1);return}try{const r=await t(g).generate({input:{text:e},model:a.model,provider:a.id}),l=typeof r.content=="string"?r.content:"(empty response)",x=r.usage;i(l,"ai"),i(`${a.id}/${a.model} | ${x?.total??"?"} tokens`,"dim")}catch(r){i(`Error: ${r instanceof Error?r.message:String(r)}`,"fail")}s(v,!1)}function B(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),j())}var y=oe(),w=h(y),U=m(h(w),4);{var Y=e=>{I(e,{text:"Connected",classes:"pill-connected"})},C=e=>{I(e,{text:"Loading...",classes:"pill-loading"})};K(U,e=>{t(f)?e(Y):e(C,-1)})}c(w);var A=m(w,2);{var F=e=>{var a=se();S(a,21,()=>O,r=>r.id,(r,l)=>{{let x=_(()=>t(o)===t(l).id?"prov-pill--active":"");I(r,{get text(){return t(l).label},get classes(){return`prov-pill ${t(x)??""}`},onclick:()=>{D(t(l).id)}})}}),c(a),E(e,a)};K(A,e=>{t(f)&&e(F)})}var L=m(A,2);S(L,21,()=>t(b),te,(e,a)=>{var r=ie(),l=h(r,!0);c(r),J(()=>{ae(r,1,`log-entry ${t(a).type??""}`,"svelte-sjabew"),W(l,t(a).text)}),E(e,r)}),c(L);var k=m(L,2),T=h(k);{let e=_(()=>t(f)?`Ask anything... [${t(o)}]`:"Loading SDK...");Q(T,{name:"prompt",get placeholder(){return t(e)},classes:"input-prompt",get value(){return t(d)},set value(a){s(d,a,!0)}})}var G=m(T,2);{let e=_(()=>!t(f)||t(v)||!t(d).trim()),a=_(()=>t(v)?"...":"Send");ee(G,{classes:"btn-primary",onclick:j,get disabled(){return t(e)},get text(){return t(a)}})}c(k),c(y),V("keydown",k,B),E(M,y),z()}H(["keydown"]);export{fe as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as u,f as p,s as b}from"../chunks/DVl0sebP.js";import{W as We,s as w,A as Xe,X as Ye,_ as Qe,Y as et,$ as tt,g as e,b as c,a0 as at,c as i,d as l,r as o,Z as f,f as L,a1 as W,t as X}from"../chunks/CJFjKwJ7.js";import{i as j}from"../chunks/BfJ-f-Tu.js";import{a as st,e as de,i as rt,B as N,P as R,s as ot}from"../chunks/CNH2HlKj.js";import{h as it}from"../chunks/CsgHjHGZ.js";import{g as nt}from"../chunks/EhLZwqfu.js";import{p as ct}from"../chunks/y_g-KC7l.js";import{g as lt,s as dt,S as ve,c as vt}from"../chunks/CtrCjGZT.js";import{i as ut}from"../chunks/gQJcRhou.js";import{E as ue}from"../chunks/CaiJSUi3.js";import{I as ft}from"../chunks/CmczWE_d.js";import"../chunks/DDiOVAd8.js";import{f as pt}from"../chunks/BLszSzTT.js";var mt=p('<meta name="description" content="Project sessions sorted by latest update"/>'),ht=p('<div class="loading-container"><!> <!></div>'),_t=p('<div class="project-back-row svelte-urn6fi"><a href="/" class="back-link"><span class="back-arrow">←</span> Back to Projects</a></div> <!>',1),gt=p("<!> Refresh",1),yt=p('<div class="session-card-subtitle"> </div>'),bt=p('<span class="connect-dot svelte-urn6fi"></span> Connect',1),jt=p('<a class="session-card"><div class="session-card-header"><div><h3 class="session-card-title"> </h3> <!></div> <div class="session-card-actions svelte-urn6fi"><!> <!></div></div> <div class="session-stats"><span><strong> </strong> messages</span> <!> <!></div> <div class="session-meta-row svelte-urn6fi"><span class="session-modified svelte-urn6fi"> </span> <span class="session-duration svelte-urn6fi"> </span></div></a>'),$t=p('<div style="text-align: center; padding: 1rem;"><!></div>'),Pt=p('<div class="sessions-container svelte-urn6fi"></div> <!>',1),xt=p('<div class="chat-session-header"><div class="chat-session-header-top svelte-urn6fi"><a href="/" class="back-link">← Back to Projects</a> <!></div> <h1 class="chat-session-title"> </h1> <div class="chat-session-meta"><span class="session-card-subtitle"> </span> <span> </span></div></div> <!>',1),St=p('<main class="main"><!> <!></main>');function Ot(fe,pe){We(pe,!0);const me=15e3,D=20;let n=w(null),g=w(!0),m=w(null),E=w(null),K=null,k=w(D),Y=w(Xe([])),$=w(null);const P=f(()=>ct.url.searchParams.get("id")||""),he=f(()=>e(n)?e(n).sessions.slice(0,e(k)):[]),_e=f(()=>e(n)?e(k)<e(n).sessions.length:!1),ge=f(()=>new Set(e(Y).map(t=>t.sessionId).filter(t=>typeof t=="string")));Ye(()=>{ye();const t=lt(`shooter_project_${e(P)}`);t&&(c(n,t,!0),c(g,!1)),setTimeout(()=>{M(),O()},50),K=setInterval(()=>{e(m)?.apiKey&&e(P)&&(M(),O())},me)}),Qe(()=>{K&&(clearInterval(K),K=null)});function ye(){try{const t=localStorage.getItem("shooter_config");if(t){const a=JSON.parse(t);ut(a)?c(m,a,!0):(localStorage.removeItem("shooter_config"),c(m,null))}}catch{}}async function M(t=!1){if(!e(m)?.apiKey||!e(P)){c(g,!1);return}e(n)||c(g,!0);try{const d=await fetch(t?"/api/sessions?refresh=true":"/api/sessions",{headers:{Authorization:`Bearer ${e(m).apiKey}`}});if(!d.ok){c(E,`Failed to load project (HTTP ${d.status})`),c(g,!1);return}c(E,null);const h=(await d.json()).projects.find(C=>C.id===e(P))||null;c(n,h,!0),h&&dt(`shooter_project_${e(P)}`,h)}catch(a){console.error("Failed to fetch project:",a)}finally{c(g,!1)}}async function O(){if(e(m)?.apiKey)try{const t=await fetch("/api/sessions/detect",{headers:{Authorization:`Bearer ${e(m).apiKey}`}});if(t.ok){const a=await t.json();c(Y,a.processes,!0)}}catch{}}async function Q(t,a,d){if(t.preventDefault(),t.stopPropagation(),!(!e(m)?.apiKey||!e(n)||e($))){c($,a,!0);try{const v=await fetch("/api/sessions/connect",{body:JSON.stringify({command:d,cwd:e(n).fullPath,sessionId:a}),headers:{Authorization:`Bearer ${e(m).apiKey}`,"Content-Type":"application/json"},method:"POST"});if(v.ok){const h=await v.json();nt(`/terminals/${h.terminalId}`)}}catch(v){console.error("Failed to connect to session:",v)}finally{c($,null)}}}async function be(){c(g,!0),c(n,null),c(k,D),vt(`shooter_project_${e(P)}`),await M(!0),await O()}function je(){c(k,e(k)+D)}function ee(t){if(!t)return"";const a=new Date(t);return isNaN(a.getTime())?"":a.toLocaleDateString("en-US",{day:"numeric",hour:"2-digit",minute:"2-digit",month:"short"})}function $e(t,a){return t.length<=a?t:`${t.slice(0,a).trimEnd()}...`}var z=St();it("urn6fi",t=>{var a=mt();tt(()=>{at.title=`${(e(n)?.name||"Project")??""} - Shooter`}),u(t,a)});var te=i(z);{var Pe=t=>{st(t,{get text(){return e(E)},classes:"banner-error"})};j(te,t=>{e(E)&&t(Pe)})}var xe=l(te,2);{var Se=t=>{var a=ht(),d=i(a);ve(d,{classes:"shimmer-header"});var v=l(d,2);de(v,16,()=>Array(4),rt,(h,C)=>{ve(h,{classes:"shimmer-card"})}),o(a),u(t,a)},we=t=>{var a=_t(),d=l(L(a),2);ue(d,{icon:"alert-triangle",title:"Project Not Found",description:"The requested project could not be found."}),u(t,a)},ke=t=>{var a=xt(),d=L(a),v=i(d),h=l(i(v),2);N(h,{classes:"btn-secondary",onclick:be,get disabled(){return e(g)},children:(y,J)=>{var I=gt(),Z=L(I);ft(Z,{name:"refresh",size:14}),W(),u(y,I)},$$slots:{default:!0}}),o(v);var C=l(v,2),Ce=i(C,!0);o(C);var ae=l(C,2),F=i(ae),Ie=i(F,!0);o(F);var se=l(F,2),Te=i(se);o(se),o(ae),o(d);var Be=l(d,2);{var Ae=y=>{ue(y,{icon:"bell",title:"No sessions yet",description:"Sessions for this project will appear here"})},Ee=y=>{var J=Pt(),I=L(J);de(I,21,()=>e(he),x=>x.id,(x,r)=>{var T=jt(),B=i(T),q=i(B),G=i(q),Le=i(G,!0);o(G);var Ne=l(G,2);{var Re=s=>{var _=yt(),A=i(_,!0);o(_),X(S=>b(A,S),[()=>$e(e(r).summary,80)]),u(s,_)};j(Ne,s=>{e(r).summary&&s(Re)})}o(q);var re=l(q,2),oe=i(re);{let s=f(()=>pt(e(r).modified));R(oe,{get text(){return e(s)},classes:"pill-session-time"})}var De=l(oe,2);{var Me=s=>{{let _=f(()=>e($)===e(r).id),A=f(()=>e($)===e(r).id);N(s,{classes:"btn-connect btn-xs",onclick:S=>{Q(S,e(r).id,e(r).source==="opencode"?"opencode":"claude")},get disabled(){return e(_)},get showLoader(){return e(A)},children:(S,wt)=>{var Ve=bt();W(),u(S,Ve)},$$slots:{default:!0}})}},Oe=f(()=>e(ge).has(e(r).id)),ze=s=>{{let _=f(()=>e($)===e(r).id),A=f(()=>e($)===e(r).id);N(s,{classes:"btn-resume btn-xs",onclick:S=>{Q(S,e(r).id,e(r).source==="opencode"?"opencode":"claude")},get disabled(){return e(_)},get showLoader(){return e(A)},text:"Resume"})}};j(De,s=>{e(Oe)?s(Me):s(ze,-1)})}o(re),o(B);var H=l(B,2),U=i(H),ie=i(U),Fe=i(ie,!0);o(ie),W(),o(U);var ne=l(U,2);{var Je=s=>{R(s,{get text(){return`🌿 ${e(r).gitBranch??""}`},classes:"pill-git-branch"})};j(ne,s=>{e(r).gitBranch&&s(Je)})}var Ze=l(ne,2);{var qe=s=>{R(s,{text:"OpenCode",classes:"pill-source-opencode"})},Ge=s=>{R(s,{text:"Claude Code",classes:"pill-source-claude"})};j(Ze,s=>{e(r).source==="opencode"?s(qe):s(Ge,-1)})}o(H);var ce=l(H,2),V=i(ce),He=i(V);o(V);var le=l(V,2),Ue=i(le);o(le),o(ce),o(T),X((s,_)=>{ot(T,"href",`/session/${e(r).id??""}?project=${e(P)??""}`),b(Le,e(r).title),b(Fe,e(r).messageCount),b(He,`Last updated ${s??""}`),b(Ue,`Created ${_??""}`)},[()=>ee(e(r).modified),()=>ee(e(r).created)]),u(x,T)}),o(I);var Z=l(I,2);{var Ke=x=>{var r=$t(),T=i(r);{let B=f(()=>`Load More (${e(n).sessions.length-e(k)} remaining)`);N(T,{classes:"btn-secondary",onclick:je,get text(){return e(B)}})}o(r),u(x,r)};j(Z,x=>{e(_e)&&x(Ke)})}u(y,J)};j(Be,y=>{e(n).sessions.length===0?y(Ae):y(Ee,-1)})}X(()=>{b(Ce,e(n).name),b(Ie,e(n).fullPath),b(Te,`${e(n).sessionCount??""} sessions`)}),u(t,a)};j(xe,t=>{e(g)&&!e(n)?t(Se):e(n)?t(ke,-1):t(we,1)})}o(z),u(fe,z),et()}export{Ot as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as ge,a as w,f as y,s as L,
|
|
1
|
+
import{d as ge,a as w,f as y,s as L,e as we}from"../chunks/DVl0sebP.js";import{W as be,s as b,A as ye,X as _e,Y as Se,$ as $e,b as a,g as e,a0 as ke,c as h,r as v,Z as J,d as _,f as H,t as q}from"../chunks/CJFjKwJ7.js";import{i as F}from"../chunks/BfJ-f-Tu.js";import{h as Ie}from"../chunks/CsgHjHGZ.js";import{s as Q}from"../chunks/CNH2HlKj.js";import{p as G}from"../chunks/y_g-KC7l.js";import{g as je,s as ee,S as W}from"../chunks/CtrCjGZT.js";import"../chunks/DDiOVAd8.js";import{C as Ce}from"../chunks/CVtJ6yRM.js";var Oe=y('<meta name="description" content="Session conversation view" class="svelte-1a2wdfb"/>'),Me=y('<div class="loading-container svelte-1a2wdfb"><!> <div class="chat-container svelte-1a2wdfb"><!> <!> <!> <!></div></div>'),Ne=y('<div class="session-back-row svelte-1a2wdfb"><a class="back-link svelte-1a2wdfb">← Back</a></div> <p class="error-text svelte-1a2wdfb"> </p>',1),Ae=y('<span class="resume-status svelte-1a2wdfb">Connecting...</span>'),Pe=y('<span class="resume-status svelte-1a2wdfb">Resuming session...</span>'),Te=y('<span class="connection-dot connected svelte-1a2wdfb"></span>'),We=y('<span class="connection-dot reconnecting svelte-1a2wdfb"></span>'),Re=y('<div class="load-earlier-row svelte-1a2wdfb"><button class="load-earlier-btn svelte-1a2wdfb"> </button></div>'),De=y('<div class="session-header svelte-1a2wdfb"><div class="session-header-row svelte-1a2wdfb"><a class="back-link svelte-1a2wdfb">← Back</a> <!></div> <h1 class="session-title svelte-1a2wdfb"> </h1></div> <div class="session-chat-container svelte-1a2wdfb"><!> <!></div>',1),Be=y('<main class="main session-page-main svelte-1a2wdfb"><!></main>');function Ge(te,se){be(se,!0);let p=b(null),o=b(ye([])),I=b(!0),N=b(null),R=b(!1),A=b(!1),P=b(200),j=b(null),k=b("idle"),c=b("idle"),S=null,$=null,C=null,O=null,u=!1;const D=J(()=>G.params.id),M=J(()=>G.url.searchParams.get("project")||""),ne=J(()=>e(c)==="connecting"||e(c)==="resuming");function T(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}async function V(){const t=T();if(!t)return null;try{const s=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t.apiKey}`},method:"POST"});return s.ok?(await s.json()).ticket:null}catch{return null}}async function z(t,s){if(u||C&&(C.readyState===WebSocket.OPEN||C.readyState===WebSocket.CONNECTING))return;const n=await V();if(!n||u)return;a(k,"connecting");const i=window.location.protocol==="https:"?"wss:":"ws:",r=new WebSocket(`${i}//${window.location.host}${t}?ticket=${n}`);r.onopen=()=>{if(u){r.close();return}a(k,"connected"),r.send(JSON.stringify({sessionId:s,type:"subscribe"}))},r.onmessage=d=>{if(!u)try{const f=JSON.parse(d.data);ae(f)}catch{}},r.onclose=()=>{u||(a(k,"disconnected"),C=null,e(j)&&(O&&clearTimeout(O),O=setTimeout(()=>{O=null,!u&&e(j)&&z(`/ws/session/${e(j)}`,e(j))},2e3)))},r.onerror=()=>{u||a(k,"disconnected")},C=r}async function X(t){if(u)return;const s=await V();if(!s||u)return;const n=window.location.protocol==="https:"?"wss:":"ws:",i=new WebSocket(`${n}//${window.location.host}${t}?ticket=${s}`);i.onopen=()=>{if(u){i.close();return}$=i,e(c)==="ready"&&S&&(i.send(JSON.stringify({data:`${S}
|
|
2
2
|
`,type:"input"})),S=null)},i.onclose=()=>{$===i&&($=null)}}function ae(t){if(t.type==="history"){const s=t.messages||[];a(o,s.map(n=>({id:n.id,parts:n.content,role:n.role,timestamp:n.timestamp})),!0),a(R,!1),e(c)==="resuming"&&(a(c,"ready"),S&&$?.readyState===WebSocket.OPEN&&($.send(JSON.stringify({data:`${S}
|
|
3
|
-
`,type:"input"})),S=null))}else if(t.type==="message")a(o,[...e(o),{id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:t.content||[],role:t.role||"assistant",timestamp:t.timestamp||new Date().toISOString()}],!0);else if(t.type==="tool-use"){const s={id:t.id||`tool-${Date.now()}`,input:t.input||{},toolName:t.name,type:"tool_use"},n=e(o).length>0?e(o)[e(o).length-1]:null;n?.role==="assistant"?a(o,[...e(o).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):a(o,[...e(o),{id:`tool-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()}],!0)}else if(t.type==="tool-result"){const s={isError:t.isError||!1,output:t.output||"",toolUseId:t.id,type:"tool_result"},n=e(o).length>0?e(o)[e(o).length-1]:null;n?.role==="system"?a(o,[...e(o).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):a(o,[...e(o),{id:`result-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"system",timestamp:new Date().toISOString()}],!0)}else if(t.type==="thinking"){const s={content:t.text||"",type:"thinking"},n=e(o).length>0?e(o)[e(o).length-1]:null;n?.role==="assistant"?a(o,[...e(o).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):a(o,[...e(o),{id:`think-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()}],!0)}else t.type==="session-end"&&a(c,"idle")}async function oe(){if(!e(p)||u){a(c,"idle");return}const t=T();if(!t){a(c,"idle");return}a(c,"connecting");try{const s=e(p).source==="opencode"?"opencode":"claude",n=await fetch("/api/sessions/connect",{body:JSON.stringify({command:s,cwd:e(p).projectPath,sessionId:e(
|
|
4
|
-
`,type:"input"}));return}if(e(c)==="connecting"||e(c)==="resuming"){S=t;return}S=t,oe()}}async function re(){e(o).length===0&&a(I,!0);try{const t=T();if(!t){a(N,"No configuration found. Please configure settings first."),a(I,!1);return}const s=e(
|
|
3
|
+
`,type:"input"})),S=null))}else if(t.type==="message")a(o,[...e(o),{id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:t.content||[],role:t.role||"assistant",timestamp:t.timestamp||new Date().toISOString()}],!0);else if(t.type==="tool-use"){const s={id:t.id||`tool-${Date.now()}`,input:t.input||{},toolName:t.name,type:"tool_use"},n=e(o).length>0?e(o)[e(o).length-1]:null;n?.role==="assistant"?a(o,[...e(o).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):a(o,[...e(o),{id:`tool-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()}],!0)}else if(t.type==="tool-result"){const s={isError:t.isError||!1,output:t.output||"",toolUseId:t.id,type:"tool_result"},n=e(o).length>0?e(o)[e(o).length-1]:null;n?.role==="system"?a(o,[...e(o).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):a(o,[...e(o),{id:`result-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"system",timestamp:new Date().toISOString()}],!0)}else if(t.type==="thinking"){const s={content:t.text||"",type:"thinking"},n=e(o).length>0?e(o)[e(o).length-1]:null;n?.role==="assistant"?a(o,[...e(o).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):a(o,[...e(o),{id:`think-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()}],!0)}else t.type==="session-end"&&a(c,"idle")}async function oe(){if(!e(p)||u){a(c,"idle");return}const t=T();if(!t){a(c,"idle");return}a(c,"connecting");try{const s=e(p).source==="opencode"?"opencode":"claude",n=await fetch("/api/sessions/connect",{body:JSON.stringify({command:s,cwd:e(p).projectPath,sessionId:e(D)}),headers:{Authorization:`Bearer ${t.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(!n.ok||u){a(c,"idle");return}const i=await n.json();a(j,i.terminalId,!0),a(c,"resuming"),z(i.sessionWs,i.terminalId),X(i.ws)}catch{a(c,"idle")}}function ie(t){if(t.trim()){if(e(c)==="ready"&&$?.readyState===WebSocket.OPEN){$.send(JSON.stringify({data:`${t}
|
|
4
|
+
`,type:"input"}));return}if(e(c)==="connecting"||e(c)==="resuming"){S=t;return}S=t,oe()}}async function re(){e(o).length===0&&a(I,!0);try{const t=T();if(!t){a(N,"No configuration found. Please configure settings first."),a(I,!1);return}const s=e(D)||"",n=e(M)||"",i=n?`id=${encodeURIComponent(s)}&project=${encodeURIComponent(n)}&limit=${e(P)}`:`id=${encodeURIComponent(s)}&limit=${e(P)}`;let r=await fetch(`/api/sessions?${i}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(r.status===404&&!n){const g=await fetch("/api/sessions",{headers:{Authorization:`Bearer ${t.apiKey}`}});if(g.ok){const x=await g.json();for(const B of x.projects||[])if((B.sessions||[]).find(U=>U.id===s)){r=await fetch(`/api/sessions?id=${encodeURIComponent(s)}&project=${encodeURIComponent(B.id)}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});break}}}if(!r.ok){a(N,"Session not found"),a(I,!1);return}const d=await r.json();a(p,d.session,!0);const f=Array.isArray(d.messages)?d.messages:[];a(o,f,!0),a(R,f.length>=e(P)),ee(`shooter_session_${s}`,{messages:f,session:d.session})}catch{a(N,"Failed to load session")}a(I,!1)}async function ce(){if(e(A))return;const t=T();if(t){a(A,!0);try{const s=e(P)+200,n=e(D)||"",i=e(M)||"",r=[`id=${encodeURIComponent(n)}`,`limit=${s}`];i&&r.push(`project=${encodeURIComponent(i)}`);const d=await fetch(`/api/sessions?${r.join("&")}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(!d.ok)return;const f=await d.json(),g=Array.isArray(f.messages)?f.messages:[];a(o,g,!0),a(P,s),a(R,g.length>=s),ee(`shooter_session_${n}`,{messages:g,session:f.session})}catch{}finally{a(A,!1)}}}_e(()=>{const t=je(`shooter_session_${G.params.id}`);return t&&(a(p,t.session,!0),a(o,Array.isArray(t.messages)?t.messages:[],!0),a(I,!1)),re().then(async()=>{if(!e(p)||u)return;const s=T();if(s)try{const n=e(p).source==="opencode"?"opencode":"claude",i=await fetch("/api/sessions/connect",{body:JSON.stringify({command:n,cwd:e(p).projectPath,noCreate:!0,sessionId:e(D)}),headers:{Authorization:`Bearer ${s.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(i.ok&&!u){const r=await i.json();a(j,r.terminalId,!0),a(c,"resuming"),z(r.sessionWs,r.terminalId),X(r.ws)}}catch{}}),()=>{u=!0,O&&clearTimeout(O),C?.close(),$?.close()}});var K=Be();Ie("1a2wdfb",t=>{var s=Oe();$e(()=>{ke.title=`${(e(p)?.title||"Session")??""} - Shooter`}),w(t,s)});var le=h(K);{var de=t=>{var s=Me(),n=h(s);W(n,{classes:"shimmer-header"});var i=_(n,2),r=h(i);W(r,{classes:"shimmer-bubble shimmer-bubble-user"});var d=_(r,2);W(d,{classes:"shimmer-bubble shimmer-bubble-assistant"});var f=_(d,2);W(f,{classes:"shimmer-bubble shimmer-bubble-user-short"});var g=_(f,2);W(g,{classes:"shimmer-bubble shimmer-bubble-assistant-wide"}),v(i),v(s),w(t,s)},ue=t=>{var s=Ne(),n=H(s),i=h(n);v(n);var r=_(n,2),d=h(r,!0);v(r),q(()=>{Q(i,"href",e(M)?`/project?id=${e(M)}`:"/"),L(d,e(N))}),w(t,s)},fe=t=>{var s=De(),n=H(s),i=h(n),r=h(i),d=_(r,2);{var f=l=>{var m=Ae();w(l,m)},g=l=>{var m=Pe();w(l,m)},x=l=>{var m=Te();w(l,m)},B=l=>{var m=We();w(l,m)};F(d,l=>{e(c)==="connecting"?l(f):e(c)==="resuming"?l(g,1):e(k)==="connected"?l(x,2):e(k)==="reconnecting"&&l(B,3)})}v(i);var U=_(i,2),pe=h(U,!0);v(U),v(n);var Y=_(n,2),Z=h(Y);{var me=l=>{var m=Re(),E=h(m),ve=h(E,!0);v(E),v(m),q(()=>{E.disabled=e(A),L(ve,e(A)?"Loading...":"Load earlier messages")}),we("click",E,ce),w(l,m)};F(Z,l=>{e(R)&&l(me)})}var he=_(Z,2);{let l=J(()=>[...e(o)].reverse());Ce(he,{get messages(){return e(l)},newestFirst:!0,get connectionState(){return e(k)},showInput:!0,get sendDisabled(){return e(ne)},onSendInput:ie,sessionEnded:!1})}v(Y),q(()=>{Q(r,"href",e(M)?`/project?id=${e(M)}`:"/"),L(pe,e(p).title)}),w(t,s)};F(le,t=>{e(I)&&e(o).length===0?t(de):e(N)?t(ue,1):e(p)&&t(fe,2)})}v(K),w(te,K),Se()}ge(["click"]);export{Ge as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as Ye,c as Qe,i as Ve,a as u,t as Xe,s as A,e as Ge,f as g}from"../chunks/DVl0sebP.js";import{W as je,s as y,A as ze,X as Be,b as i,g as e,a8 as Ue,f as ke,Y as De,c as r,d as l,a1 as pe,t as F,Z as S,r as s,_ as et,q as tt,a0 as at}from"../chunks/CJFjKwJ7.js";import{i as K}from"../chunks/BfJ-f-Tu.js";import{e as ue,C as st,S as rt,I as nt,B as W,a as Me,i as lt,P as Se,T as Ee,s as Ne}from"../chunks/CNH2HlKj.js";import{h as it}from"../chunks/CsgHjHGZ.js";import{a as ot,c as ct}from"../chunks/DDiOVAd8.js";import{g as Oe}from"../chunks/EhLZwqfu.js";import{c as dt,s as Ie,g as vt,S as pt}from"../chunks/CtrCjGZT.js";import{i as ut}from"../chunks/gQJcRhou.js";import{E as Ke}from"../chunks/CaiJSUi3.js";import{I as mt}from"../chunks/CmczWE_d.js";import{f as Pe}from"../chunks/BLszSzTT.js";var ft=g('<div class="overlay svelte-plslui" role="presentation"><div class="sheet svelte-plslui" role="dialog" aria-modal="true" aria-label="New Terminal"><div class="handle-bar svelte-plslui"><div class="handle svelte-plslui"></div></div> <h2 class="sheet-title svelte-plslui">New Terminal</h2> <div class="section svelte-plslui"><span class="section-label svelte-plslui">Quick Launch</span> <div class="preset-grid svelte-plslui"></div></div> <div class="section svelte-plslui"><span class="section-label svelte-plslui">Working Directory</span> <!> <div class="custom-cwd-group svelte-plslui"><!></div></div> <!> <!></div></div>');function ht(me,C){je(C,!0);const Y=[{args:[],command:"claude",label:"Claude Code"},{args:[],command:"opencode",label:"OpenCode"},{args:[],command:"zsh",label:"Shell / zsh"},{args:[],command:"bash",label:"Bash"}];let P=y(0),k=y(ze([])),L=y(""),m=y(""),_=y(!1),E=y("");Be(()=>{j()});async function j(){try{const c=await fetch("/api/sessions?limit=50&offset=0",{headers:{Authorization:`Bearer ${C.apiKey}`}});if(!c.ok)return;const I=(await c.json()).projects.map(h=>h.fullPath).filter(h=>typeof h=="string"&&h.length>0);i(k,[...new Set(I)],!0),e(k).length>0&&!e(L)&&i(L,e(k)[0],!0)}catch{}}function w(c){i(P,c,!0)}function R(){return Y[e(P)].command}function fe(){return Y[e(P)].args}function he(){const c=e(m).trim();return c||(e(L)?e(L):"/tmp")}async function ge(){const c=R();if(c){i(_,!0),i(E,"");try{const b=await fetch("/api/terminals",{body:JSON.stringify({args:fe(),command:c,cwd:he()||void 0}),headers:{Authorization:`Bearer ${C.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(!b.ok){const h=await b.json().catch(()=>({}));i(E,(typeof h.error=="string"?h.error:"")||`Failed to launch (${b.status})`,!0);return}const I=await b.json();C.onLaunch(I)}catch{i(E,"Network error — is the server running?")}finally{i(_,!1)}}}function Q(c){c.target===c.currentTarget&&C.onClose()}function _e(c){C.open&&c.key==="Escape"&&C.onClose()}var ie=Qe();Ve("keydown",Ue,_e);var H=ke(ie);{var oe=c=>{var b=ft(),I=r(b),h=l(r(I),4),V=l(r(h),2);ue(V,23,()=>Y,v=>v.label,(v,Z,$)=>{{let be=S(()=>e(P)===e($));st(v,{mode:"radio",get selected(){return e(be)},onclick:()=>{w(e($))},classes:"preset-choice",children:(ce,Le)=>{pe();var de=Xe();F(()=>A(de,e(Z).label)),u(ce,de)},$$slots:{default:!0}})}}),s(V),s(h);var X=l(h,2),G=l(r(X),2);{let v=S(()=>e(k).length>0?e(k).map($=>({id:$,label:$})):[{id:"",label:"No recent projects"}]),Z=S(()=>e(L)?[e(L)]:e(k).length>0?[e(k)[0]]:[""]);rt(G,{get items(){return e(v)},get value(){return e(Z)},placeholder:"Select a project",onchange:$=>{i(L,$[0]||"",!0)},classes:"launch-select"})}var U=l(G,2),we=r(U);nt(we,{label:"Or enter a custom path",dataType:"text",placeholder:"/path/to/project",classes:"input-mono launch-input",get value(){return e(m)},set value(v){i(m,v,!0)}}),s(U),s(X);var ee=l(X,2);{let v=S(()=>e(_)?"Launching...":"Launch Terminal");W(ee,{classes:"btn-launch",get disabled(){return e(_)},onclick:ge,get showLoader(){return e(_)},get text(){return e(v)}})}var te=l(ee,2);{var ae=v=>{Me(v,{get text(){return e(E)},classes:"banner-error launch-error-banner"})};K(te,v=>{e(E)&&v(ae)})}s(I),s(b),Ge("click",b,Q),u(c,b)};K(H,c=>{C.open&&c(oe)})}u(me,ie),De()}Ye(["click"]);var gt=g('<meta name="description" content="Active terminal sessions on this machine" class="svelte-1ewpmn2"/>'),_t=g("<!> Refresh",1),wt=g('<span class="plus-icon svelte-1ewpmn2">+</span> New Terminal',1),bt=g('<div class="loading-container svelte-1ewpmn2"></div>'),xt=g('<span class="plus-icon svelte-1ewpmn2">+</span> New Terminal',1),yt=g('<span class="terminal-cwd svelte-1ewpmn2"> </span>'),Ct=g('<div class="terminal-preview svelte-1ewpmn2"><span class="terminal-preview-text svelte-1ewpmn2"> </span></div>'),$t=g('<a class="terminal-card svelte-1ewpmn2"><div class="terminal-card-header svelte-1ewpmn2"><div class="terminal-card-left svelte-1ewpmn2"><span class="status-indicator status-running svelte-1ewpmn2"><span></span></span> <span class="terminal-command svelte-1ewpmn2"> </span> <!></div> <span class="terminal-time svelte-1ewpmn2"> </span></div> <div class="terminal-card-meta svelte-1ewpmn2"><!> <span class="terminal-pid svelte-1ewpmn2"> </span></div> <!></a>'),Tt=g('<span class="terminal-cwd svelte-1ewpmn2"> </span>'),At=g('<div class="terminal-preview svelte-1ewpmn2"><span class="terminal-preview-text svelte-1ewpmn2"> </span></div>'),St=g('<a class="terminal-card terminal-card-exited svelte-1ewpmn2"><div class="terminal-card-header svelte-1ewpmn2"><div class="terminal-card-left svelte-1ewpmn2"><span class="status-indicator status-exited svelte-1ewpmn2"><span class="status-dot-static svelte-1ewpmn2"></span></span> <span class="terminal-command svelte-1ewpmn2"> </span> <!> <!></div> <div class="terminal-card-right svelte-1ewpmn2"><span class="terminal-time svelte-1ewpmn2"> </span> <!></div></div> <div class="terminal-card-meta svelte-1ewpmn2"><!></div> <!></a>'),Pt=g('<div class="terminals-container svelte-1ewpmn2"><!> <!></div>'),kt=g('<main class="main svelte-1ewpmn2"><div class="page-header svelte-1ewpmn2"><div class="page-header-content svelte-1ewpmn2"><div class="svelte-1ewpmn2"><h1 class="page-title svelte-1ewpmn2">Terminals</h1> <p class="page-description svelte-1ewpmn2">Active terminal sessions on this machine</p></div> <div class="page-actions svelte-1ewpmn2"><!> <!></div></div></div> <!> <!></main> <!>',1);function Rt(me,C){je(C,!0);const Y=1e4,P="shooter_terminals",k=["claude","opencode"],L=["zsh","bash","sh","fish"];let m=y(ze([])),_=y(!1),E=!1,j=y(null),w=y(null),R=null;const fe=S(()=>e(m).filter(t=>t.status==="running")),he=S(()=>e(m).filter(t=>t.status==="exited"));Be(()=>{ge();const t=vt(P,1e4);t&&(i(m,t,!0),i(_,!1)),Q(),R=setInterval(()=>{e(w)?.apiKey&&Q()},Y)}),et(()=>{R&&(clearInterval(R),R=null)});function ge(){try{const t=localStorage.getItem("shooter_config");if(t){const a=JSON.parse(t);ut(a)?i(w,a,!0):(localStorage.removeItem("shooter_config"),i(w,null))}}catch{}}async function Q(){if(!(!e(w)?.apiKey||E)){E=!0,e(m).length===0&&i(_,!0);try{const a=await fetch("/api/terminals",{headers:{Authorization:`Bearer ${e(w).apiKey}`}});if(!a.ok){i(j,`Failed to load terminals (HTTP ${a.status})`);return}i(j,null);const o=await a.json();i(m,o.terminals.map(f=>({...f,lastOutput:f.lastOutput??null})),!0),Ie(P,e(m))}catch(t){i(j,"Failed to load terminals"),console.error("Failed to fetch terminals:",t)}finally{i(_,!1),E=!1}}}async function _e(){i(_,!0),dt(P),await Q()}function ie(){Oe("/config")}let H=y(!1);function oe(){i(H,!0)}function c(){i(H,!1)}function b(t){i(H,!1),Oe(`/terminals/${t.id}`)}function I(t){const a=t.split("/").pop()||t;return k.includes(a)?"ai":(L.includes(a),"shell")}function h(t){return t.status==="exited"?{class:"pill-badge-ended",label:"ENDED"}:I(t.command)==="ai"?{class:"pill-badge-ai",label:"AI"}:{class:"pill-badge-shell",label:"SHELL"}}function V(t,a=40){if(t.length<=a)return t;const o=t.split("/");return o.length<=3?t:`${o[0]}/.../${o.slice(-2).join("/")}`}function X(t){return t.replace(/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\x1b\[[\?]?[0-9;]*[a-zA-Z]|\x1b/g,"").replace(/[\x00-\x1f]/g,"").trim()}function G(t,a=80){if(!t)return"";const o=t.split(`
|
|
2
|
+
`).map(x=>X(x)).filter(x=>x.trim()),f=o[o.length-1]||"";return f.length<=a?f:`${f.slice(0,a)}...`}function U(t){return t.split("/").pop()||t}async function we(t,a){if(t.preventDefault(),t.stopPropagation(),!!e(w)?.apiKey)try{(await fetch(`/api/terminals/${a}`,{headers:{Authorization:`Bearer ${e(w).apiKey}`},method:"DELETE"})).ok&&(i(m,e(m).filter(f=>f.id!==a),!0),Ie(P,e(m)))}catch(o){console.error("Failed to remove terminal:",o)}}var ee=kt();it("1ewpmn2",t=>{var a=gt();tt(()=>{at.title="Terminals - Shooter"}),u(t,a)});var te=ke(ee),ae=r(te),v=r(ae),Z=l(r(v),2),$=r(Z);W($,{classes:"btn-secondary",onclick:_e,get disabled(){return e(_)},children:(t,a)=>{var o=_t(),f=ke(o);mt(f,{name:"refresh",size:14}),pe(),u(t,o)},$$slots:{default:!0}});var be=l($,2);W(be,{classes:"btn-primary",onclick:oe,children:(t,a)=>{var o=wt();pe(),u(t,o)},$$slots:{default:!0}}),s(Z),s(v),s(ae);var ce=l(ae,2);{var Le=t=>{Me(t,{get text(){return e(j)},classes:"banner-error"})};K(ce,t=>{e(j)&&t(Le)})}var de=l(ce,2);{var Fe=t=>{var a=bt();ue(a,20,()=>Array(4),lt,(o,f)=>{pt(o,{classes:"shimmer-card"})}),s(a),u(t,a)},Re=t=>{Ke(t,{icon:"settings",title:"Configuration Required",description:"Set up your API credentials to view terminal sessions",children:(a,o)=>{W(a,{classes:"btn-primary",onclick:ie,text:"Configure Settings"})}})},He=t=>{Ke(t,{icon:"terminal",title:"No terminals",description:"Launch a new terminal session to get started. Terminal sessions will appear here once created.",children:(a,o)=>{W(a,{classes:"btn-primary",onclick:oe,children:(f,x)=>{var n=xt();pe(),u(f,n)},$$slots:{default:!0}})}})},Ze=t=>{var a=Pt(),o=r(a);ue(o,17,()=>e(fe),x=>x.id,(x,n)=>{const se=S(()=>h(e(n)));var N=$t(),z=r(N),B=r(z),D=r(B),xe=r(D);s(D);var q=l(D,2),ye=r(q,!0);s(q);var Ce=l(q,2);Se(Ce,{get text(){return e(se).label},get classes(){return e(se).class}}),s(B);var re=l(B,2),ne=r(re,!0);s(re),s(z);var le=l(z,2),ve=r(le);{let d=S(()=>e(n).currentCwd||e(n).cwd);Ee(ve,{get text(){return e(d)},position:"bottom",children:(p,T)=>{var O=yt(),M=r(O,!0);s(O),F(We=>A(M,We),[()=>V(e(n).currentCwd||e(n).cwd)]),u(p,O)},$$slots:{default:!0}})}var J=l(ve,2),$e=r(J);s(J),s(le);var Te=l(le,2);{var Ae=d=>{var p=Ct(),T=r(p),O=r(T,!0);s(T),s(p),F(M=>A(O,M),[()=>G(e(n).lastOutput)]),u(d,p)};K(Te,d=>{e(n).lastOutput&&d(Ae)})}s(N),F((d,p)=>{Ne(N,"href",`/terminals/${e(n).id??""}`),ot(xe,1,ct(e(n).isActive?"status-dot-active":"status-dot-idle"),"svelte-1ewpmn2"),A(ye,d),A(ne,p),A($e,`PID ${e(n).pid??""}`)},[()=>U(e(n).command),()=>Pe(e(n).createdAt)]),u(x,N)});var f=l(o,2);ue(f,17,()=>e(he),x=>x.id,(x,n)=>{const se=S(()=>h(e(n)));var N=St(),z=r(N),B=r(z),D=l(r(B),2),xe=r(D,!0);s(D);var q=l(D,2);Se(q,{get text(){return e(se).label},get classes(){return e(se).class}});var ye=l(q,2);{var Ce=d=>{{let p=S(()=>e(n).exitCode!==0?"pill-exit-error":"pill-exit-ok");Se(d,{get text(){return`exit ${e(n).exitCode??""}`},get classes(){return e(p)}})}};K(ye,d=>{e(n).exitCode!==null&&d(Ce)})}s(B);var re=l(B,2),ne=r(re),le=r(ne,!0);s(ne);var ve=l(ne,2);W(ve,{classes:"btn-ghost btn-sm btn-remove",onclick:d=>{we(d,e(n).id)},text:"×"}),s(re),s(z);var J=l(z,2),$e=r(J);Ee($e,{get text(){return e(n).cwd},position:"bottom",children:(d,p)=>{var T=Tt(),O=r(T,!0);s(T),F(M=>A(O,M),[()=>V(e(n).cwd)]),u(d,T)},$$slots:{default:!0}}),s(J);var Te=l(J,2);{var Ae=d=>{var p=At(),T=r(p),O=r(T,!0);s(T),s(p),F(M=>A(O,M),[()=>G(e(n).lastOutput)]),u(d,p)};K(Te,d=>{e(n).lastOutput&&d(Ae)})}s(N),F((d,p)=>{Ne(N,"href",`/terminals/${e(n).id??""}`),A(xe,d),A(le,p)},[()=>U(e(n).command),()=>e(n).exitedAt?Pe(e(n).exitedAt):Pe(e(n).createdAt)]),u(x,N)}),s(a),u(t,a)};K(de,t=>{e(_)&&e(m).length===0?t(Fe):e(w)?.apiKey?e(m).length===0?t(He,2):t(Ze,-1):t(Re,1)})}s(te);var qe=l(te,2);{var Je=t=>{ht(t,{get open(){return e(H)},get apiKey(){return e(w).apiKey},onClose:c,onLaunch:b})};K(qe,t=>{e(w)?.apiKey&&t(Je)})}u(me,ee),De()}export{Rt as component};
|
|
Binary file
|
|
Binary file
|