@juspay/shooter 1.20.0 → 1.22.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/.claude/hooks/notifier.cjs +94 -1
- package/build/client/_app/immutable/assets/2.JWRrnR-w.css +1 -0
- package/build/client/_app/immutable/assets/2.JWRrnR-w.css.br +0 -0
- package/build/client/_app/immutable/assets/2.JWRrnR-w.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{ZS5XYDx_.js → B1bOvemT.js} +1 -1
- package/build/client/_app/immutable/chunks/B1bOvemT.js.br +0 -0
- package/build/client/_app/immutable/chunks/{ZS5XYDx_.js.gz → B1bOvemT.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/BfbPKMXz.js +3 -0
- package/build/client/_app/immutable/chunks/BfbPKMXz.js.br +0 -0
- package/build/client/_app/immutable/chunks/BfbPKMXz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4Hns_Wl.js +1 -0
- package/build/client/_app/immutable/chunks/C4Hns_Wl.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4Hns_Wl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C87ZRWX0.js +1 -0
- package/build/client/_app/immutable/chunks/C87ZRWX0.js.br +0 -0
- package/build/client/_app/immutable/chunks/C87ZRWX0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BvmdJful.js → CJulw9ux.js} +1 -1
- package/build/client/_app/immutable/chunks/CJulw9ux.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJulw9ux.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DT4H19pV.js → CZg4kn4E.js} +1 -1
- package/build/client/_app/immutable/chunks/CZg4kn4E.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZg4kn4E.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DIZ3Qst5.js → DhK7PwI_.js} +1 -1
- package/build/client/_app/immutable/chunks/DhK7PwI_.js.br +0 -0
- package/build/client/_app/immutable/chunks/{DIZ3Qst5.js.gz → DhK7PwI_.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/{ClIPTXf3.js → DomZZqvG.js} +1 -1
- package/build/client/_app/immutable/chunks/DomZZqvG.js.br +0 -0
- package/build/client/_app/immutable/chunks/DomZZqvG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BB2l8o4X.js → i5iZvmIH.js} +1 -1
- package/build/client/_app/immutable/chunks/i5iZvmIH.js.br +0 -0
- package/build/client/_app/immutable/chunks/i5iZvmIH.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.Bd-DfeJi.js → app.CTqz33nP.js} +2 -2
- package/build/client/_app/immutable/entry/app.CTqz33nP.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CTqz33nP.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dj-Kvgwo.js +1 -0
- package/build/client/_app/immutable/entry/start.Dj-Kvgwo.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Dj-Kvgwo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Qn7Ktiht.js +10 -0
- package/build/client/_app/immutable/nodes/0.Qn7Ktiht.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Qn7Ktiht.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.DT4dq6Ay.js → 1.BxWOfNlo.js} +1 -1
- package/build/client/_app/immutable/nodes/1.BxWOfNlo.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BxWOfNlo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{10.CF7RGXpe.js → 10.BGPYD1s1.js} +1 -1
- package/build/client/_app/immutable/nodes/10.BGPYD1s1.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.BGPYD1s1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{11.BV_G7yLI.js → 11.BxY1PUjC.js} +1 -1
- package/build/client/_app/immutable/nodes/11.BxY1PUjC.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.BxY1PUjC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Bc2qALkX.js +23 -0
- package/build/client/_app/immutable/nodes/2.Bc2qALkX.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Bc2qALkX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.0MMe3oxR.js → 3.N2-A8noI.js} +1 -1
- package/build/client/_app/immutable/nodes/3.N2-A8noI.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.N2-A8noI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.CBX9A3ka.js → 4.BFYS2g9C.js} +3 -3
- package/build/client/_app/immutable/nodes/4.BFYS2g9C.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BFYS2g9C.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.DIVKuZc9.js → 5.DziEu9rx.js} +1 -1
- package/build/client/_app/immutable/nodes/5.DziEu9rx.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DziEu9rx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.ComiWlV6.js → 6.BWF9Qx6F.js} +1 -1
- package/build/client/_app/immutable/nodes/6.BWF9Qx6F.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BWF9Qx6F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.vkPx1kVP.js → 7.DHuDIdpz.js} +1 -1
- package/build/client/_app/immutable/nodes/7.DHuDIdpz.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DHuDIdpz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.Bmr3sWbS.js → 8.D0Ijt9Vv.js} +1 -1
- package/build/client/_app/immutable/nodes/8.D0Ijt9Vv.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.D0Ijt9Vv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.CAJucyeI.js → 9.2Piwo35J.js} +1 -1
- package/build/client/_app/immutable/nodes/9.2Piwo35J.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.2Piwo35J.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/pty-holder.cjs +6 -0
- package/build/server/chunks/{0-DDGB6CRT.js → 0-CVGsyVKN.js} +4 -2
- package/build/server/chunks/0-CVGsyVKN.js.map +1 -0
- package/build/server/chunks/{1-DEjonQXD.js → 1-BAlAsKdp.js} +2 -2
- package/build/server/chunks/{1-DEjonQXD.js.map → 1-BAlAsKdp.js.map} +1 -1
- package/build/server/chunks/{10-BK1kiiiw.js → 10-BUCX7Aqz.js} +2 -2
- package/build/server/chunks/{10-BK1kiiiw.js.map → 10-BUCX7Aqz.js.map} +1 -1
- package/build/server/chunks/{11-CJPjkEF3.js → 11-DHPvc2yA.js} +2 -2
- package/build/server/chunks/{11-CJPjkEF3.js.map → 11-DHPvc2yA.js.map} +1 -1
- package/build/server/chunks/{2-RLnhlWh5.js → 2-DLOMdCHW.js} +4 -4
- package/build/server/chunks/{2-RLnhlWh5.js.map → 2-DLOMdCHW.js.map} +1 -1
- package/build/server/chunks/{3-Dd4pJBqZ.js → 3-DCf69LYo.js} +2 -2
- package/build/server/chunks/{3-Dd4pJBqZ.js.map → 3-DCf69LYo.js.map} +1 -1
- package/build/server/chunks/{4-Bb5VFhsO.js → 4-D92KnTmb.js} +3 -3
- package/build/server/chunks/{4-Bb5VFhsO.js.map → 4-D92KnTmb.js.map} +1 -1
- package/build/server/chunks/{5-oNoWuIsn.js → 5-D-Uv1voC.js} +2 -2
- package/build/server/chunks/{5-oNoWuIsn.js.map → 5-D-Uv1voC.js.map} +1 -1
- package/build/server/chunks/{6-DdRMnKNa.js → 6-DUrC2Naz.js} +2 -2
- package/build/server/chunks/{6-DdRMnKNa.js.map → 6-DUrC2Naz.js.map} +1 -1
- package/build/server/chunks/{7-vLOMMetm.js → 7-TXwjMHt2.js} +2 -2
- package/build/server/chunks/{7-vLOMMetm.js.map → 7-TXwjMHt2.js.map} +1 -1
- package/build/server/chunks/{8-rJyiQLFs.js → 8-D2X_jBsT.js} +2 -2
- package/build/server/chunks/{8-rJyiQLFs.js.map → 8-D2X_jBsT.js.map} +1 -1
- package/build/server/chunks/{9-CVSNNYED.js → 9-DK0hH5Xa.js} +2 -2
- package/build/server/chunks/{9-CVSNNYED.js.map → 9-DK0hH5Xa.js.map} +1 -1
- package/build/server/chunks/Banner-BgaAs1rs.js.map +1 -1
- package/build/server/chunks/Button-D0hZ7JYt.js.map +1 -1
- package/build/server/chunks/Icon-D0GBnDcs.js.map +1 -1
- package/build/server/chunks/Input-OmIiydSx.js.map +1 -1
- package/build/server/chunks/Pill-4xJ-VhAA.js.map +1 -1
- package/build/server/chunks/Shimmer-Dw2uvTC1.js.map +1 -1
- package/build/server/chunks/_error.svelte-CZnkxeLr.js.map +1 -1
- package/build/server/chunks/_layout.svelte-DfgNGGiM.js.map +1 -1
- package/build/server/chunks/_page.svelte-8OFzwdNA.js +758 -0
- package/build/server/chunks/_page.svelte-8OFzwdNA.js.map +1 -0
- package/build/server/chunks/_page.svelte-BTlfUsBp.js.map +1 -1
- package/build/server/chunks/_page.svelte-C7B0qdrC.js.map +1 -1
- package/build/server/chunks/{_page.svelte-BLo2v_8E.js → _page.svelte-Gv9p8nlS.js} +3 -4
- package/build/server/chunks/_page.svelte-Gv9p8nlS.js.map +1 -0
- package/build/server/chunks/_page.svelte-dabsQl9c.js.map +1 -1
- package/build/server/chunks/{_server.ts-bk_EeAdY.js → _server.ts-05JJOdcX.js} +20 -14
- package/build/server/chunks/_server.ts-05JJOdcX.js.map +1 -0
- package/build/server/chunks/{_server.ts-DEx9-epI.js → _server.ts-B54Pvhgc.js} +4 -3
- package/build/server/chunks/_server.ts-B54Pvhgc.js.map +1 -0
- package/build/server/chunks/_server.ts-BB46Fbqn.js +59 -0
- package/build/server/chunks/_server.ts-BB46Fbqn.js.map +1 -0
- package/build/server/chunks/{_server.ts-BRAzC6W1.js → _server.ts-BCljU9Sg.js} +33 -8
- package/build/server/chunks/_server.ts-BCljU9Sg.js.map +1 -0
- package/build/server/chunks/{_server.ts-D-vgx5UZ.js → _server.ts-BTmknWpO.js} +2 -2
- package/build/server/chunks/{_server.ts-D-vgx5UZ.js.map → _server.ts-BTmknWpO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-tChyh9FX.js → _server.ts-BXhmLZwN.js} +4 -2
- package/build/server/chunks/{_server.ts-tChyh9FX.js.map → _server.ts-BXhmLZwN.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CvJKTS3Z.js → _server.ts-BbRSpB74.js} +4 -2
- package/build/server/chunks/{_server.ts-CvJKTS3Z.js.map → _server.ts-BbRSpB74.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DKNIsQeH.js → _server.ts-Bol54_Qo.js} +4 -3
- package/build/server/chunks/_server.ts-Bol54_Qo.js.map +1 -0
- package/build/server/chunks/{_server.ts-Dz9Jd9Jh.js → _server.ts-C0PO_cAu.js} +4 -3
- package/build/server/chunks/{_server.ts-Dz9Jd9Jh.js.map → _server.ts-C0PO_cAu.js.map} +1 -1
- package/build/server/chunks/_server.ts-C6NRpe7e.js +33 -0
- package/build/server/chunks/_server.ts-C6NRpe7e.js.map +1 -0
- package/build/server/chunks/_server.ts-CGqCOCdK.js +53 -0
- package/build/server/chunks/_server.ts-CGqCOCdK.js.map +1 -0
- package/build/server/chunks/{_server.ts-B2wIgsW4.js → _server.ts-CZb-BI5H.js} +4 -3
- package/build/server/chunks/_server.ts-CZb-BI5H.js.map +1 -0
- package/build/server/chunks/_server.ts-DPHRUFYS.js +159 -0
- package/build/server/chunks/_server.ts-DPHRUFYS.js.map +1 -0
- package/build/server/chunks/{_server.ts-AnBXfZXh.js → _server.ts-D_WRex0k.js} +5 -3
- package/build/server/chunks/_server.ts-D_WRex0k.js.map +1 -0
- package/build/server/chunks/{_server.ts-CJGyN8mw.js → _server.ts-DiBMY7Ho.js} +4 -3
- package/build/server/chunks/_server.ts-DiBMY7Ho.js.map +1 -0
- package/build/server/chunks/cache-BlMaDsHi.js.map +1 -1
- package/build/server/chunks/{guest-registry-t0-7Zv5q.js → guest-registry-Dxvd7p-g.js} +10 -1
- package/build/server/chunks/guest-registry-Dxvd7p-g.js.map +1 -0
- package/build/server/chunks/index-CoYB03g7.js.map +1 -1
- package/build/server/chunks/index2-dSGQ9Eaa.js.map +1 -1
- package/build/server/chunks/{library-apns-Dl3iRE2h.js → library-apns-D8RPINlv.js} +62 -7
- package/build/server/chunks/library-apns-D8RPINlv.js.map +1 -0
- package/build/server/chunks/{pending-requests-C9p57WoU.js → pending-requests-8rWjrF6d.js} +3 -2
- package/build/server/chunks/pending-requests-8rWjrF6d.js.map +1 -0
- package/build/server/chunks/presence-store-Bx_g0-Gd.js +23 -0
- package/build/server/chunks/presence-store-Bx_g0-Gd.js.map +1 -0
- package/build/server/chunks/{pty-manager-CkZNoW1t.js → pty-manager-CoWVT56F.js} +27 -6
- package/build/server/chunks/pty-manager-CoWVT56F.js.map +1 -0
- package/build/server/chunks/root-D4IoFC8F.js.map +1 -1
- package/build/server/chunks/shooter-home-4f_HkdGI.js +10 -0
- package/build/server/chunks/shooter-home-4f_HkdGI.js.map +1 -0
- package/build/server/chunks/state.svelte-CmHqngc_.js.map +1 -1
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +52 -24
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/server.ts +2 -0
- package/src/lib/modules/client/common/index.ts +1 -0
- package/src/lib/modules/client/common/presence.ts +47 -0
- package/src/lib/modules/client/dashboard/AutopilotPanel.svelte +584 -0
- package/src/lib/modules/client/dashboard/autopilot-driver.svelte.ts +681 -0
- package/src/lib/modules/client/dashboard/decide-injection.ts +127 -0
- package/src/lib/modules/client/dashboard/index.ts +1 -0
- package/src/lib/modules/client/dashboard/store.svelte.ts +65 -24
- package/src/lib/modules/client/neurolink/fetch-proxy.ts +38 -1
- package/src/lib/modules/client/neurolink/provider-config.ts +13 -37
- package/src/lib/modules/server/apn/apns-payload.ts +50 -0
- package/src/lib/modules/server/apn/library-apns.ts +50 -8
- package/src/lib/modules/server/apn/pending-requests.ts +3 -1
- package/src/lib/modules/server/sessions/autopilot-context.ts +57 -0
- package/src/lib/modules/server/sessions/autopilot-engine.ts +451 -0
- package/src/lib/modules/server/sessions/litellm-client.ts +171 -0
- package/src/lib/modules/server/sessions/next-step-consensus.ts +210 -0
- package/src/lib/modules/server/sessions/summary-store.ts +113 -0
- package/src/lib/modules/server/terminal/agent-launch.ts +26 -0
- package/src/lib/modules/server/terminal/pty-holder.cjs +6 -0
- package/src/lib/modules/server/terminal/pty-manager.ts +13 -3
- package/src/lib/modules/server/terminal/session-watcher.ts +12 -2
- package/src/lib/modules/server/terminal/terminal-store.ts +3 -1
- package/src/lib/modules/server/utils/shooter-home.ts +16 -0
- package/src/lib/modules/server/ws/events-handler.ts +32 -0
- package/src/lib/modules/server/ws/presence-store.ts +50 -0
- package/src/lib/types/autopilot.ts +138 -0
- package/src/lib/types/index.ts +1 -0
- package/src/lib/types/terminal-client.ts +2 -0
- package/src/routes/+layout.server.ts +2 -0
- package/src/routes/+layout.svelte +19 -4
- package/src/routes/+page.svelte +9 -1
- package/src/routes/api/autopilot/+server.ts +74 -0
- package/src/routes/api/autopilot/goal/+server.ts +72 -0
- package/src/routes/api/neurolink-proxy/+server.ts +39 -8
- package/src/routes/api/notify/+server.ts +38 -14
- package/src/routes/api/presence/+server.ts +39 -0
- package/src/routes/api/summaries/+server.ts +99 -0
- package/src/routes/api/ws-status/+server.ts +8 -5
- package/build/client/_app/immutable/assets/2.DjiwkLqE.css +0 -1
- package/build/client/_app/immutable/assets/2.DjiwkLqE.css.br +0 -0
- package/build/client/_app/immutable/assets/2.DjiwkLqE.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BB2l8o4X.js.br +0 -0
- package/build/client/_app/immutable/chunks/BB2l8o4X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BvmdJful.js.br +0 -0
- package/build/client/_app/immutable/chunks/BvmdJful.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CRkG7oE4.js +0 -1
- package/build/client/_app/immutable/chunks/CRkG7oE4.js.br +0 -0
- package/build/client/_app/immutable/chunks/CRkG7oE4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C_YNQL8b.js +0 -3
- package/build/client/_app/immutable/chunks/C_YNQL8b.js.br +0 -0
- package/build/client/_app/immutable/chunks/C_YNQL8b.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ClIPTXf3.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClIPTXf3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DIZ3Qst5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DT4H19pV.js.br +0 -0
- package/build/client/_app/immutable/chunks/DT4H19pV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ZS5XYDx_.js.br +0 -0
- package/build/client/_app/immutable/chunks/pRcLbE0d.js +0 -1
- 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/entry/app.Bd-DfeJi.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Bd-DfeJi.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.evvp4tX7.js +0 -1
- package/build/client/_app/immutable/entry/start.evvp4tX7.js.br +0 -2
- package/build/client/_app/immutable/entry/start.evvp4tX7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Bl-1LQWM.js +0 -10
- package/build/client/_app/immutable/nodes/0.Bl-1LQWM.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Bl-1LQWM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DT4dq6Ay.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DT4dq6Ay.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.CF7RGXpe.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.CF7RGXpe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.BV_G7yLI.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.BV_G7yLI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DcRhsjYp.js +0 -13
- package/build/client/_app/immutable/nodes/2.DcRhsjYp.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DcRhsjYp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.0MMe3oxR.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.0MMe3oxR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.ComiWlV6.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.ComiWlV6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.vkPx1kVP.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.vkPx1kVP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Bmr3sWbS.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Bmr3sWbS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CAJucyeI.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CAJucyeI.js.gz +0 -0
- package/build/server/chunks/0-DDGB6CRT.js.map +0 -1
- package/build/server/chunks/_page.svelte-BLo2v_8E.js.map +0 -1
- package/build/server/chunks/_page.svelte-tBuIq8Pg.js +0 -159
- package/build/server/chunks/_page.svelte-tBuIq8Pg.js.map +0 -1
- package/build/server/chunks/_server.ts-AnBXfZXh.js.map +0 -1
- package/build/server/chunks/_server.ts-B2wIgsW4.js.map +0 -1
- package/build/server/chunks/_server.ts-BRAzC6W1.js.map +0 -1
- package/build/server/chunks/_server.ts-CJGyN8mw.js.map +0 -1
- package/build/server/chunks/_server.ts-DEx9-epI.js.map +0 -1
- package/build/server/chunks/_server.ts-DKNIsQeH.js.map +0 -1
- package/build/server/chunks/_server.ts-bk_EeAdY.js.map +0 -1
- package/build/server/chunks/guest-registry-t0-7Zv5q.js.map +0 -1
- package/build/server/chunks/library-apns-Dl3iRE2h.js.map +0 -1
- package/build/server/chunks/pending-requests-C9p57WoU.js.map +0 -1
- package/build/server/chunks/pty-manager-CkZNoW1t.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-C0PO_cAu.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/connect/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../chunks/auth.js\";\nimport { P as PROVIDER_COMMANDS, r as resumeArgsForCommand } from \"../../../../../chunks/registry.js\";\nimport { p as ptyManager } from \"../../../../../chunks/pty-manager.js\";\nimport { t as toErrorMessage } from \"../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { realpathSync, statSync } from \"fs\";\nimport { relative, isAbsolute } from \"path\";\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n const { command, cwd, noCreate, sessionId } = body;\n if (!sessionId || typeof sessionId !== \"string\") {\n return json({ error: \"sessionId is required (string)\" }, { status: 400 });\n }\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return json({ error: \"Invalid sessionId format\" }, { status: 400 });\n }\n if (!cwd || typeof cwd !== \"string\") {\n return json({ error: \"cwd is required (string)\" }, { status: 400 });\n }\n if (!command || !PROVIDER_COMMANDS.includes(command)) {\n return json(\n { error: `command must be one of: ${PROVIDER_COMMANDS.join(\", \")}` },\n { status: 400 }\n );\n }\n let realCwd;\n try {\n realCwd = realpathSync(cwd);\n if (!statSync(realCwd).isDirectory()) {\n return json({ error: \"Invalid working directory\" }, { status: 400 });\n }\n } catch {\n return json({ error: \"Invalid working directory\" }, { status: 400 });\n }\n const home = process.env.HOME || \"\";\n if (home) {\n const rel = relative(home, realCwd);\n if (rel.startsWith(\"..\") || isAbsolute(rel)) {\n return json({ error: \"Working directory must be under home directory\" }, { status: 400 });\n }\n }\n const existing = ptyManager.list().find(\n (t) => t.status === \"running\" && // Claude / Cursor / Qwen: <id>.jsonl ; Codex rollout: rollout-<ts>-<id>.jsonl ;\n // Copilot: <id>.jsonl OR <id>/events.jsonl ; Amp: T-<id>.json ; OpenCode: session id\n (t.sessionFile?.endsWith(`/${sessionId}.jsonl`) || t.sessionFile?.endsWith(`-${sessionId}.jsonl`) || t.sessionFile?.endsWith(`/${sessionId}/events.jsonl`) || t.sessionFile?.endsWith(`/T-${sessionId}.json`) || t.openCodeSessionId === sessionId)\n );\n if (existing) {\n console.log(\n `[sessions/connect] Reusing terminal ${existing.id} for ${command} session ${sessionId}`\n );\n return json({\n command: existing.command,\n createdAt: existing.createdAt.toISOString(),\n cwd: existing.cwd,\n id: existing.id,\n pid: existing.pid,\n reused: true,\n sessionId,\n sessionWs: `/ws/session/${existing.id}`,\n terminalId: existing.id,\n ws: `/ws/terminal/${existing.id}`\n });\n }\n if (noCreate) {\n return json({ error: \"No existing terminal for this session\" }, { status: 404 });\n }\n const args = resumeArgsForCommand(command, sessionId);\n try {\n const terminal = await ptyManager.create(command, args, realCwd, 120, 40);\n console.log(\n `[sessions/connect] Created terminal ${terminal.id} for ${command} session ${sessionId} (pid=${terminal.pid})`\n );\n return json(\n {\n command: terminal.command,\n createdAt: terminal.createdAt instanceof Date ? terminal.createdAt.toISOString() : terminal.createdAt,\n cwd: terminal.cwd,\n id: terminal.id,\n pid: terminal.pid,\n sessionId,\n sessionWs: `/ws/session/${terminal.id}`,\n terminalId: terminal.id,\n ws: `/ws/terminal/${terminal.id}`\n },\n { status: 201 }\n );\n } catch (error) {\n console.error(\"[sessions/connect] Failed to create terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to create terminal for session\" }, { status: 500 });\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
2
|
+
import { i as isViewerPresent, h as hasEverReported, r as reportPresence } from './presence-store-Bx_g0-Gd.js';
|
|
3
|
+
import { j as json } from './index-CoD1IJuy.js';
|
|
4
|
+
import './shared-server-DaWdgxVh.js';
|
|
5
|
+
import 'crypto';
|
|
6
|
+
|
|
7
|
+
const GET = ({ request }) => {
|
|
8
|
+
const authError = validateAuth(request);
|
|
9
|
+
if (authError) {
|
|
10
|
+
return authError;
|
|
11
|
+
}
|
|
12
|
+
return json({ everReported: hasEverReported(), present: isViewerPresent() });
|
|
13
|
+
};
|
|
14
|
+
const POST = async ({ request }) => {
|
|
15
|
+
const authError = validateAuth(request);
|
|
16
|
+
if (authError) {
|
|
17
|
+
return authError;
|
|
18
|
+
}
|
|
19
|
+
let body;
|
|
20
|
+
try {
|
|
21
|
+
body = await request.json();
|
|
22
|
+
} catch {
|
|
23
|
+
return json({ error: "Invalid JSON body" }, { status: 400 });
|
|
24
|
+
}
|
|
25
|
+
if (body.state !== "foreground" && body.state !== "background") {
|
|
26
|
+
return json({ error: "state must be 'foreground' or 'background'" }, { status: 400 });
|
|
27
|
+
}
|
|
28
|
+
reportPresence(body.state);
|
|
29
|
+
return json({ everReported: hasEverReported(), present: isViewerPresent(), state: body.state });
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { GET, POST };
|
|
33
|
+
//# sourceMappingURL=_server.ts-C6NRpe7e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-C6NRpe7e.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/presence/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { i as isViewerPresent, h as hasEverReported, r as reportPresence } from \"../../../../chunks/presence-store.js\";\nimport { json } from \"@sveltejs/kit\";\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n return json({ everReported: hasEverReported(), present: isViewerPresent() });\n};\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON body\" }, { status: 400 });\n }\n if (body.state !== \"foreground\" && body.state !== \"background\") {\n return json({ error: \"state must be 'foreground' or 'background'\" }, { status: 400 });\n }\n reportPresence(body.state);\n return json({ everReported: hasEverReported(), present: isViewerPresent(), state: body.state });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;;AAGK,MAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK;AAC7B,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC;AAC9E;AACK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AACpC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChE,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,EAAE;AAClE,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzF,EAAE;AACF,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,EAAE,OAAO,IAAI,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACjG;;;;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
2
|
+
import { j as json } from './index-CoD1IJuy.js';
|
|
3
|
+
import './shared-server-DaWdgxVh.js';
|
|
4
|
+
import 'crypto';
|
|
5
|
+
|
|
6
|
+
function control() {
|
|
7
|
+
return globalThis.__shooter_autopilot;
|
|
8
|
+
}
|
|
9
|
+
const GET = ({ request, url }) => {
|
|
10
|
+
const authError = validateAuth(request);
|
|
11
|
+
if (authError) {
|
|
12
|
+
return authError;
|
|
13
|
+
}
|
|
14
|
+
const terminalId = url.searchParams.get("terminalId") ?? "";
|
|
15
|
+
if (!terminalId) {
|
|
16
|
+
return json({ error: "terminalId query param is required" }, { status: 400 });
|
|
17
|
+
}
|
|
18
|
+
const ctrl = control();
|
|
19
|
+
if (!ctrl?.getGoal) {
|
|
20
|
+
return json({ error: "autopilot engine not running", running: false }, { status: 503 });
|
|
21
|
+
}
|
|
22
|
+
return json({ goal: ctrl.getGoal(terminalId) ?? null, running: true });
|
|
23
|
+
};
|
|
24
|
+
const POST = async ({ request }) => {
|
|
25
|
+
const authError = validateAuth(request);
|
|
26
|
+
if (authError) {
|
|
27
|
+
return authError;
|
|
28
|
+
}
|
|
29
|
+
let body;
|
|
30
|
+
try {
|
|
31
|
+
body = await request.json();
|
|
32
|
+
} catch {
|
|
33
|
+
return json({ error: "Invalid JSON body" }, { status: 400 });
|
|
34
|
+
}
|
|
35
|
+
if (typeof body.terminalId !== "string" || body.terminalId.length === 0) {
|
|
36
|
+
return json({ error: "terminalId must be a non-empty string" }, { status: 400 });
|
|
37
|
+
}
|
|
38
|
+
if (typeof body.goal !== "string") {
|
|
39
|
+
return json({ error: "goal must be a string" }, { status: 400 });
|
|
40
|
+
}
|
|
41
|
+
if (body.goal.length > 500) {
|
|
42
|
+
return json({ error: "goal must be 500 characters or fewer" }, { status: 400 });
|
|
43
|
+
}
|
|
44
|
+
const ctrl = control();
|
|
45
|
+
if (!ctrl?.setGoal) {
|
|
46
|
+
return json({ error: "autopilot engine not running", running: false }, { status: 503 });
|
|
47
|
+
}
|
|
48
|
+
ctrl.setGoal(body.terminalId, body.goal);
|
|
49
|
+
return json({ goal: body.goal.trim() || null, running: true, terminalId: body.terminalId });
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export { GET, POST };
|
|
53
|
+
//# sourceMappingURL=_server.ts-CGqCOCdK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CGqCOCdK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/autopilot/goal/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../chunks/auth.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction control() {\n return globalThis.__shooter_autopilot;\n}\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const terminalId = url.searchParams.get(\"terminalId\") ?? \"\";\n if (!terminalId) {\n return json({ error: \"terminalId query param is required\" }, { status: 400 });\n }\n const ctrl = control();\n if (!ctrl?.getGoal) {\n return json({ error: \"autopilot engine not running\", running: false }, { status: 503 });\n }\n return json({ goal: ctrl.getGoal(terminalId) ?? null, running: true });\n};\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON body\" }, { status: 400 });\n }\n if (typeof body.terminalId !== \"string\" || body.terminalId.length === 0) {\n return json({ error: \"terminalId must be a non-empty string\" }, { status: 400 });\n }\n if (typeof body.goal !== \"string\") {\n return json({ error: \"goal must be a string\" }, { status: 400 });\n }\n if (body.goal.length > 500) {\n return json({ error: \"goal must be 500 characters or fewer\" }, { status: 400 });\n }\n const ctrl = control();\n if (!ctrl?.setGoal) {\n return json({ error: \"autopilot engine not running\", running: false }, { status: 503 });\n }\n ctrl.setGoal(body.terminalId, body.goal);\n return json({ goal: body.goal.trim() || null, running: true, terminalId: body.terminalId });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;AAEA,SAAS,OAAO,GAAG;AACnB,EAAE,OAAO,UAAU,CAAC,mBAAmB;AACvC;AACK,MAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK;AAClC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;AAC7D,EAAE,IAAI,CAAC,UAAU,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACjF,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,OAAO,EAAE;AACxB,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACtB,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3F,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxE;AACK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AACpC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChE,EAAE;AACF,EAAE,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3E,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpF,EAAE;AACF,EAAE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACrC,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpE,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnF,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,OAAO,EAAE;AACxB,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACtB,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3F,EAAE;AACF,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1C,EAAE,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7F;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
2
|
-
import { p as ptyManager } from './pty-manager-
|
|
2
|
+
import { p as ptyManager } from './pty-manager-CoWVT56F.js';
|
|
3
3
|
import { s as shareStore, h as hashPassword } from './share-store-B9jMpVg0.js';
|
|
4
|
-
import { c as closeGuests } from './guest-registry-
|
|
4
|
+
import { c as closeGuests } from './guest-registry-Dxvd7p-g.js';
|
|
5
5
|
import { j as json } from './index-CoD1IJuy.js';
|
|
6
6
|
import './shared-server-DaWdgxVh.js';
|
|
7
7
|
import 'crypto';
|
|
@@ -16,6 +16,7 @@ import './registry-D4J_CuzW.js';
|
|
|
16
16
|
import 'better-sqlite3';
|
|
17
17
|
import './coordinator-DMU_ADXf.js';
|
|
18
18
|
import 'net';
|
|
19
|
+
import './shooter-home-4f_HkdGI.js';
|
|
19
20
|
|
|
20
21
|
const MIN_PASSWORD_LENGTH = 6;
|
|
21
22
|
const MODES = ["view", "control"];
|
|
@@ -92,4 +93,4 @@ const DELETE = ({ params, request }) => {
|
|
|
92
93
|
};
|
|
93
94
|
|
|
94
95
|
export { DELETE, GET, PUT };
|
|
95
|
-
//# sourceMappingURL=_server.ts-
|
|
96
|
+
//# sourceMappingURL=_server.ts-CZb-BI5H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CZb-BI5H.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/terminals/_id_/share/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../../chunks/auth.js\";\nimport { p as ptyManager } from \"../../../../../../chunks/pty-manager.js\";\nimport { s as shareStore, h as hashPassword } from \"../../../../../../chunks/share-store.js\";\nimport { c as closeGuests } from \"../../../../../../chunks/guest-registry.js\";\nimport { json } from \"@sveltejs/kit\";\nconst MIN_PASSWORD_LENGTH = 6;\nconst MODES = [\"view\", \"control\"];\nfunction toInfo(terminalId) {\n const share = shareStore.getShare(terminalId);\n if (!share) {\n return { active: false, createdAt: null, mode: null, updatedAt: null };\n }\n return { active: true, createdAt: share.createdAt, mode: share.mode, updatedAt: share.updatedAt };\n}\nconst GET = ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n return json(toInfo(params.id));\n};\nconst PUT = async ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n if (!ptyManager.get(params.id)) {\n return json({ error: \"Terminal not found\" }, { status: 404 });\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON\" }, { status: 400 });\n }\n if (!MODES.includes(body.mode)) {\n return json({ error: \"mode must be 'view' or 'control'\" }, { status: 400 });\n }\n const existing = shareStore.getShare(params.id);\n const password = typeof body.password === \"string\" ? body.password : \"\";\n if (!existing && password.length < MIN_PASSWORD_LENGTH) {\n return json(\n { error: `password is required (min ${String(MIN_PASSWORD_LENGTH)} chars)` },\n { status: 400 }\n );\n }\n if (password && password.length < MIN_PASSWORD_LENGTH) {\n return json(\n { error: `password must be at least ${String(MIN_PASSWORD_LENGTH)} chars` },\n { status: 400 }\n );\n }\n const now = Date.now();\n shareStore.setShare({\n createdAt: existing?.createdAt ?? now,\n mode: body.mode,\n // `existing` is guaranteed non-null when password is empty (validated above).\n passwordHash: password ? hashPassword(password) : existing?.passwordHash ?? \"\",\n terminalId: params.id,\n updatedAt: now\n });\n if (password) {\n shareStore.deleteSessions(params.id);\n }\n if (password || existing?.mode !== body.mode) {\n closeGuests(params.id);\n }\n return json(toInfo(params.id));\n};\nconst DELETE = ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n shareStore.deleteShare(params.id);\n const closed = closeGuests(params.id);\n return json({ closedConnections: closed, success: true });\n};\nexport {\n DELETE,\n GET,\n PUT\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
2
|
+
import Database from 'better-sqlite3';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { s as shooterDataDir } from './shooter-home-4f_HkdGI.js';
|
|
6
|
+
import { j as json } from './index-CoD1IJuy.js';
|
|
7
|
+
import './shared-server-DaWdgxVh.js';
|
|
8
|
+
import 'crypto';
|
|
9
|
+
import 'os';
|
|
10
|
+
|
|
11
|
+
const DB_DIR = shooterDataDir();
|
|
12
|
+
const DB_PATH = path.join(DB_DIR, "shooter.db");
|
|
13
|
+
const COLUMNS = [
|
|
14
|
+
"id",
|
|
15
|
+
"terminal_id",
|
|
16
|
+
"session_id",
|
|
17
|
+
"project_name",
|
|
18
|
+
"summary",
|
|
19
|
+
"next_steps",
|
|
20
|
+
"trigger",
|
|
21
|
+
"created_at"
|
|
22
|
+
];
|
|
23
|
+
class SummaryStore {
|
|
24
|
+
db;
|
|
25
|
+
constructor() {
|
|
26
|
+
fs.mkdirSync(DB_DIR, { recursive: true });
|
|
27
|
+
this.db = new Database(DB_PATH);
|
|
28
|
+
this.db.pragma("journal_mode = WAL");
|
|
29
|
+
this.db.exec(`
|
|
30
|
+
CREATE TABLE IF NOT EXISTS session_summaries (
|
|
31
|
+
id TEXT PRIMARY KEY,
|
|
32
|
+
terminal_id TEXT,
|
|
33
|
+
session_id TEXT,
|
|
34
|
+
project_name TEXT,
|
|
35
|
+
summary TEXT NOT NULL,
|
|
36
|
+
next_steps TEXT NOT NULL DEFAULT '[]',
|
|
37
|
+
trigger TEXT NOT NULL,
|
|
38
|
+
created_at TEXT NOT NULL
|
|
39
|
+
)
|
|
40
|
+
`);
|
|
41
|
+
}
|
|
42
|
+
insert(record) {
|
|
43
|
+
const placeholders = COLUMNS.map(() => "?").join(", ");
|
|
44
|
+
this.db.prepare(`INSERT INTO session_summaries (${COLUMNS.join(", ")}) VALUES (${placeholders})`).run(
|
|
45
|
+
record.id,
|
|
46
|
+
record.terminalId,
|
|
47
|
+
record.sessionId,
|
|
48
|
+
record.projectName,
|
|
49
|
+
record.summary,
|
|
50
|
+
record.nextSteps,
|
|
51
|
+
record.trigger,
|
|
52
|
+
record.createdAt
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
listRecent(limit, sessionId) {
|
|
56
|
+
if (sessionId) {
|
|
57
|
+
const rows2 = this.db.prepare(
|
|
58
|
+
"SELECT * FROM session_summaries WHERE session_id = ? ORDER BY created_at DESC LIMIT ?"
|
|
59
|
+
).all(sessionId, limit);
|
|
60
|
+
return rows2.map(rowToRecord);
|
|
61
|
+
}
|
|
62
|
+
const rows = this.db.prepare("SELECT * FROM session_summaries ORDER BY created_at DESC LIMIT ?").all(limit);
|
|
63
|
+
return rows.map(rowToRecord);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function rowToRecord(row) {
|
|
67
|
+
return {
|
|
68
|
+
createdAt: row.created_at,
|
|
69
|
+
id: row.id,
|
|
70
|
+
nextSteps: row.next_steps,
|
|
71
|
+
projectName: row.project_name ?? null,
|
|
72
|
+
sessionId: row.session_id ?? null,
|
|
73
|
+
summary: row.summary,
|
|
74
|
+
terminalId: row.terminal_id ?? null,
|
|
75
|
+
trigger: row.trigger
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const SS_GLOBAL_KEY = "__shooter_summary_store";
|
|
79
|
+
const summaryStore = globalThis[SS_GLOBAL_KEY] || new SummaryStore();
|
|
80
|
+
globalThis[SS_GLOBAL_KEY] = summaryStore;
|
|
81
|
+
const DEFAULT_LIMIT = 50;
|
|
82
|
+
const MAX_LIMIT = 200;
|
|
83
|
+
const POST = async ({ request }) => {
|
|
84
|
+
const authError = validateAuth(request);
|
|
85
|
+
if (authError) {
|
|
86
|
+
return authError;
|
|
87
|
+
}
|
|
88
|
+
const rawBody = await request.json();
|
|
89
|
+
if (!rawBody || typeof rawBody !== "object" || Array.isArray(rawBody)) {
|
|
90
|
+
return json({ error: "Request body must be a JSON object" }, { status: 400 });
|
|
91
|
+
}
|
|
92
|
+
const body = rawBody;
|
|
93
|
+
if (typeof body.id !== "string" || !body.id) {
|
|
94
|
+
return json({ error: "id is required and must be a non-empty string" }, { status: 400 });
|
|
95
|
+
}
|
|
96
|
+
if (body.id.length > 128) {
|
|
97
|
+
return json({ error: "id must be 128 characters or fewer" }, { status: 400 });
|
|
98
|
+
}
|
|
99
|
+
if (typeof body.summary !== "string" || !body.summary) {
|
|
100
|
+
return json({ error: "summary is required and must be a non-empty string" }, { status: 400 });
|
|
101
|
+
}
|
|
102
|
+
if (body.summary.length > 1e3) {
|
|
103
|
+
return json({ error: "summary must be 1000 characters or fewer" }, { status: 400 });
|
|
104
|
+
}
|
|
105
|
+
if (typeof body.trigger !== "string" || !body.trigger) {
|
|
106
|
+
return json({ error: "trigger is required and must be a non-empty string" }, { status: 400 });
|
|
107
|
+
}
|
|
108
|
+
if (body.trigger.length > 64) {
|
|
109
|
+
return json({ error: "trigger must be 64 characters or fewer" }, { status: 400 });
|
|
110
|
+
}
|
|
111
|
+
if (typeof body.createdAt !== "string" || !body.createdAt) {
|
|
112
|
+
return json({ error: "createdAt is required and must be a non-empty string" }, { status: 400 });
|
|
113
|
+
}
|
|
114
|
+
if (body.createdAt.length > 64 || isNaN(Date.parse(body.createdAt))) {
|
|
115
|
+
return json({ error: "createdAt must be a valid ISO 8601 date string" }, { status: 400 });
|
|
116
|
+
}
|
|
117
|
+
if (typeof body.nextSteps === "string" && body.nextSteps.length > 8192) {
|
|
118
|
+
return json({ error: "nextSteps must be 8192 characters or fewer" }, { status: 400 });
|
|
119
|
+
}
|
|
120
|
+
const record = {
|
|
121
|
+
createdAt: body.createdAt,
|
|
122
|
+
id: body.id,
|
|
123
|
+
nextSteps: typeof body.nextSteps === "string" ? body.nextSteps : "[]",
|
|
124
|
+
projectName: typeof body.projectName === "string" ? body.projectName : null,
|
|
125
|
+
sessionId: typeof body.sessionId === "string" ? body.sessionId : null,
|
|
126
|
+
summary: body.summary,
|
|
127
|
+
terminalId: typeof body.terminalId === "string" ? body.terminalId : null,
|
|
128
|
+
trigger: body.trigger
|
|
129
|
+
};
|
|
130
|
+
try {
|
|
131
|
+
summaryStore.insert(record);
|
|
132
|
+
} catch (err) {
|
|
133
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
134
|
+
const isDuplicate = typeof message === "string" && message.includes("UNIQUE constraint failed");
|
|
135
|
+
if (isDuplicate) {
|
|
136
|
+
return json({ error: "Record with this id already exists" }, { status: 409 });
|
|
137
|
+
}
|
|
138
|
+
return json({ error: "Failed to persist summary" }, { status: 500 });
|
|
139
|
+
}
|
|
140
|
+
return json({ id: record.id, success: true }, { status: 201 });
|
|
141
|
+
};
|
|
142
|
+
const GET = ({ request, url }) => {
|
|
143
|
+
const authError = validateAuth(request);
|
|
144
|
+
if (authError) {
|
|
145
|
+
return authError;
|
|
146
|
+
}
|
|
147
|
+
const sessionId = url.searchParams.get("sessionId") ?? void 0;
|
|
148
|
+
const rawLimit = parseInt(url.searchParams.get("limit") || String(DEFAULT_LIMIT));
|
|
149
|
+
const limit = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, MAX_LIMIT) : DEFAULT_LIMIT;
|
|
150
|
+
const summaries = summaryStore.listRecent(limit, sessionId);
|
|
151
|
+
return json({
|
|
152
|
+
count: summaries.length,
|
|
153
|
+
summaries,
|
|
154
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
export { GET, POST };
|
|
159
|
+
//# sourceMappingURL=_server.ts-DPHRUFYS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DPHRUFYS.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/summaries/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport Database from \"better-sqlite3\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { s as shooterDataDir } from \"../../../../chunks/shooter-home.js\";\nimport { json } from \"@sveltejs/kit\";\nconst DB_DIR = shooterDataDir();\nconst DB_PATH = path.join(DB_DIR, \"shooter.db\");\nconst COLUMNS = [\n \"id\",\n \"terminal_id\",\n \"session_id\",\n \"project_name\",\n \"summary\",\n \"next_steps\",\n \"trigger\",\n \"created_at\"\n];\nclass SummaryStore {\n db;\n constructor() {\n fs.mkdirSync(DB_DIR, { recursive: true });\n this.db = new Database(DB_PATH);\n this.db.pragma(\"journal_mode = WAL\");\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS session_summaries (\n id TEXT PRIMARY KEY,\n terminal_id TEXT,\n session_id TEXT,\n project_name TEXT,\n summary TEXT NOT NULL,\n next_steps TEXT NOT NULL DEFAULT '[]',\n trigger TEXT NOT NULL,\n created_at TEXT NOT NULL\n )\n `);\n }\n insert(record) {\n const placeholders = COLUMNS.map(() => \"?\").join(\", \");\n this.db.prepare(`INSERT INTO session_summaries (${COLUMNS.join(\", \")}) VALUES (${placeholders})`).run(\n record.id,\n record.terminalId,\n record.sessionId,\n record.projectName,\n record.summary,\n record.nextSteps,\n record.trigger,\n record.createdAt\n );\n }\n listRecent(limit, sessionId) {\n if (sessionId) {\n const rows2 = this.db.prepare(\n \"SELECT * FROM session_summaries WHERE session_id = ? ORDER BY created_at DESC LIMIT ?\"\n ).all(sessionId, limit);\n return rows2.map(rowToRecord);\n }\n const rows = this.db.prepare(\"SELECT * FROM session_summaries ORDER BY created_at DESC LIMIT ?\").all(limit);\n return rows.map(rowToRecord);\n }\n}\nfunction rowToRecord(row) {\n return {\n createdAt: row.created_at,\n id: row.id,\n nextSteps: row.next_steps,\n projectName: row.project_name ?? null,\n sessionId: row.session_id ?? null,\n summary: row.summary,\n terminalId: row.terminal_id ?? null,\n trigger: row.trigger\n };\n}\nconst SS_GLOBAL_KEY = \"__shooter_summary_store\";\nconst summaryStore = globalThis[SS_GLOBAL_KEY] || new SummaryStore();\nglobalThis[SS_GLOBAL_KEY] = summaryStore;\nconst DEFAULT_LIMIT = 50;\nconst MAX_LIMIT = 200;\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const rawBody = await request.json();\n if (!rawBody || typeof rawBody !== \"object\" || Array.isArray(rawBody)) {\n return json({ error: \"Request body must be a JSON object\" }, { status: 400 });\n }\n const body = rawBody;\n if (typeof body.id !== \"string\" || !body.id) {\n return json({ error: \"id is required and must be a non-empty string\" }, { status: 400 });\n }\n if (body.id.length > 128) {\n return json({ error: \"id must be 128 characters or fewer\" }, { status: 400 });\n }\n if (typeof body.summary !== \"string\" || !body.summary) {\n return json({ error: \"summary is required and must be a non-empty string\" }, { status: 400 });\n }\n if (body.summary.length > 1e3) {\n return json({ error: \"summary must be 1000 characters or fewer\" }, { status: 400 });\n }\n if (typeof body.trigger !== \"string\" || !body.trigger) {\n return json({ error: \"trigger is required and must be a non-empty string\" }, { status: 400 });\n }\n if (body.trigger.length > 64) {\n return json({ error: \"trigger must be 64 characters or fewer\" }, { status: 400 });\n }\n if (typeof body.createdAt !== \"string\" || !body.createdAt) {\n return json({ error: \"createdAt is required and must be a non-empty string\" }, { status: 400 });\n }\n if (body.createdAt.length > 64 || isNaN(Date.parse(body.createdAt))) {\n return json({ error: \"createdAt must be a valid ISO 8601 date string\" }, { status: 400 });\n }\n if (typeof body.nextSteps === \"string\" && body.nextSteps.length > 8192) {\n return json({ error: \"nextSteps must be 8192 characters or fewer\" }, { status: 400 });\n }\n const record = {\n createdAt: body.createdAt,\n id: body.id,\n nextSteps: typeof body.nextSteps === \"string\" ? body.nextSteps : \"[]\",\n projectName: typeof body.projectName === \"string\" ? body.projectName : null,\n sessionId: typeof body.sessionId === \"string\" ? body.sessionId : null,\n summary: body.summary,\n terminalId: typeof body.terminalId === \"string\" ? body.terminalId : null,\n trigger: body.trigger\n };\n try {\n summaryStore.insert(record);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n const isDuplicate = typeof message === \"string\" && message.includes(\"UNIQUE constraint failed\");\n if (isDuplicate) {\n return json({ error: \"Record with this id already exists\" }, { status: 409 });\n }\n return json({ error: \"Failed to persist summary\" }, { status: 500 });\n }\n return json({ id: record.id, success: true }, { status: 201 });\n};\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const sessionId = url.searchParams.get(\"sessionId\") ?? void 0;\n const rawLimit = parseInt(url.searchParams.get(\"limit\") || String(DEFAULT_LIMIT));\n const limit = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, MAX_LIMIT) : DEFAULT_LIMIT;\n const summaries = summaryStore.listRecent(limit, sessionId);\n return json({\n count: summaries.length,\n summaries,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
2
|
-
import {
|
|
2
|
+
import { i as isViewerPresent } from './presence-store-Bx_g0-Gd.js';
|
|
3
|
+
import { g as getEventsClientCount } from './guest-registry-Dxvd7p-g.js';
|
|
3
4
|
import './super-session-handler-DPyxFgmz.js';
|
|
4
5
|
import { j as json } from './index-CoD1IJuy.js';
|
|
5
6
|
import './shared-server-DaWdgxVh.js';
|
|
@@ -21,9 +22,10 @@ const GET = ({ request }) => {
|
|
|
21
22
|
return authError;
|
|
22
23
|
}
|
|
23
24
|
return json({
|
|
24
|
-
connectedClients: getConnectedClientCount()
|
|
25
|
+
connectedClients: getConnectedClientCount(),
|
|
26
|
+
viewerPresent: isViewerPresent()
|
|
25
27
|
});
|
|
26
28
|
};
|
|
27
29
|
|
|
28
30
|
export { GET };
|
|
29
|
-
//# sourceMappingURL=_server.ts-
|
|
31
|
+
//# sourceMappingURL=_server.ts-D_WRex0k.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-D_WRex0k.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/ws-status/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { i as isViewerPresent } from \"../../../../chunks/presence-store.js\";\nimport { g as getEventsClientCount } from \"../../../../chunks/guest-registry.js\";\nimport \"../../../../chunks/super-session-handler.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction getConnectedClientCount() {\n return getEventsClientCount();\n}\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n return json({\n connectedClients: getConnectedClientCount(),\n viewerPresent: isViewerPresent()\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,SAAS,uBAAuB,GAAG;AACnC,EAAE,OAAO,oBAAoB,EAAE;AAC/B;AACK,MAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK;AAC7B,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,OAAO,IAAI,CAAC;AACd,IAAI,gBAAgB,EAAE,uBAAuB,EAAE;AAC/C,IAAI,aAAa,EAAE,eAAe;AAClC,GAAG,CAAC;AACJ;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as ptyManager } from './pty-manager-
|
|
1
|
+
import { p as ptyManager } from './pty-manager-CoWVT56F.js';
|
|
2
2
|
import { r as resolveAccess } from './share-auth-BS7JuiHf.js';
|
|
3
3
|
import { t as toErrorMessage } from './error-DDXB3duW.js';
|
|
4
4
|
import { j as json } from './index-CoD1IJuy.js';
|
|
@@ -9,12 +9,13 @@ import 'path';
|
|
|
9
9
|
import 'url';
|
|
10
10
|
import './qwen-reader-DGfUbKaJ.js';
|
|
11
11
|
import 'os';
|
|
12
|
-
import './guest-registry-
|
|
12
|
+
import './guest-registry-Dxvd7p-g.js';
|
|
13
13
|
import './super-session-handler-DPyxFgmz.js';
|
|
14
14
|
import './registry-D4J_CuzW.js';
|
|
15
15
|
import 'better-sqlite3';
|
|
16
16
|
import './coordinator-DMU_ADXf.js';
|
|
17
17
|
import 'net';
|
|
18
|
+
import './shooter-home-4f_HkdGI.js';
|
|
18
19
|
import './auth-DuunT7Cg.js';
|
|
19
20
|
import './shared-server-DaWdgxVh.js';
|
|
20
21
|
import './share-store-B9jMpVg0.js';
|
|
@@ -67,4 +68,4 @@ const POST = async ({ params, request }) => {
|
|
|
67
68
|
};
|
|
68
69
|
|
|
69
70
|
export { POST };
|
|
70
|
-
//# sourceMappingURL=_server.ts-
|
|
71
|
+
//# sourceMappingURL=_server.ts-DiBMY7Ho.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DiBMY7Ho.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/terminals/_id_/resize/_server.ts.js"],"sourcesContent":["import { p as ptyManager } from \"../../../../../../chunks/pty-manager.js\";\nimport { r as resolveAccess } from \"../../../../../../chunks/share-auth.js\";\nimport { t as toErrorMessage } from \"../../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nconst POST = async ({ params, request }) => {\n const access = resolveAccess(request, params.id);\n if (!access) {\n return json({ error: \"Unauthorized\" }, { status: 401 });\n }\n if (access.level === \"guest\" && access.mode !== \"control\") {\n return json({ error: \"View-only access\" }, { status: 403 });\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n try {\n const { cols, rows } = body;\n if (cols === void 0 || rows === void 0) {\n return json({ error: \"cols and rows are required\" }, { status: 400 });\n }\n if (typeof cols !== \"number\" || cols < 1) {\n return json({ error: \"cols must be a positive number\" }, { status: 400 });\n }\n if (typeof rows !== \"number\" || rows < 1) {\n return json({ error: \"rows must be a positive number\" }, { status: 400 });\n }\n if (cols > 500 || rows > 200) {\n return json({ error: \"cols must be <= 500 and rows must be <= 200\" }, { status: 400 });\n }\n const terminal = ptyManager.get(params.id);\n if (!terminal) {\n return json({ error: \"Terminal not found\" }, { status: 404 });\n }\n if (terminal.status === \"exited\") {\n return json({ error: \"Terminal already exited\" }, { status: 409 });\n }\n ptyManager.resize(params.id, cols, rows);\n console.log(`[terminals] Resized terminal ${params.id} to ${cols}x${rows}`);\n return json({\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"[terminals] Failed to resize terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to resize terminal\" }, { status: 500 });\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC5C,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;AAClD,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3D,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AAC7D,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/D,EAAE;AACF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI;AAC/B,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AAC5C,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AAC9C,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/E,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AAC9C,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/E,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE;AAClC,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5F,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;AACtC,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxE,IAAI;AACJ,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;AAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,6BAA6B,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACzD,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAClF,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxE,EAAE;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-BlMaDsHi.js","sources":["../../../.svelte-kit/adapter-node/chunks/cache.js"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"cache-BlMaDsHi.js","sources":["../../../.svelte-kit/adapter-node/chunks/cache.js"],"sourcesContent":["import { a6 as attr_class, ab as escape_html, a4 as stringify } from \"./index.js\";\n/* empty css */\nfunction EmptyState($$renderer, $$props) {\n let { title, description, icon, children, classes } = $$props;\n $$renderer.push(`<div${attr_class(`empty-state ${stringify(classes ?? \"\")}`, \"svelte-1elsu8i\")}>`);\n if (typeof icon === \"function\") {\n $$renderer.push(\"<!--[0-->\");\n $$renderer.push(`<div class=\"empty-state-icon svelte-1elsu8i\">`);\n icon($$renderer);\n $$renderer.push(`<!----></div>`);\n } else {\n $$renderer.push(\"<!--[-1-->\");\n }\n $$renderer.push(`<!--]--> <div class=\"empty-state-title svelte-1elsu8i\">${escape_html(title)}</div> <div class=\"empty-state-description svelte-1elsu8i\">${escape_html(description)}</div> `);\n if (typeof children === \"function\") {\n $$renderer.push(\"<!--[0-->\");\n $$renderer.push(`<div class=\"empty-state-actions svelte-1elsu8i\">`);\n children($$renderer);\n $$renderer.push(`<!----></div>`);\n } else {\n $$renderer.push(\"<!--[-1-->\");\n }\n $$renderer.push(`<!--]--></div>`);\n}\nconst RefreshSvg = '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\\n <path d=\"M23 4v6h-6M1 20v-6h6\"/>\\n <path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"/>\\n</svg>\\n';\nfunction clearCache(key) {\n try {\n sessionStorage.removeItem(key);\n } catch {\n }\n}\nexport {\n EmptyState as E,\n RefreshSvg as R,\n clearCache as c\n};\n"],"names":[],"mappings":";;AACA;AACA,SAAS,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;AACzC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO;AAC/D,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,EAAE,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAClC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,6CAA6C,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,UAAU,CAAC;AACpB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AACpC,EAAE,CAAC,MAAM;AACT,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,EAAE;AACF,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,uDAAuD,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,2DAA2D,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9L,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,gDAAgD,CAAC,CAAC;AACvE,IAAI,QAAQ,CAAC,UAAU,CAAC;AACxB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AACpC,EAAE,CAAC,MAAM;AACT,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,EAAE;AACF,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACnC;AACK,MAAC,UAAU,GAAG;AACnB,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,IAAI;AACN,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;AAClC,EAAE,CAAC,CAAC,MAAM;AACV,EAAE;AACF;;;;"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const EVENTS_KEY = "__shooter_ws_events_clients";
|
|
2
2
|
const eventsClients = globalThis[EVENTS_KEY] || /* @__PURE__ */ new Set();
|
|
3
3
|
globalThis[EVENTS_KEY] = eventsClients;
|
|
4
|
+
const LISTENERS_KEY = "__shooter_ws_event_listeners";
|
|
5
|
+
const eventListeners = globalThis[LISTENERS_KEY] || /* @__PURE__ */ new Set();
|
|
6
|
+
globalThis[LISTENERS_KEY] = eventListeners;
|
|
4
7
|
function broadcastEvent(event) {
|
|
5
8
|
const data = JSON.stringify({
|
|
6
9
|
...event,
|
|
@@ -11,6 +14,12 @@ function broadcastEvent(event) {
|
|
|
11
14
|
ws.send(data);
|
|
12
15
|
}
|
|
13
16
|
}
|
|
17
|
+
for (const listener of eventListeners) {
|
|
18
|
+
try {
|
|
19
|
+
listener(event);
|
|
20
|
+
} catch {
|
|
21
|
+
}
|
|
22
|
+
}
|
|
14
23
|
}
|
|
15
24
|
function getEventsClientCount() {
|
|
16
25
|
return eventsClients.size;
|
|
@@ -36,4 +45,4 @@ function closeGuests(terminalId) {
|
|
|
36
45
|
}
|
|
37
46
|
|
|
38
47
|
export { broadcastEvent as b, closeGuests as c, getEventsClientCount as g };
|
|
39
|
-
//# sourceMappingURL=guest-registry-
|
|
48
|
+
//# sourceMappingURL=guest-registry-Dxvd7p-g.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guest-registry-Dxvd7p-g.js","sources":["../../../.svelte-kit/adapter-node/chunks/guest-registry.js"],"sourcesContent":["const EVENTS_KEY = \"__shooter_ws_events_clients\";\nconst eventsClients = globalThis[EVENTS_KEY] || /* @__PURE__ */ new Set();\nglobalThis[EVENTS_KEY] = eventsClients;\nconst LISTENERS_KEY = \"__shooter_ws_event_listeners\";\nconst eventListeners = globalThis[LISTENERS_KEY] || /* @__PURE__ */ new Set();\nglobalThis[LISTENERS_KEY] = eventListeners;\nfunction broadcastEvent(event) {\n const data = JSON.stringify({\n ...event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n for (const ws of eventsClients) {\n if (ws.readyState === 1) {\n ws.send(data);\n }\n }\n for (const listener of eventListeners) {\n try {\n listener(event);\n } catch {\n }\n }\n}\nfunction getEventsClientCount() {\n return eventsClients.size;\n}\nconst GUESTS_KEY = \"__shooter_ws_guest_conns\";\nconst guests = globalThis[GUESTS_KEY] || /* @__PURE__ */ new Map();\nglobalThis[GUESTS_KEY] = guests;\nfunction closeGuests(terminalId) {\n const set = guests.get(terminalId);\n if (!set) {\n return 0;\n }\n let closed = 0;\n for (const ws of set) {\n try {\n ws.close(4001, \"Share revoked\");\n closed++;\n } catch {\n }\n }\n guests.delete(terminalId);\n return closed;\n}\nexport {\n broadcastEvent as b,\n closeGuests as c,\n getEventsClientCount as g\n};\n"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,6BAA6B;AAChD,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,oBAAoB,IAAI,GAAG,EAAE;AACzE,UAAU,CAAC,UAAU,CAAC,GAAG,aAAa;AACtC,MAAM,aAAa,GAAG,8BAA8B;AACpD,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,oBAAoB,IAAI,GAAG,EAAE;AAC7E,UAAU,CAAC,aAAa,CAAC,GAAG,cAAc;AAC1C,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAC9B,IAAI,GAAG,KAAK;AACZ,IAAI,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACvD,GAAG,CAAC;AACJ,EAAE,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE;AAClC,IAAI,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE;AAC7B,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,IAAI;AACJ,EAAE;AACF,EAAE,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE;AACzC,IAAI,IAAI;AACR,MAAM,QAAQ,CAAC,KAAK,CAAC;AACrB,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,EAAE;AACF;AACA,SAAS,oBAAoB,GAAG;AAChC,EAAE,OAAO,aAAa,CAAC,IAAI;AAC3B;AACA,MAAM,UAAU,GAAG,0BAA0B;AAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,oBAAoB,IAAI,GAAG,EAAE;AAClE,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM;AAC/B,SAAS,WAAW,CAAC,UAAU,EAAE;AACjC,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;AACpC,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,OAAO,CAAC;AACZ,EAAE;AACF,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,EAAE,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACxB,IAAI,IAAI;AACR,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC;AACrC,MAAM,MAAM,EAAE;AACd,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC3B,EAAE,OAAO,MAAM;AACf;;;;"}
|