@juspay/shooter 1.19.0 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/assets/11.F10lvwyh.css +1 -0
- package/build/client/_app/immutable/assets/11.F10lvwyh.css.br +0 -0
- package/build/client/_app/immutable/assets/11.F10lvwyh.css.gz +0 -0
- package/build/client/_app/immutable/assets/2.BHi6pjT2.css +1 -0
- package/build/client/_app/immutable/assets/2.BHi6pjT2.css.br +0 -0
- package/build/client/_app/immutable/assets/2.BHi6pjT2.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/{DCDL_9ys.js → BmfLecb1.js} +1 -1
- package/build/client/_app/immutable/chunks/BmfLecb1.js.br +0 -0
- package/build/client/_app/immutable/chunks/BmfLecb1.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/DOEXXmsh.js +3 -0
- package/build/client/_app/immutable/chunks/DOEXXmsh.js.br +0 -0
- package/build/client/_app/immutable/chunks/DOEXXmsh.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/{DA4Zt9Me.js → EqMAkEha.js} +1 -1
- package/build/client/_app/immutable/chunks/EqMAkEha.js.br +0 -0
- package/build/client/_app/immutable/chunks/EqMAkEha.js.gz +0 -0
- package/build/client/_app/immutable/chunks/J5-Cr5oR.js +6 -0
- package/build/client/_app/immutable/chunks/J5-Cr5oR.js.br +0 -0
- package/build/client/_app/immutable/chunks/J5-Cr5oR.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.D4TXlu7A.js → app.CeSxgGat.js} +2 -2
- package/build/client/_app/immutable/entry/app.CeSxgGat.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CeSxgGat.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DrnJFwxA.js +1 -0
- package/build/client/_app/immutable/entry/start.DrnJFwxA.js.br +2 -0
- package/build/client/_app/immutable/entry/start.DrnJFwxA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.oaPwxh1O.js +10 -0
- package/build/client/_app/immutable/nodes/0.oaPwxh1O.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.oaPwxh1O.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.BVnLUSs-.js → 1.DMPyoM-M.js} +1 -1
- package/build/client/_app/immutable/nodes/1.DMPyoM-M.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DMPyoM-M.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{10.D1wl2wPX.js → 10.Cbm7nQKK.js} +1 -1
- package/build/client/_app/immutable/nodes/10.Cbm7nQKK.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.Cbm7nQKK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.CKmZjP_a.js +2 -0
- package/build/client/_app/immutable/nodes/11.CKmZjP_a.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.CKmZjP_a.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.zlrdNFtH.js +13 -0
- package/build/client/_app/immutable/nodes/2.zlrdNFtH.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.zlrdNFtH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.Wfz3TcJd.js → 3.BgLpGnzb.js} +1 -1
- package/build/client/_app/immutable/nodes/3.BgLpGnzb.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BgLpGnzb.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.Avc1-gVb.js} +1 -1
- package/build/client/_app/immutable/nodes/5.Avc1-gVb.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Avc1-gVb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.DtZAEPXb.js → 6.Dw2wEssJ.js} +1 -1
- package/build/client/_app/immutable/nodes/6.Dw2wEssJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.Dw2wEssJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.MfBRh32I.js → 7.DwKZjoBg.js} +1 -1
- package/build/client/_app/immutable/nodes/7.DwKZjoBg.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DwKZjoBg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.DVE6LnOC.js → 8.ZUAI6g5E.js} +1 -1
- package/build/client/_app/immutable/nodes/8.ZUAI6g5E.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.ZUAI6g5E.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.BCel5OqI.js → 9.I_KGXPwB.js} +1 -1
- package/build/client/_app/immutable/nodes/9.I_KGXPwB.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.I_KGXPwB.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-DJqyZZTr.js → 0-vrTNAfZB.js} +4 -2
- package/build/server/chunks/0-vrTNAfZB.js.map +1 -0
- package/build/server/chunks/{1-2YUVen1F.js → 1-nbr-bOoF.js} +2 -2
- package/build/server/chunks/{1-2YUVen1F.js.map → 1-nbr-bOoF.js.map} +1 -1
- package/build/server/chunks/{10-D1X7LB3v.js → 10-ChyvvJ6w.js} +2 -2
- package/build/server/chunks/{10-D1X7LB3v.js.map → 10-ChyvvJ6w.js.map} +1 -1
- package/build/server/chunks/{11-qXSPdF5j.js → 11-6ZAjL3uU.js} +4 -4
- package/build/server/chunks/11-6ZAjL3uU.js.map +1 -0
- package/build/server/chunks/{2-BD7kj1mt.js → 2-DWFRVDWJ.js} +3 -3
- package/build/server/chunks/{2-BD7kj1mt.js.map → 2-DWFRVDWJ.js.map} +1 -1
- package/build/server/chunks/{3-oNjv-BhZ.js → 3-CKANM_WM.js} +2 -2
- package/build/server/chunks/{3-oNjv-BhZ.js.map → 3-CKANM_WM.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-BxVjs2qi.js} +2 -2
- package/build/server/chunks/{5-oNoWuIsn.js.map → 5-BxVjs2qi.js.map} +1 -1
- package/build/server/chunks/{6-DRJGUqHG.js → 6-Cbf1AAMQ.js} +2 -2
- package/build/server/chunks/{6-DRJGUqHG.js.map → 6-Cbf1AAMQ.js.map} +1 -1
- package/build/server/chunks/{7-_giJiu0L.js → 7-CMK2quEf.js} +2 -2
- package/build/server/chunks/{7-_giJiu0L.js.map → 7-CMK2quEf.js.map} +1 -1
- package/build/server/chunks/{8-zvWAVNT5.js → 8-DhdfkfDM.js} +2 -2
- package/build/server/chunks/{8-zvWAVNT5.js.map → 8-DhdfkfDM.js.map} +1 -1
- package/build/server/chunks/{9-DVyDL445.js → 9-CPpxtRM5.js} +2 -2
- package/build/server/chunks/{9-DVyDL445.js.map → 9-CPpxtRM5.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-BTlfUsBp.js.map +1 -1
- package/build/server/chunks/_page.svelte-BX2FMgSg.js.map +1 -1
- package/build/server/chunks/_page.svelte-C7B0qdrC.js.map +1 -1
- package/build/server/chunks/_page.svelte-CE7COWnF.js.map +1 -1
- package/build/server/chunks/_page.svelte-CWsjjd4l.js.map +1 -1
- package/build/server/chunks/_page.svelte-D5S2hkBk.js.map +1 -1
- package/build/server/chunks/_page.svelte-D_Ey8QRG.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-BUBLUSGo.js → _page.svelte-dabsQl9c.js} +206 -5
- package/build/server/chunks/_page.svelte-dabsQl9c.js.map +1 -0
- package/build/server/chunks/_page.svelte-tBuIq8Pg.js.map +1 -1
- package/build/server/chunks/_server.ts-B-evHL2q.js +13 -0
- package/build/server/chunks/_server.ts-B-evHL2q.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-DMm0hBP4.js → _server.ts-BWVlO8iV.js} +8 -5
- package/build/server/chunks/_server.ts-BWVlO8iV.js.map +1 -0
- package/build/server/chunks/{_server.ts-BRAzC6W1.js → _server.ts-BevnuePu.js} +27 -6
- package/build/server/chunks/_server.ts-BevnuePu.js.map +1 -0
- package/build/server/chunks/_server.ts-CA5KUENM.js +95 -0
- package/build/server/chunks/_server.ts-CA5KUENM.js.map +1 -0
- package/build/server/chunks/{_server.ts-DhJx0DLr.js → _server.ts-CC2K8-L2.js} +16 -7
- package/build/server/chunks/_server.ts-CC2K8-L2.js.map +1 -0
- package/build/server/chunks/{_server.ts-Bi0Oe4PF.js → _server.ts-CD7JP3fz.js} +14 -9
- package/build/server/chunks/_server.ts-CD7JP3fz.js.map +1 -0
- package/build/server/chunks/{_server.ts-C_OOUqsd.js → _server.ts-D0zRDSx0.js} +2 -2
- package/build/server/chunks/{_server.ts-C_OOUqsd.js.map → _server.ts-D0zRDSx0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DxT9IlZF.js → _server.ts-Dp-hXW_I.js} +3 -3
- package/build/server/chunks/{_server.ts-DxT9IlZF.js.map → _server.ts-Dp-hXW_I.js.map} +1 -1
- package/build/server/chunks/_server.ts-DpRr0Tfh.js +68 -0
- package/build/server/chunks/_server.ts-DpRr0Tfh.js.map +1 -0
- package/build/server/chunks/{_server.ts-Bjbr7glm.js → _server.ts-QN-Bo5ql.js} +12 -5
- package/build/server/chunks/_server.ts-QN-Bo5ql.js.map +1 -0
- package/build/server/chunks/_server.ts-VzDcFFgy.js +157 -0
- package/build/server/chunks/_server.ts-VzDcFFgy.js.map +1 -0
- package/build/server/chunks/{_server.ts-BrqaMMAa.js → _server.ts-W6i3EnGX.js} +29 -6
- package/build/server/chunks/_server.ts-W6i3EnGX.js.map +1 -0
- package/build/server/chunks/{_server.ts-CRVNEOd2.js → _server.ts-X1R7L_QI.js} +3 -3
- package/build/server/chunks/{_server.ts-CRVNEOd2.js.map → _server.ts-X1R7L_QI.js.map} +1 -1
- package/build/server/chunks/cache-BlMaDsHi.js.map +1 -1
- package/build/server/chunks/guest-registry-Dxvd7p-g.js +48 -0
- 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/{pty-manager-41h3IK8K.js → pty-manager-ZqXqa-6A.js} +6 -2
- package/build/server/chunks/pty-manager-ZqXqa-6A.js.map +1 -0
- package/build/server/chunks/root-D4IoFC8F.js.map +1 -1
- package/build/server/chunks/share-auth-BS7JuiHf.js +27 -0
- package/build/server/chunks/share-auth-BS7JuiHf.js.map +1 -0
- package/build/server/chunks/share-store-B9jMpVg0.js +127 -0
- package/build/server/chunks/share-store-B9jMpVg0.js.map +1 -0
- package/build/server/chunks/state.svelte-CmHqngc_.js.map +1 -1
- package/build/server/chunks/stores-CRYxfF0o.js.map +1 -1
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +57 -22
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/server.ts +10 -3
- package/src/lib/modules/client/dashboard/AutopilotPanel.svelte +400 -0
- package/src/lib/modules/client/dashboard/index.ts +1 -0
- package/src/lib/modules/client/neurolink/provider-config.ts +13 -37
- package/src/lib/modules/client/terminal/ShareGate.svelte +96 -0
- package/src/lib/modules/client/terminal/ShareSheet.svelte +395 -0
- package/src/lib/modules/client/terminal/xterm-wrapper.ts +19 -2
- package/src/lib/modules/server/sessions/autopilot-engine.ts +346 -0
- package/src/lib/modules/server/sessions/litellm-client.ts +115 -0
- package/src/lib/modules/server/sessions/next-step-consensus.ts +185 -0
- package/src/lib/modules/server/sessions/summary-store.ts +111 -0
- package/src/lib/modules/server/terminal/pty-manager.ts +6 -0
- package/src/lib/modules/server/terminal/share-auth.ts +37 -0
- package/src/lib/modules/server/terminal/share-store.ts +172 -0
- package/src/lib/modules/server/ws/events-handler.ts +32 -0
- package/src/lib/modules/server/ws/guest-registry.ts +49 -0
- package/src/lib/modules/server/ws/server.ts +22 -3
- package/src/lib/modules/server/ws/session-handler.ts +18 -4
- package/src/lib/modules/server/ws/terminal-handler.ts +21 -2
- package/src/lib/modules/server/ws/ticket-store.ts +18 -10
- package/src/lib/types/autopilot.ts +73 -0
- package/src/lib/types/generated/Client.ts +25 -1
- package/src/lib/types/generated/Share.ts +404 -0
- package/src/lib/types/generated/WsProtocol.ts +73 -2
- package/src/lib/types/generated/index.ts +1 -0
- package/src/lib/types/index.ts +1 -0
- package/src/lib/types/terminal-client.ts +21 -2
- package/src/lib/types/ws.ts +1 -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/neurolink-proxy/+server.ts +31 -6
- package/src/routes/api/notify/+server.ts +20 -3
- package/src/routes/api/summaries/+server.ts +99 -0
- package/src/routes/api/terminals/[id]/+server.ts +14 -3
- package/src/routes/api/terminals/[id]/paste-image/+server.ts +8 -4
- package/src/routes/api/terminals/[id]/resize/+server.ts +8 -4
- package/src/routes/api/terminals/[id]/share/+server.ts +98 -0
- package/src/routes/api/terminals/[id]/share/auth/+server.ts +81 -0
- package/src/routes/api/terminals/[id]/share/status/+server.ts +11 -0
- package/src/routes/api/ws-ticket/+server.ts +26 -5
- package/src/routes/terminals/[id]/+page.svelte +184 -43
- package/build/client/_app/immutable/assets/11.v5KA95xm.css +0 -1
- package/build/client/_app/immutable/assets/11.v5KA95xm.css.br +0 -0
- package/build/client/_app/immutable/assets/11.v5KA95xm.css.gz +0 -0
- 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/BcqA7eKM.js +0 -3
- package/build/client/_app/immutable/chunks/BcqA7eKM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BcqA7eKM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BvmdJful.js.br +0 -0
- package/build/client/_app/immutable/chunks/BvmdJful.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CR6bkGJW.js +0 -6
- 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/ClIPTXf3.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClIPTXf3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DA4Zt9Me.js.br +0 -0
- package/build/client/_app/immutable/chunks/DA4Zt9Me.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DCDL_9ys.js.br +0 -0
- package/build/client/_app/immutable/chunks/DCDL_9ys.js.gz +0 -0
- package/build/client/_app/immutable/chunks/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.D4TXlu7A.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D4TXlu7A.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BBQhtURO.js +0 -1
- package/build/client/_app/immutable/entry/start.BBQhtURO.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BBQhtURO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.1zylwAPT.js +0 -10
- package/build/client/_app/immutable/nodes/0.1zylwAPT.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.1zylwAPT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.C18nMGmp.js +0 -2
- package/build/client/_app/immutable/nodes/11.C18nMGmp.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.C18nMGmp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js +0 -13
- package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.Wfz3TcJd.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.Wfz3TcJd.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.DtZAEPXb.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DtZAEPXb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.MfBRh32I.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.MfBRh32I.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BCel5OqI.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BCel5OqI.js.gz +0 -0
- package/build/server/chunks/0-DJqyZZTr.js.map +0 -1
- package/build/server/chunks/11-qXSPdF5j.js.map +0 -1
- package/build/server/chunks/_page.svelte-BLo2v_8E.js.map +0 -1
- package/build/server/chunks/_page.svelte-BUBLUSGo.js.map +0 -1
- package/build/server/chunks/_server.ts-BRAzC6W1.js.map +0 -1
- package/build/server/chunks/_server.ts-Bi0Oe4PF.js.map +0 -1
- package/build/server/chunks/_server.ts-Bjbr7glm.js.map +0 -1
- package/build/server/chunks/_server.ts-BrqaMMAa.js.map +0 -1
- package/build/server/chunks/_server.ts-DMm0hBP4.js.map +0 -1
- package/build/server/chunks/_server.ts-DhJx0DLr.js.map +0 -1
- package/build/server/chunks/events-handler-Dm1mNPQP.js +0 -20
- package/build/server/chunks/events-handler-Dm1mNPQP.js.map +0 -1
- package/build/server/chunks/pty-manager-41h3IK8K.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_page.svelte-dabsQl9c.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/terminals/_id_/_page.svelte.js"],"sourcesContent":["import { a1 as derived, a6 as attr_class, a4 as stringify, a9 as attr, ab as escape_html, ac as spread_props, ah as clsx, ae as ensure_array_like, aa as bind_props, ad as head, a5 as store_get, a7 as unsubscribe_stores } from \"../../../../chunks/index.js\";\nimport { g as goto } from \"../../../../chunks/client.js\";\nimport { p as page } from \"../../../../chunks/stores.js\";\nimport \"../../../../chunks/markdown.js\";\nimport { o as onDestroy } from \"../../../../chunks/index-server.js\";\n/* empty css */\n/* empty css */\nimport { S as SvelteMap } from \"../../../../chunks/index-server2.js\";\nimport { B as Button, h as html } from \"../../../../chunks/Button.js\";\nimport { I as Input } from \"../../../../chunks/Input.js\";\nfunction ModalAnimation($$renderer, $$props) {\n let {\n enable = true,\n align = \"bottom\",\n transitionType = \"ALL\",\n children\n } = $$props;\n let useFlyAnimation = derived(() => align === \"top\" || align === \"bottom\");\n let useOutTransition = derived(() => transitionType === \"ALL\");\n if (enable) {\n $$renderer.push(\"<!--[0-->\");\n if (useFlyAnimation() && useOutTransition()) {\n $$renderer.push(\"<!--[0-->\");\n $$renderer.push(`<div>`);\n children?.($$renderer);\n $$renderer.push(`<!----></div>`);\n } else if (useFlyAnimation()) {\n $$renderer.push(\"<!--[1-->\");\n $$renderer.push(`<div>`);\n children?.($$renderer);\n $$renderer.push(`<!----></div>`);\n } else if (useOutTransition()) {\n $$renderer.push(\"<!--[2-->\");\n $$renderer.push(`<div>`);\n children?.($$renderer);\n $$renderer.push(`<!----></div>`);\n } else {\n $$renderer.push(\"<!--[-1-->\");\n $$renderer.push(`<div>`);\n children?.($$renderer);\n $$renderer.push(`<!----></div>`);\n }\n $$renderer.push(`<!--]-->`);\n } else {\n $$renderer.push(\"<!--[-1-->\");\n children?.($$renderer);\n $$renderer.push(`<!---->`);\n }\n $$renderer.push(`<!--]-->`);\n}\nfunction OverlayAnimation($$renderer, $$props) {\n let { children } = $$props;\n $$renderer.push(`<div>`);\n children?.($$renderer);\n $$renderer.push(`<!----></div>`);\n}\nfunction Modal($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let backPressed = false;\n let {\n size = \"fit-content\",\n align = \"center\",\n showOverlay = true,\n supportHardwareBackPress = false,\n enableTransition = true,\n transitionType = \"ALL\",\n header = {},\n footer,\n debounceTime = 700,\n leftImageTestId,\n testId,\n content,\n footerSnippet,\n onclose,\n onheaderRightImageClick,\n onheaderLeftImageClick,\n onprimaryButtonClick,\n onsecondaryButtonClick,\n onoverlayClick,\n onkeydown,\n classes\n } = $$props;\n function handlePopstate() {\n backPressed = true;\n onclose?.();\n }\n function handlePrimaryButtonClick(event) {\n onprimaryButtonClick?.(event);\n }\n function handleSecondaryButtonClick(event) {\n onsecondaryButtonClick?.(event);\n }\n onDestroy(() => {\n if (typeof window !== \"undefined\") {\n document.body.style.overflow = \"\";\n if (supportHardwareBackPress) {\n if (!backPressed) {\n history.back();\n }\n window.removeEventListener(\"popstate\", handlePopstate);\n }\n }\n });\n if (typeof content === \"function\") {\n $$renderer2.push(\"<!--[0-->\");\n OverlayAnimation($$renderer2, {\n children: ($$renderer3) => {\n $$renderer3.push(`<div${attr_class(`modal ${stringify(align)} ${stringify(showOverlay ? \"overlay-active\" : \"overlay-inactive\")} ${stringify(classes ?? \"\")}`, \"svelte-1hs4dh0\")} role=\"button\" tabindex=\"0\"${attr(\"data-pw\", testId)}>`);\n ModalAnimation($$renderer3, {\n enable: enableTransition,\n align,\n transitionType,\n children: ($$renderer4) => {\n $$renderer4.push(`<div${attr_class(`modal-content ${stringify(size)}`, \"svelte-1hs4dh0\")}>`);\n if (typeof header?.leftImage === \"string\" && header.leftImage.length > 0 || typeof header?.text === \"string\" && header.text.length > 0 || typeof header?.rightImage === \"string\" && header.rightImage.length > 0) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div class=\"header svelte-1hs4dh0\">`);\n if (header.leftImage) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div role=\"button\" tabindex=\"0\"${attr(\"data-pw\", leftImageTestId)}><img class=\"header-left-img svelte-1hs4dh0\"${attr(\"src\", header.leftImage)} alt=\"\"/></div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--> `);\n if (header.text) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div class=\"header-text svelte-1hs4dh0\"${attr(\"data-pw\", header.testId)}>${escape_html(header.text)}</div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--> `);\n if (header.rightImage) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div role=\"button\" tabindex=\"0\"${attr(\"data-pw\", header.buttonTestId)}><img class=\"header-right-img svelte-1hs4dh0\"${attr(\"src\", header.rightImage)} alt=\"\"/></div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--></div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--> <div class=\"slot-content svelte-1hs4dh0\">`);\n content?.($$renderer4);\n $$renderer4.push(`<!----></div> `);\n if (typeof footerSnippet === \"function\") {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div class=\"footer-content svelte-1hs4dh0\">`);\n footerSnippet?.($$renderer4);\n $$renderer4.push(`<!----></div>`);\n } else if (typeof footer?.primaryButton === \"object\" || typeof footer?.secondaryButton === \"object\") {\n $$renderer4.push(\"<!--[1-->\");\n $$renderer4.push(`<div class=\"footer-content svelte-1hs4dh0\"><div class=\"footer-action-buttons svelte-1hs4dh0\">`);\n if (footer.secondaryButton) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div class=\"footer-secondary-button svelte-1hs4dh0\">`);\n Button($$renderer4, spread_props([\n footer.secondaryButton,\n { onclick: handleSecondaryButtonClick }\n ]));\n $$renderer4.push(`<!----></div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--> `);\n if (footer.primaryButton) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div class=\"footer-primary-button svelte-1hs4dh0\">`);\n Button($$renderer4, spread_props([footer.primaryButton, { onclick: handlePrimaryButtonClick }]));\n $$renderer4.push(`<!----></div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--></div></div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--></div>`);\n }\n });\n $$renderer3.push(`<!----></div>`);\n }\n });\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nfunction Img($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { src, alt, classes } = $$props;\n let currentSrc = derived(() => src);\n $$renderer2.push(`<img${attr_class(clsx(classes ?? \"\"), \"svelte-17cjlp4\")}${attr(\"src\", currentSrc())}${attr(\"alt\", alt)} onerror=\"this.__e=event\"/>`);\n });\n}\nfunction KeyboardInput($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { keys, separator = \"+\", testId, onclick, classes } = $$props;\n const KEY_SYMBOLS = {\n cmd: \"⌘\",\n command: \"⌘\",\n ctrl: \"⌃\",\n control: \"⌃\",\n alt: \"⌥\",\n option: \"⌥\",\n shift: \"⇧\",\n enter: \"↵\",\n backspace: \"⌫\",\n delete: \"⌦\",\n tab: \"⇥\",\n escape: \"Esc\",\n esc: \"Esc\",\n up: \"↑\",\n down: \"↓\",\n left: \"←\",\n right: \"→\",\n space: \"␣\"\n };\n let keyList = derived(() => Array.isArray(keys) ? keys : keys.split(separator).map((k) => k.trim()));\n let interactive = derived(() => typeof onclick === \"function\");\n function getSymbol(key) {\n return KEY_SYMBOLS[key.toLowerCase()] ?? key;\n }\n $$renderer2.push(`<span${attr_class(`keyboard-input ${stringify(classes ?? \"\")}`, \"svelte-m0aqug\")}${attr(\"data-pw\", typeof testId === \"string\" ? testId : null)}${attr(\"role\", interactive() ? \"button\" : null)}${attr(\"tabindex\", interactive() ? 0 : null)}><!--[-->`);\n const each_array = ensure_array_like(keyList());\n for (let i = 0, $$length = each_array.length; i < $$length; i++) {\n let key = each_array[i];\n if (i > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<span class=\"separator svelte-m0aqug\">${escape_html(separator)}</span>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> <kbd class=\"key svelte-m0aqug\">${escape_html(getSymbol(key))}</kbd>`);\n }\n $$renderer2.push(`<!--]--></span>`);\n });\n}\nconst searchSvg = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\\n</svg>\\n';\nfunction CommandMenu($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let {\n items,\n open = false,\n placeholder = \"Search commands...\",\n emptyText = \"No results found.\",\n testId,\n itemIcon,\n searchIcon,\n onselect,\n onclose,\n classes\n } = $$props;\n let query = \"\";\n let activeIndex = 0;\n let filteredItems = derived(() => {\n if (query.trim() === \"\") {\n return items;\n }\n const lower = query.toLowerCase();\n return items.filter((item) => item.label.toLowerCase().includes(lower));\n });\n let groupedItems = derived(() => {\n const groups = new SvelteMap();\n for (const item of filteredItems()) {\n const group = item.group ?? \"\";\n if (!groups.has(group)) {\n groups.set(group, []);\n }\n const groupList = groups.get(group);\n if (Array.isArray(groupList)) {\n groupList.push(item);\n }\n }\n return groups;\n });\n let flatItems = derived(() => {\n const result = [];\n for (const [, groupItems] of groupedItems()) {\n for (const item of groupItems) {\n result.push(item);\n }\n }\n return result;\n });\n let flatIndexLookup = derived(() => {\n const map = new SvelteMap();\n for (let i = 0; i < flatItems().length; i++) {\n const item = flatItems().at(i);\n if (typeof item === \"object\") {\n map.set(item.value, i);\n }\n }\n return map;\n });\n function close() {\n open = false;\n query = \"\";\n activeIndex = 0;\n onclose?.();\n }\n function handleGlobalKeyDown(event) {\n if ((event.metaKey || event.ctrlKey) && event.key === \"k\") {\n event.preventDefault();\n if (open) {\n close();\n } else {\n open = true;\n }\n }\n }\n onDestroy(() => {\n if (typeof window !== \"undefined\") {\n document.body.style.overflow = \"\";\n window.removeEventListener(\"keydown\", handleGlobalKeyDown);\n }\n });\n if (open) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div${attr_class(`command-menu-overlay ${stringify(classes ?? \"\")}`, \"svelte-nvxm9c\")} role=\"dialog\" aria-modal=\"true\" aria-label=\"Command menu\" tabindex=\"-1\"${attr(\"data-pw\", typeof testId === \"string\" ? testId : null)}><div class=\"command-menu-dialog svelte-nvxm9c\"><div class=\"command-menu-input-wrapper svelte-nvxm9c\">`);\n if (typeof searchIcon === \"function\") {\n $$renderer2.push(\"<!--[0-->\");\n searchIcon($$renderer2);\n $$renderer2.push(`<!---->`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<span class=\"command-menu-search-icon svelte-nvxm9c\">${html(searchSvg)}</span>`);\n }\n $$renderer2.push(`<!--]--> <input${attr(\"value\", query)} type=\"text\" class=\"command-menu-input svelte-nvxm9c\"${attr(\"placeholder\", placeholder)} autocomplete=\"off\" spellcheck=\"false\"${attr(\"data-pw\", typeof testId === \"string\" ? `${testId}-input` : null)}/></div> <div class=\"command-menu-separator svelte-nvxm9c\"></div> <div class=\"command-menu-list svelte-nvxm9c\" role=\"listbox\">`);\n if (flatItems().length === 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"command-menu-empty svelte-nvxm9c\">${escape_html(emptyText)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<!--[-->`);\n const each_array = ensure_array_like(groupedItems());\n for (let $$index_2 = 0, $$length = each_array.length; $$index_2 < $$length; $$index_2++) {\n let [group, groupItems] = each_array[$$index_2];\n if (group !== \"\") {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"command-menu-group-heading svelte-nvxm9c\">${escape_html(group)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_1 = ensure_array_like(groupItems);\n for (let $$index_1 = 0, $$length2 = each_array_1.length; $$index_1 < $$length2; $$index_1++) {\n let item = each_array_1[$$index_1];\n const index = flatIndexLookup().get(item.value) ?? -1;\n $$renderer2.push(`<button type=\"button\"${attr_class(\"command-menu-item svelte-nvxm9c\", void 0, { \"active\": index === activeIndex, \"disabled\": item.disabled })}${attr(\"data-active\", index === activeIndex)} role=\"option\"${attr(\"aria-selected\", index === activeIndex)}${attr(\"aria-disabled\", item.disabled)} tabindex=\"-1\"${attr(\"data-pw\", typeof testId === \"string\" ? `${testId}-item-${item.value}` : null)}>`);\n if (typeof itemIcon === \"function\") {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<span class=\"command-menu-item-icon svelte-nvxm9c\">`);\n itemIcon($$renderer2, item);\n $$renderer2.push(`<!----></span>`);\n } else if (typeof item.icon === \"string\" && item.icon.length > 0) {\n $$renderer2.push(\"<!--[1-->\");\n $$renderer2.push(`<div class=\"command-menu-item-icon-img-wrapper svelte-nvxm9c\">`);\n Img($$renderer2, { src: item.icon, alt: \"\" });\n $$renderer2.push(`<!----></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> <span class=\"command-menu-item-label svelte-nvxm9c\">${escape_html(item.label)}</span> `);\n if (typeof item.shortcut === \"string\" && item.shortcut.length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<span class=\"command-menu-item-shortcut svelte-nvxm9c\"><!--[-->`);\n const each_array_2 = ensure_array_like(item.shortcut.split(\"+\"));\n for (let i = 0, $$length3 = each_array_2.length; i < $$length3; i++) {\n let key = each_array_2[i];\n $$renderer2.push(`<kbd class=\"command-menu-kbd svelte-nvxm9c\">${escape_html(key.trim())}</kbd>`);\n }\n $$renderer2.push(`<!--]--></span>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></button>`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div></div></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n bind_props($$props, { open });\n });\n}\nfunction getApiKey() {\n try {\n const saved = localStorage.getItem(\"shooter_config\");\n if (!saved) {\n return \"\";\n }\n const parsed = JSON.parse(saved);\n if (parsed && typeof parsed === \"object\") {\n const obj = parsed;\n if (typeof obj.apiKey === \"string\") {\n return obj.apiKey;\n }\n }\n } catch {\n }\n return \"\";\n}\nfunction CommandPalette($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { commands, onClose, open = false } = $$props;\n const items = derived(() => commands.map((cmd, i) => ({ label: cmd.label, value: String(i) })));\n function handleSelect(item) {\n const index = parseInt(item.value, 10);\n if (commands[index]) {\n commands[index].action();\n }\n }\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n CommandMenu($$renderer3, {\n items: items(),\n placeholder: \"Type a command...\",\n emptyText: \"No matching commands\",\n onselect: handleSelect,\n onclose: onClose,\n classes: \"command-palette\",\n get open() {\n return open;\n },\n set open($$value) {\n open = $$value;\n $$settled = false;\n }\n });\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n bind_props($$props, { open });\n });\n}\nconst isMac = typeof navigator !== \"undefined\" && /Mac|iPhone|iPad/.test(navigator.userAgent);\nconst modLabel = isMac ? \"⌘\" : \"Ctrl\";\nfunction getShortcutList() {\n return [\n { description: \"Command palette\", keys: `${modLabel}+K` },\n { description: \"Keyboard shortcuts\", keys: `${modLabel}+/` }\n ];\n}\nfunction ShareSheet($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const { open = false, shareUrl, terminalId } = $$props;\n let active = false;\n let currentMode = null;\n let mode = \"view\";\n let password = \"\";\n let busy = false;\n let errorMsg = null;\n let copied = false;\n const PASSWORD_ALPHABET = \"ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789\";\n const canSubmit = derived(() => active ? password.length === 0 || password.length >= 6 : password.length >= 6);\n function generatePassword() {\n const bytes = crypto.getRandomValues(new Uint8Array(16));\n password = Array.from(bytes, (b) => PASSWORD_ALPHABET[b % PASSWORD_ALPHABET.length]).join(\"\");\n }\n async function saveShare() {\n if (busy || !canSubmit()) {\n return;\n }\n busy = true;\n errorMsg = null;\n try {\n const res = await fetch(`/api/terminals/${terminalId}/share`, {\n body: JSON.stringify({ mode, ...password ? { password } : {} }),\n headers: {\n Authorization: `Bearer ${getApiKey()}`,\n \"Content-Type\": \"application/json\"\n },\n method: \"PUT\"\n });\n if (!res.ok) {\n const data = await res.json().catch(() => ({}));\n errorMsg = data.error ?? \"Failed to save share.\";\n return;\n }\n const info = await res.json();\n active = info.active;\n currentMode = info.mode ?? null;\n password = \"\";\n } catch {\n errorMsg = \"Failed to reach the server.\";\n } finally {\n busy = false;\n }\n }\n async function revokeShare() {\n if (busy) {\n return;\n }\n busy = true;\n errorMsg = null;\n try {\n const res = await fetch(`/api/terminals/${terminalId}/share`, {\n headers: { Authorization: `Bearer ${getApiKey()}` },\n method: \"DELETE\"\n });\n if (!res.ok) {\n errorMsg = \"Failed to revoke share.\";\n return;\n }\n active = false;\n currentMode = null;\n password = \"\";\n } catch {\n errorMsg = \"Failed to reach the server.\";\n } finally {\n busy = false;\n }\n }\n async function copyUrl() {\n try {\n await navigator.clipboard.writeText(shareUrl);\n copied = true;\n setTimeout(\n () => {\n copied = false;\n },\n 2e3\n );\n } catch {\n errorMsg = \"Failed to copy.\";\n }\n }\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n if (open) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"share-backdrop svelte-fj2rhy\" role=\"presentation\"><div class=\"share-sheet svelte-fj2rhy\" role=\"dialog\" aria-label=\"Share terminal\" tabindex=\"-1\"><div class=\"share-sheet-header svelte-fj2rhy\"><h2 class=\"share-sheet-title svelte-fj2rhy\">Share terminal</h2> <button class=\"share-sheet-close svelte-fj2rhy\" aria-label=\"Close\">×</button></div> `);\n if (active) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"share-active-row svelte-fj2rhy\"><span class=\"share-active-dot svelte-fj2rhy\"></span> <span class=\"share-active-label svelte-fj2rhy\">Sharing is active (${escape_html(currentMode === \"control\" ? \"full control\" : \"view only\")})</span></div> <div class=\"share-url-row svelte-fj2rhy\"><span class=\"share-url svelte-fj2rhy\">${escape_html(shareUrl)}</span> `);\n Button($$renderer3, {\n classes: \"btn-secondary btn-sm\",\n onclick: () => {\n void copyUrl();\n },\n text: copied ? \"Copied\" : \"Copy\"\n });\n $$renderer3.push(`<!----></div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n $$renderer3.push(`<p class=\"share-sheet-sub svelte-fj2rhy\">Anyone with this page's link and the password below can access this terminal.</p>`);\n }\n $$renderer3.push(`<!--]--> <div class=\"share-field svelte-fj2rhy\"><span class=\"share-field-label svelte-fj2rhy\">Access</span> <div class=\"share-mode-toggle svelte-fj2rhy\"><button${attr_class(`share-mode-btn ${stringify(\"share-mode-active\")}`, \"svelte-fj2rhy\")}>View only</button> <button${attr_class(`share-mode-btn ${stringify(\"\")}`, \"svelte-fj2rhy\")}>Full control</button></div></div> <div class=\"share-field svelte-fj2rhy\"><span class=\"share-field-label svelte-fj2rhy\">${escape_html(active ? \"New password (leave empty to keep current)\" : \"Password (min 6 chars)\")}</span> <div class=\"share-password-row svelte-fj2rhy\">`);\n Input($$renderer3, {\n dataType: \"text\",\n placeholder: \"Password\",\n classes: \"share-password-input\",\n get value() {\n return password;\n },\n set value($$value) {\n password = $$value;\n $$settled = false;\n }\n });\n $$renderer3.push(`<!----> `);\n Button($$renderer3, {\n classes: \"btn-secondary btn-sm\",\n onclick: generatePassword,\n text: \"Generate\"\n });\n $$renderer3.push(`<!----></div></div> `);\n if (errorMsg) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<p class=\"share-error svelte-fj2rhy\">${escape_html(errorMsg)}</p>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> <div class=\"share-actions svelte-fj2rhy\">`);\n if (active) {\n $$renderer3.push(\"<!--[0-->\");\n Button($$renderer3, {\n classes: \"btn-danger btn-sm\",\n onclick: () => {\n void revokeShare();\n },\n disabled: busy,\n text: \"Stop sharing\"\n });\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n Button($$renderer3, {\n classes: \"btn-primary btn-sm\",\n onclick: () => {\n void saveShare();\n },\n disabled: busy || !canSubmit(),\n showLoader: busy,\n text: active ? \"Update\" : \"Start sharing\"\n });\n $$renderer3.push(`<!----></div></div></div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nfunction ShortcutsHelp($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const { onClose, open } = $$props;\n const shortcuts = getShortcutList();\n if (open) {\n $$renderer2.push(\"<!--[0-->\");\n {\n let content = function($$renderer3) {\n $$renderer3.push(`<div class=\"shortcuts-list svelte-1u7lstk\"><!--[-->`);\n const each_array = ensure_array_like(shortcuts);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let shortcut = each_array[$$index];\n $$renderer3.push(`<div class=\"shortcut-row svelte-1u7lstk\"><span class=\"shortcut-desc svelte-1u7lstk\">${escape_html(shortcut.description)}</span> `);\n KeyboardInput($$renderer3, { keys: shortcut.keys, classes: \"shortcut-kbd\" });\n $$renderer3.push(`<!----></div>`);\n }\n $$renderer3.push(`<!--]--></div>`);\n };\n Modal($$renderer2, {\n header: { text: \"Keyboard Shortcuts\" },\n onoverlayClick: onClose,\n classes: \"shortcuts-modal\",\n content\n });\n }\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n var $$store_subs;\n let terminal = null;\n let authMode = null;\n let shareSheetOpen = false;\n let showShortcutsHelp = false;\n let showCommandPalette = false;\n const terminalId = derived(() => store_get($$store_subs ??= {}, \"$page\", page).params.id);\n const isRunning = derived(() => terminal?.status === \"running\");\n const commandName = derived(() => \"terminal\");\n const isOwner = derived(() => authMode === \"owner\");\n const shareUrl = derived(() => typeof window !== \"undefined\" ? `${window.location.origin}/terminals/${terminalId()}` : \"\");\n const paletteCommands = derived(() => {\n const cmds = [\n { action: () => void goto(), label: \"Go to Home\" },\n {\n action: () => void goto(),\n label: \"Go to Terminals\"\n },\n { action: () => void goto(), label: \"Go to Settings\" },\n {\n action: () => {\n showShortcutsHelp = true;\n },\n label: \"Show keyboard shortcuts\"\n }\n ];\n if (isRunning() && isOwner()) {\n cmds.push({ action: () => void killTerminal(), label: \"Kill terminal\" });\n }\n return cmds;\n });\n async function killTerminal() {\n {\n return;\n }\n }\n onDestroy(() => {\n });\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n head(\"1tubujq\", $$renderer3, ($$renderer4) => {\n $$renderer4.title(($$renderer5) => {\n $$renderer5.push(`<title>${escape_html(commandName())} - Terminal - Shooter</title>`);\n });\n $$renderer4.push(`<meta name=\"description\" content=\"Interactive terminal session\"/>`);\n });\n {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"term-page svelte-1tubujq\"><div class=\"term-topbar svelte-1tubujq\"><div class=\"skeleton\" style=\"width: 120px; height: 20px;\"></div></div> <div class=\"term-body-loading svelte-1tubujq\"><div class=\"skeleton\" style=\"width: 100%; height: 100%;\"></div></div></div>`);\n }\n $$renderer3.push(`<!--]--> `);\n ShortcutsHelp($$renderer3, {\n open: showShortcutsHelp,\n onClose: () => {\n showShortcutsHelp = false;\n }\n });\n $$renderer3.push(`<!----> `);\n ShareSheet($$renderer3, {\n open: shareSheetOpen,\n terminalId: terminalId() ?? \"\",\n shareUrl: shareUrl()\n });\n $$renderer3.push(`<!----> `);\n CommandPalette($$renderer3, {\n commands: paletteCommands(),\n onClose: () => {\n showCommandPalette = false;\n },\n get open() {\n return showCommandPalette;\n },\n set open($$value) {\n showCommandPalette = $$value;\n $$settled = false;\n }\n });\n $$renderer3.push(`<!---->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n if ($$store_subs) unsubscribe_stores($$store_subs);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_page.svelte-tBuIq8Pg.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.svelte.js"],"sourcesContent":["import { h as head, e as escape_html, d as derived, f as ensure_array_like } from \"../../chunks/index.js\";\nimport { g as goto } from \"../../chunks/client.js\";\nimport { R as RefreshSvg, E as EmptyState, c as clearCache } from \"../../chunks/cache.js\";\nimport { S as SettingsSvg } from \"../../chunks/settings.js\";\nimport \"../../chunks/markdown.js\";\nimport { o as onDestroy } from \"../../chunks/index-server.js\";\nimport { B as Button } from \"../../chunks/Button.js\";\n/* empty css */\nimport { I as Icon } from \"../../chunks/Icon.js\";\nimport { S as Shimmer } from \"../../chunks/Shimmer.js\";\nimport { S as SvelteMap, a as SvelteSet } from \"../../chunks/index-server2.js\";\nconst ACTIVE_THRESHOLD_MS = 3e4;\nlet sessions = [];\nconst summarizers = new SvelteMap();\nconst sessionSockets = new SvelteMap();\nconst pendingSessionSockets = new SvelteSet();\nfunction disconnect() {\n for (const [, sock] of sessionSockets) {\n sock.onclose = null;\n sock.close();\n }\n sessionSockets.clear();\n pendingSessionSockets.clear();\n summarizers.clear();\n}\nfunction getCards() {\n const now = Date.now();\n return sortSessions(sessions).map((s) => {\n const createdMs = Date.parse(s.createdAt);\n const lastEventTs = s.events.length > 0 ? Date.parse(s.events[s.events.length - 1].timestamp) : 0;\n return {\n ...s,\n duration: now - createdMs,\n goal: s.goal,\n // Ensure goal is mapped\n isActive: lastEventTs > 0 && now - lastEventTs < ACTIVE_THRESHOLD_MS,\n isSummarizing: s.isSummarizing,\n // Ensure isSummarizing is mapped\n summary: s.summary\n // Ensure summary is mapped\n };\n });\n}\nfunction sortSessions(list) {\n return [...list].sort((a, b) => {\n const order = { error: 2, exited: 3, idle: 1, running: 0 };\n const rankA = order[a.status];\n const rankB = order[b.status];\n if (rankA !== rankB) {\n return rankA - rankB;\n }\n if (a.status !== \"exited\" && b.status !== \"exited\") {\n return b.createdAt.localeCompare(a.createdAt);\n }\n const exitA = a.exitedAt ?? a.createdAt;\n const exitB = b.exitedAt ?? b.createdAt;\n return exitB.localeCompare(exitA);\n });\n}\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let projects = [];\n let loading = false;\n const cards = derived(getCards);\n onDestroy(() => {\n disconnect();\n });\n async function fetchSessions(append = false, bustCache = false) {\n {\n return;\n }\n }\n async function forceRefresh() {\n loading = true;\n clearCache(\"shooter_projects\");\n await fetchSessions(false, true);\n }\n function navigateToConfig() {\n void goto();\n }\n function totalSessionCount() {\n return projects.reduce((sum, p) => sum + p.sessionCount, 0);\n }\n head(\"1uha8ag\", $$renderer2, ($$renderer3) => {\n $$renderer3.title(($$renderer4) => {\n $$renderer4.push(`<title>Dashboard - Shooter</title>`);\n });\n $$renderer3.push(`<meta name=\"description\" content=\"Active terminals and Claude Code sessions\"/>`);\n });\n $$renderer2.push(`<main class=\"main\"><div class=\"page-header\"><div class=\"page-header-content\"><div><h1 class=\"page-title\">Dashboard</h1> <p class=\"page-description\">Active terminals and Claude Code sessions</p></div> <div class=\"page-actions\">`);\n Button($$renderer2, {\n classes: \"btn-secondary\",\n onclick: forceRefresh,\n disabled: loading,\n children: ($$renderer3) => {\n Icon($$renderer3, { svg: RefreshSvg, classes: \"icon-14\" });\n $$renderer3.push(`<!----> Refresh`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----></div></div> `);\n if (projects.length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"stats-bar svelte-1uha8ag\"><div class=\"stat-chip svelte-1uha8ag\"><span class=\"stat-value svelte-1uha8ag\">${escape_html(projects.length)}</span> <span class=\"stat-label svelte-1uha8ag\">${escape_html(projects.length === 1 ? \"project\" : \"projects\")}</span></div> <div class=\"stat-chip svelte-1uha8ag\"><span class=\"stat-value svelte-1uha8ag\">${escape_html(totalSessionCount())}</span> <span class=\"stat-label svelte-1uha8ag\">${escape_html(totalSessionCount() === 1 ? \"session\" : \"sessions\")}</span></div> `);\n if (cards().length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"stat-chip stat-chip-active svelte-1uha8ag\"><span class=\"stat-value svelte-1uha8ag\">${escape_html(cards().length)}</span> <span class=\"stat-label svelte-1uha8ag\">active</span></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (loading && projects.length === 0 && cards().length === 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"loading-container\"><!--[-->`);\n const each_array = ensure_array_like(Array(3));\n for (let i = 0, $$length = each_array.length; i < $$length; i++) {\n each_array[i];\n Shimmer($$renderer2, { classes: \"shimmer-card\" });\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[1-->\");\n {\n let icon = function($$renderer3) {\n Icon($$renderer3, { svg: SettingsSvg, classes: \"icon-24\" });\n };\n EmptyState($$renderer2, {\n title: \"Configuration Required\",\n description: \"Set up your API credentials to start tracking sessions\",\n icon,\n children: ($$renderer3) => {\n Button($$renderer3, {\n classes: \"btn-primary\",\n onclick: navigateToConfig,\n text: \"Configure Settings\"\n });\n }\n });\n }\n }\n $$renderer2.push(`<!--]--></main>`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_page.svelte-tBuIq8Pg.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.svelte.js"],"sourcesContent":["import { ad as head, ab as escape_html, a1 as derived, ae as ensure_array_like } from \"../../chunks/index.js\";\nimport { g as goto } from \"../../chunks/client.js\";\nimport { R as RefreshSvg, E as EmptyState, c as clearCache } from \"../../chunks/cache.js\";\nimport { S as SettingsSvg } from \"../../chunks/settings.js\";\nimport \"../../chunks/markdown.js\";\nimport { o as onDestroy } from \"../../chunks/index-server.js\";\nimport { B as Button } from \"../../chunks/Button.js\";\n/* empty css */\nimport { I as Icon } from \"../../chunks/Icon.js\";\nimport { S as Shimmer } from \"../../chunks/Shimmer.js\";\nimport { S as SvelteMap, a as SvelteSet } from \"../../chunks/index-server2.js\";\nconst ACTIVE_THRESHOLD_MS = 3e4;\nlet sessions = [];\nconst summarizers = new SvelteMap();\nconst sessionSockets = new SvelteMap();\nconst pendingSessionSockets = new SvelteSet();\nfunction disconnect() {\n for (const [, sock] of sessionSockets) {\n sock.onclose = null;\n sock.close();\n }\n sessionSockets.clear();\n pendingSessionSockets.clear();\n summarizers.clear();\n}\nfunction getCards() {\n const now = Date.now();\n return sortSessions(sessions).map((s) => {\n const createdMs = Date.parse(s.createdAt);\n const lastEventTs = s.events.length > 0 ? Date.parse(s.events[s.events.length - 1].timestamp) : 0;\n return {\n ...s,\n duration: now - createdMs,\n goal: s.goal,\n // Ensure goal is mapped\n isActive: lastEventTs > 0 && now - lastEventTs < ACTIVE_THRESHOLD_MS,\n isSummarizing: s.isSummarizing,\n // Ensure isSummarizing is mapped\n summary: s.summary\n // Ensure summary is mapped\n };\n });\n}\nfunction sortSessions(list) {\n return [...list].sort((a, b) => {\n const order = { error: 2, exited: 3, idle: 1, running: 0 };\n const rankA = order[a.status];\n const rankB = order[b.status];\n if (rankA !== rankB) {\n return rankA - rankB;\n }\n if (a.status !== \"exited\" && b.status !== \"exited\") {\n return b.createdAt.localeCompare(a.createdAt);\n }\n const exitA = a.exitedAt ?? a.createdAt;\n const exitB = b.exitedAt ?? b.createdAt;\n return exitB.localeCompare(exitA);\n });\n}\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let projects = [];\n let loading = false;\n const cards = derived(getCards);\n onDestroy(() => {\n disconnect();\n });\n async function fetchSessions(append = false, bustCache = false) {\n {\n return;\n }\n }\n async function forceRefresh() {\n loading = true;\n clearCache(\"shooter_projects\");\n await fetchSessions(false, true);\n }\n function navigateToConfig() {\n void goto();\n }\n function totalSessionCount() {\n return projects.reduce((sum, p) => sum + p.sessionCount, 0);\n }\n head(\"1uha8ag\", $$renderer2, ($$renderer3) => {\n $$renderer3.title(($$renderer4) => {\n $$renderer4.push(`<title>Dashboard - Shooter</title>`);\n });\n $$renderer3.push(`<meta name=\"description\" content=\"Active terminals and Claude Code sessions\"/>`);\n });\n $$renderer2.push(`<main class=\"main\"><div class=\"page-header\"><div class=\"page-header-content\"><div><h1 class=\"page-title\">Dashboard</h1> <p class=\"page-description\">Active terminals and Claude Code sessions</p></div> <div class=\"page-actions\">`);\n Button($$renderer2, {\n classes: \"btn-secondary\",\n onclick: forceRefresh,\n disabled: loading,\n children: ($$renderer3) => {\n Icon($$renderer3, { svg: RefreshSvg, classes: \"icon-14\" });\n $$renderer3.push(`<!----> Refresh`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----></div></div> `);\n if (projects.length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"stats-bar svelte-1uha8ag\"><div class=\"stat-chip svelte-1uha8ag\"><span class=\"stat-value svelte-1uha8ag\">${escape_html(projects.length)}</span> <span class=\"stat-label svelte-1uha8ag\">${escape_html(projects.length === 1 ? \"project\" : \"projects\")}</span></div> <div class=\"stat-chip svelte-1uha8ag\"><span class=\"stat-value svelte-1uha8ag\">${escape_html(totalSessionCount())}</span> <span class=\"stat-label svelte-1uha8ag\">${escape_html(totalSessionCount() === 1 ? \"session\" : \"sessions\")}</span></div> `);\n if (cards().length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"stat-chip stat-chip-active svelte-1uha8ag\"><span class=\"stat-value svelte-1uha8ag\">${escape_html(cards().length)}</span> <span class=\"stat-label svelte-1uha8ag\">active</span></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (loading && projects.length === 0 && cards().length === 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"loading-container\"><!--[-->`);\n const each_array = ensure_array_like(Array(3));\n for (let i = 0, $$length = each_array.length; i < $$length; i++) {\n each_array[i];\n Shimmer($$renderer2, { classes: \"shimmer-card\" });\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[1-->\");\n {\n let icon = function($$renderer3) {\n Icon($$renderer3, { svg: SettingsSvg, classes: \"icon-24\" });\n };\n EmptyState($$renderer2, {\n title: \"Configuration Required\",\n description: \"Set up your API credentials to start tracking sessions\",\n icon,\n children: ($$renderer3) => {\n Button($$renderer3, {\n classes: \"btn-primary\",\n onclick: navigateToConfig,\n text: \"Configure Settings\"\n });\n }\n });\n }\n }\n $$renderer2.push(`<!--]--></main>`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { s as shareStore } from './share-store-B9jMpVg0.js';
|
|
2
|
+
import { j as json } from './index-CoD1IJuy.js';
|
|
3
|
+
import 'better-sqlite3';
|
|
4
|
+
import 'crypto';
|
|
5
|
+
import 'fs';
|
|
6
|
+
import 'path';
|
|
7
|
+
|
|
8
|
+
const GET = ({ params }) => {
|
|
9
|
+
return json({ shared: shareStore.getShare(params.id) !== null });
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { GET };
|
|
13
|
+
//# sourceMappingURL=_server.ts-B-evHL2q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-B-evHL2q.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/terminals/_id_/share/status/_server.ts.js"],"sourcesContent":["import { s as shareStore } from \"../../../../../../../chunks/share-store.js\";\nimport { json } from \"@sveltejs/kit\";\nconst GET = ({ params }) => {\n return json({ shared: shareStore.getShare(params.id) !== null });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;AAEK,MAAC,GAAG,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK;AAC5B,EAAE,OAAO,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;AAClE;;;;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
2
|
+
import { j as json } from './index-CoD1IJuy.js';
|
|
3
|
+
import { mkdirSync, writeFileSync, existsSync, readFileSync } from 'fs';
|
|
4
|
+
import { homedir } from 'os';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import './shared-server-DaWdgxVh.js';
|
|
7
|
+
import 'crypto';
|
|
8
|
+
|
|
9
|
+
const STATE_FILE = join(homedir(), ".shooter", "autopilot.json");
|
|
10
|
+
function control() {
|
|
11
|
+
return globalThis.__shooter_autopilot;
|
|
12
|
+
}
|
|
13
|
+
function readFileEnabled() {
|
|
14
|
+
try {
|
|
15
|
+
if (existsSync(STATE_FILE)) {
|
|
16
|
+
const parsed = JSON.parse(readFileSync(STATE_FILE, "utf-8"));
|
|
17
|
+
return Boolean(parsed?.enabled);
|
|
18
|
+
}
|
|
19
|
+
} catch {
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const GET = ({ request }) => {
|
|
24
|
+
const authError = validateAuth(request);
|
|
25
|
+
if (authError) {
|
|
26
|
+
return authError;
|
|
27
|
+
}
|
|
28
|
+
const ctrl = control();
|
|
29
|
+
return json({ enabled: ctrl ? ctrl.isEnabled() : readFileEnabled(), running: Boolean(ctrl) });
|
|
30
|
+
};
|
|
31
|
+
const POST = async ({ request }) => {
|
|
32
|
+
const authError = validateAuth(request);
|
|
33
|
+
if (authError) {
|
|
34
|
+
return authError;
|
|
35
|
+
}
|
|
36
|
+
let body;
|
|
37
|
+
try {
|
|
38
|
+
body = await request.json();
|
|
39
|
+
} catch {
|
|
40
|
+
return json({ error: "Invalid JSON body" }, { status: 400 });
|
|
41
|
+
}
|
|
42
|
+
if (typeof body.enabled !== "boolean") {
|
|
43
|
+
return json({ error: "enabled must be a boolean" }, { status: 400 });
|
|
44
|
+
}
|
|
45
|
+
const ctrl = control();
|
|
46
|
+
if (ctrl) {
|
|
47
|
+
ctrl.setEnabled(body.enabled);
|
|
48
|
+
} else {
|
|
49
|
+
try {
|
|
50
|
+
mkdirSync(join(homedir(), ".shooter"), { recursive: true });
|
|
51
|
+
writeFileSync(STATE_FILE, JSON.stringify({ enabled: body.enabled }), "utf-8");
|
|
52
|
+
} catch {
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return json({ enabled: body.enabled, running: Boolean(ctrl) });
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export { GET, POST };
|
|
59
|
+
//# sourceMappingURL=_server.ts-BB46Fbqn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BB46Fbqn.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/autopilot/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { mkdirSync, writeFileSync, existsSync, readFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\nconst STATE_FILE = join(homedir(), \".shooter\", \"autopilot.json\");\nfunction control() {\n return globalThis.__shooter_autopilot;\n}\nfunction readFileEnabled() {\n try {\n if (existsSync(STATE_FILE)) {\n const parsed = JSON.parse(readFileSync(STATE_FILE, \"utf-8\"));\n return Boolean(parsed?.enabled);\n }\n } catch {\n }\n return false;\n}\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const ctrl = control();\n return json({ enabled: ctrl ? ctrl.isEnabled() : readFileEnabled(), running: Boolean(ctrl) });\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.enabled !== \"boolean\") {\n return json({ error: \"enabled must be a boolean\" }, { status: 400 });\n }\n const ctrl = control();\n if (ctrl) {\n ctrl.setEnabled(body.enabled);\n } else {\n try {\n mkdirSync(join(homedir(), \".shooter\"), { recursive: true });\n writeFileSync(STATE_FILE, JSON.stringify({ enabled: body.enabled }), \"utf-8\");\n } catch {\n }\n }\n return json({ enabled: body.enabled, running: Boolean(ctrl) });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;;;;AAKA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC;AAChE,SAAS,OAAO,GAAG;AACnB,EAAE,OAAO,UAAU,CAAC,mBAAmB;AACvC;AACA,SAAS,eAAe,GAAG;AAC3B,EAAE,IAAI;AACN,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;AAChC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAClE,MAAM,OAAO,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;AACrC,IAAI;AACJ,EAAE,CAAC,CAAC,MAAM;AACV,EAAE;AACF,EAAE,OAAO,KAAK;AACd;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,MAAM,IAAI,GAAG,OAAO,EAAE;AACxB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/F;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,OAAO,KAAK,SAAS,EAAE;AACzC,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxE,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,OAAO,EAAE;AACxB,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,EAAE,CAAC,MAAM;AACT,IAAI,IAAI;AACR,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACjE,MAAM,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;AACnF,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAChE;;;;"}
|
|
@@ -4,7 +4,7 @@ import { c as createPendingRequest } from './pending-requests-C9p57WoU.js';
|
|
|
4
4
|
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
5
5
|
import admin from 'firebase-admin';
|
|
6
6
|
import { t as toErrorMessage } from './error-DDXB3duW.js';
|
|
7
|
-
import { b as broadcastEvent } from './
|
|
7
|
+
import { b as broadcastEvent } from './guest-registry-Dxvd7p-g.js';
|
|
8
8
|
import { existsSync, readFileSync } from 'fs';
|
|
9
9
|
import { join } from 'path';
|
|
10
10
|
import { homedir } from 'os';
|
|
@@ -242,7 +242,8 @@ function isDuplicateNotification(title, message, data, waitForResponse = false)
|
|
|
242
242
|
if (waitForResponse) {
|
|
243
243
|
return false;
|
|
244
244
|
}
|
|
245
|
-
const
|
|
245
|
+
const dataRecord = data;
|
|
246
|
+
const key = dataRecord?.dedupKey ? dataRecord.dedupKey : `${title}|${message}|${data?.category || "unknown"}`;
|
|
246
247
|
const now = Date.now();
|
|
247
248
|
if (notificationCache.has(key)) {
|
|
248
249
|
const lastSent = notificationCache.get(key) ?? 0;
|
|
@@ -258,7 +259,8 @@ function isDuplicateNotification(title, message, data, waitForResponse = false)
|
|
|
258
259
|
return false;
|
|
259
260
|
}
|
|
260
261
|
function recordNotification(title, message, data) {
|
|
261
|
-
const
|
|
262
|
+
const dataRecord = data;
|
|
263
|
+
const key = dataRecord?.dedupKey ? dataRecord.dedupKey : `${title}|${message}|${data?.category || "unknown"}`;
|
|
262
264
|
notificationCache.set(key, Date.now());
|
|
263
265
|
}
|
|
264
266
|
const POST = async ({ request }) => {
|
|
@@ -280,6 +282,7 @@ const POST = async ({ request }) => {
|
|
|
280
282
|
const subtitle = typeof body.subtitle === "string" ? body.subtitle : void 0;
|
|
281
283
|
const skipPush = typeof body.skipPush === "boolean" ? body.skipPush : false;
|
|
282
284
|
const waitForResponse = typeof body.waitForResponse === "boolean" ? body.waitForResponse : false;
|
|
285
|
+
const forcePush = typeof body.forcePush === "boolean" ? body.forcePush : false;
|
|
283
286
|
const notificationCategory = typeof body.notificationCategory === "string" && body.notificationCategory.length > 0 ? body.notificationCategory : void 0;
|
|
284
287
|
const question = typeof body.question === "string" ? body.question : void 0;
|
|
285
288
|
const options = Array.isArray(body.options) && body.options.every((o) => o && typeof o === "object") ? body.options : void 0;
|
|
@@ -322,7 +325,7 @@ const POST = async ({ request }) => {
|
|
|
322
325
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
323
326
|
});
|
|
324
327
|
}
|
|
325
|
-
if (skipPush) {
|
|
328
|
+
if (skipPush && !forcePush) {
|
|
326
329
|
if (waitForResponse) {
|
|
327
330
|
createPendingRequest(canonicalRequestId, {
|
|
328
331
|
options,
|
|
@@ -510,4 +513,4 @@ const GET = ({ request, url }) => {
|
|
|
510
513
|
};
|
|
511
514
|
|
|
512
515
|
export { GET, POST };
|
|
513
|
-
//# sourceMappingURL=_server.ts-
|
|
516
|
+
//# sourceMappingURL=_server.ts-BWVlO8iV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BWVlO8iV.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/notify/_server.ts.js"],"sourcesContent":["import { b as private_env } from \"../../../../chunks/shared-server.js\";\nimport { L as LibraryAPNsService } from \"../../../../chunks/library-apns.js\";\nimport { c as createPendingRequest } from \"../../../../chunks/pending-requests.js\";\nimport { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport admin from \"firebase-admin\";\nimport { t as toErrorMessage } from \"../../../../chunks/error.js\";\nimport { b as broadcastEvent } from \"../../../../chunks/guest-registry.js\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport \"../../../../chunks/super-session-handler.js\";\nimport { json } from \"@sveltejs/kit\";\nconst MAX_HISTORY = 100;\nconst history = [];\nfunction addNotification(record) {\n history.unshift(record);\n if (history.length > MAX_HISTORY) {\n history.length = MAX_HISTORY;\n }\n}\nfunction getNotifications(limit = 50) {\n return history.slice(0, limit);\n}\nlet app = null;\nfunction isFCMConfigured() {\n return !!(process.env.FCM_PROJECT_ID && process.env.FCM_CLIENT_EMAIL && process.env.FCM_PRIVATE_KEY);\n}\nasync function sendFCMNotification(deviceToken, payload) {\n try {\n const fcmApp = getApp();\n const message = {\n android: {\n priority: \"high\",\n // Ensures delivery even in Doze mode\n ttl: 3e5\n // 5 minutes TTL (matches pending request expiry)\n },\n data: {\n body: payload.body || payload.message || \"\",\n category: payload.category ?? (typeof payload.data?.category === \"string\" ? payload.data.category : \"\"),\n project: typeof payload.data?.project === \"string\" ? payload.data.project : \"\",\n requestId: typeof payload.data?.requestId === \"string\" ? payload.data.requestId : \"\",\n source: typeof payload.data?.source === \"string\" ? payload.data.source : \"\",\n subtitle: payload.subtitle ?? \"\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title: payload.title,\n toolInput: payload.data?.toolInput ? JSON.stringify(payload.data.toolInput) : \"\",\n toolName: typeof payload.data?.toolName === \"string\" ? payload.data.toolName : \"\",\n type: typeof payload.data?.type === \"string\" ? payload.data.type : \"\"\n },\n token: deviceToken\n };\n const messageId = await admin.messaging(fcmApp).send(message);\n return { messageId, success: true };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(\"[FCM] Send failed:\", errorMessage);\n return { error: errorMessage, success: false };\n }\n}\nfunction getApp() {\n if (!app) {\n const projectId = process.env.FCM_PROJECT_ID;\n const clientEmail = process.env.FCM_CLIENT_EMAIL;\n const privateKey = process.env.FCM_PRIVATE_KEY?.replace(/\\\\n/g, \"\\n\");\n if (!projectId || !clientEmail || !privateKey) {\n throw new Error(\n \"FCM not configured: missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY\"\n );\n }\n app = admin.initializeApp({\n credential: admin.credential.cert({ clientEmail, privateKey, projectId })\n });\n }\n return app;\n}\nfunction readPersistedDeviceToken(platform) {\n const tokensFile = join(homedir(), \".shooter\", \"device-tokens.json\");\n if (!existsSync(tokensFile)) {\n return void 0;\n }\n try {\n const parsed = JSON.parse(readFileSync(tokensFile, \"utf-8\"));\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n const value = parsed[platform];\n return typeof value === \"string\" && value ? value : void 0;\n }\n } catch {\n }\n return void 0;\n}\nlet apnsSingleton = null;\nfunction getAPNsClient() {\n if (!apnsSingleton) {\n apnsSingleton = new LibraryAPNsService();\n }\n return apnsSingleton;\n}\nconst notificationCache = /* @__PURE__ */ new Map();\nconst DEDUP_WINDOW = 1e4;\nfunction broadcastHookEvent(body) {\n const data = body.data ?? {};\n const eventType = typeof data.eventType === \"string\" ? data.eventType : typeof body.eventType === \"string\" ? body.eventType : \"\";\n const tool = typeof data.tool === \"string\" ? data.tool : \"\";\n const terminalId = typeof data.terminalId === \"string\" ? data.terminalId : void 0;\n const sessionId = typeof data.sessionId === \"string\" ? data.sessionId : void 0;\n switch (eventType) {\n case \"error\":\n broadcastEvent({\n error: typeof data.error === \"string\" ? data.error : typeof data.message === \"string\" ? data.message : \"Unknown error\",\n terminalId,\n tool,\n type: \"tool-failed\"\n });\n break;\n case \"idle_input\":\n case \"session.idle\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-idle\"\n });\n break;\n case \"permission\":\n case \"permission_notification\":\n if (data.requestId && data.toolName) {\n broadcastEvent({\n input: typeof data.toolInput === \"object\" && data.toolInput !== null ? data.toolInput : {},\n requestId: data.requestId,\n tool: data.toolName,\n type: \"permission-requested\"\n });\n }\n break;\n case \"question\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-question\"\n });\n break;\n case \"tool.after\":\n broadcastEvent({ success: true, terminalId, tool, type: \"tool-completed\" });\n break;\n case \"tool.before\":\n broadcastEvent({\n command: typeof data.command === \"string\" ? data.command : \"\",\n filePath: typeof data.filePath === \"string\" ? data.filePath : typeof data.files === \"string\" ? data.files : \"\",\n terminalId,\n tool,\n type: \"tool-started\"\n });\n break;\n }\n}\nfunction buildNotificationRecord(id, title, message, status, data, error) {\n return {\n category: data?.category ?? null,\n data: data ?? null,\n error: error ?? null,\n id,\n message,\n project: data?.project ?? null,\n source: data?.source ?? null,\n status,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title,\n tool: data?.tool ?? null\n };\n}\nfunction intelligentNotificationFilter(title, message, data, waitForResponse = false) {\n const source = data?.source || \"unknown\";\n if (isDuplicateNotification(title, message, data, waitForResponse)) {\n return {\n reason: \"Duplicate notification within 10-second window\",\n send: false\n };\n }\n if (source === \"smart-completion-detector\" || source === \"shooter-completion-detector\") {\n return {\n reason: \"Smart completion detector - completion or intervention needed\",\n send: true\n };\n }\n if (source === \"stop-hook\") {\n return {\n reason: \"Stop hook completion notification - session finished\",\n send: true\n };\n }\n const spamPatterns = [\n /PreToolUse/i,\n // Any PreToolUse notifications\n /PostToolUse/i,\n // Any PostToolUse notifications\n /^(Read|Write|Edit|Bash)\\s+Starting\\s*\\|\\s*\\w+$/i,\n // Only basic tool starting patterns\n /^unknown\\s*\\|\\s*\\w+$/i\n // Only \"unknown | projectname\" exactly\n ];\n const isSpam = spamPatterns.some((pattern) => pattern.test(title) || pattern.test(message));\n if (isSpam) {\n return {\n reason: \"Filtered spam notification from old hook system\",\n send: false\n };\n }\n const importantPatterns = [\n /session complete/i,\n /intervention needed/i,\n /error/i,\n /failed/i,\n /blocked/i,\n /attention/i\n ];\n const isImportant = importantPatterns.some(\n (pattern) => pattern.test(title) || pattern.test(message)\n );\n if (isImportant) {\n return {\n reason: \"Important notification - completion or intervention\",\n send: true\n };\n }\n return {\n reason: \"General notification - allowing by default\",\n send: true\n };\n}\nfunction isDuplicateNotification(title, message, data, waitForResponse = false) {\n if (waitForResponse) {\n return false;\n }\n const dataRecord = data;\n const key = dataRecord?.dedupKey ? dataRecord.dedupKey : `${title}|${message}|${data?.category || \"unknown\"}`;\n const now = Date.now();\n if (notificationCache.has(key)) {\n const lastSent = notificationCache.get(key) ?? 0;\n if (now - lastSent < DEDUP_WINDOW) {\n return true;\n }\n }\n for (const [k, v] of notificationCache.entries()) {\n if (now - v > DEDUP_WINDOW) {\n notificationCache.delete(k);\n }\n }\n return false;\n}\nfunction recordNotification(title, message, data) {\n const dataRecord = data;\n const key = dataRecord?.dedupKey ? dataRecord.dedupKey : `${title}|${message}|${data?.category || \"unknown\"}`;\n notificationCache.set(key, Date.now());\n}\nconst POST = async ({ request }) => {\n try {\n const apnsClient = getAPNsClient();\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const rawBody = await request.json();\n if (!rawBody || typeof rawBody !== \"object\" || Array.isArray(rawBody)) {\n return json({ error: \"Request body must be a JSON object\" }, { status: 400 });\n }\n const body = rawBody;\n const data = body.data;\n const requestDeviceToken = body.deviceToken;\n const message = body.message;\n const title = body.title;\n const subtitle = typeof body.subtitle === \"string\" ? body.subtitle : void 0;\n const skipPush = typeof body.skipPush === \"boolean\" ? body.skipPush : false;\n const waitForResponse = typeof body.waitForResponse === \"boolean\" ? body.waitForResponse : false;\n const forcePush = typeof body.forcePush === \"boolean\" ? body.forcePush : false;\n const notificationCategory = typeof body.notificationCategory === \"string\" && body.notificationCategory.length > 0 ? body.notificationCategory : void 0;\n const question = typeof body.question === \"string\" ? body.question : void 0;\n const options = Array.isArray(body.options) && body.options.every((o) => o && typeof o === \"object\") ? body.options : void 0;\n const responseKindRaw = body.responseKind;\n const responseKind = responseKindRaw === \"hook\" || responseKindRaw === \"pty\" || responseKindRaw === \"info\" ? responseKindRaw : void 0;\n try {\n broadcastHookEvent(body);\n } catch {\n }\n if (!title || typeof title !== \"string\" || !message || typeof message !== \"string\") {\n return json({ error: \"Title and message are required and must be strings\" }, { status: 400 });\n }\n if (requestDeviceToken !== void 0 && typeof requestDeviceToken !== \"string\") {\n return json({ error: \"deviceToken must be a string\" }, { status: 400 });\n }\n const requestId = Math.random().toString(36).substring(2, 15);\n const dataRequestId = typeof data?.requestId === \"string\" ? data.requestId : void 0;\n const canonicalRequestId = dataRequestId || requestId;\n const shouldSendNotification = intelligentNotificationFilter(\n title,\n message,\n data,\n waitForResponse\n );\n if (!shouldSendNotification.send) {\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"filtered\",\n data,\n shouldSendNotification.reason\n )\n );\n return json({\n message: \"Notification filtered (not sent)\",\n reason: shouldSendNotification.reason,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n if (skipPush && !forcePush) {\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"skipped\", data));\n return json({\n message: \"Push skipped (WebSocket clients connected)\",\n requestId: canonicalRequestId,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const payload = {\n badge: 1,\n body: message,\n // notificationCategory wins when explicitly set so plan-mode /\n // elicitation flows can pick CLAUDE_PLAN_APPROVAL / CHOICE_2..4.\n // Falls back to CLAUDE_PERMISSION for the legacy bidirectional\n // permission flow when only waitForResponse is provided.\n category: notificationCategory ?? (waitForResponse ? \"CLAUDE_PERMISSION\" : void 0),\n data: {\n ...data,\n requestId: canonicalRequestId,\n source: \"modern-apns-api\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n waitForResponse: waitForResponse || false\n },\n message: null,\n sound: \"default\",\n ...subtitle ? { subtitle } : {},\n title\n };\n const platform = private_env.DEVICE_PLATFORM || \"ios\";\n if (platform === \"android\") {\n if (!isFCMConfigured()) {\n return json(\n {\n details: \"Missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY environment variables\",\n error: \"FCM not configured\"\n },\n { status: 500 }\n );\n }\n const androidToken = requestDeviceToken?.trim() || private_env.ANDROID_DEVICE_TOKEN?.trim() || readPersistedDeviceToken(\"android\");\n if (!androidToken) {\n return json(\n {\n details: \"No Android device token available — set ANDROID_DEVICE_TOKEN, pass deviceToken in the request body, or open the Android app so it can auto-register its FCM token.\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n const fcmResult = await sendFCMNotification(androidToken, payload);\n if (fcmResult.success) {\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result: { messageId: fcmResult.messageId },\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } else {\n console.error(`[notify] FCM delivery failed: ${fcmResult.error}`);\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"failed\",\n data,\n fcmResult.error\n )\n );\n return json(\n {\n details: fcmResult.error,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n } else {\n if (!apnsClient.isConfigured()) {\n return json(\n {\n details: \"Missing APNS_KEY, APNS_KEY_ID, or APNS_TEAM_ID environment variables\",\n error: \"APNs client not configured\"\n },\n { status: 500 }\n );\n }\n const deviceToken = requestDeviceToken?.trim() || private_env.DEVICE_TOKEN?.trim();\n if (!deviceToken) {\n return json(\n {\n details: \"DEVICE_TOKEN environment variable is missing and no deviceToken in request body\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n try {\n const result = await apnsClient.sendNotification(deviceToken, payload);\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (notificationError) {\n const notifErrMsg = toErrorMessage(notificationError);\n console.error(`[notify] APNs delivery failed: ${notifErrMsg}`);\n addNotification(\n buildNotificationRecord(canonicalRequestId, title, message, \"failed\", data, notifErrMsg)\n );\n return json(\n {\n details: notifErrMsg,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n }\n } catch (error) {\n console.error(\"Notification error:\", error);\n return json(\n {\n details: toErrorMessage(error),\n error: \"Failed to send notification\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n};\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const limit = parseInt(url.searchParams.get(\"limit\") || \"50\");\n const notifications = getNotifications(limit);\n return json({\n count: notifications.length,\n notifications,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import 'crypto';
|
|
|
6
6
|
const ALLOWED_CLIENT_HEADERS = {
|
|
7
7
|
anthropic: /* @__PURE__ */ new Set(["anthropic-beta", "anthropic-version"]),
|
|
8
8
|
"google-ai": /* @__PURE__ */ new Set([]),
|
|
9
|
+
litellm: /* @__PURE__ */ new Set([]),
|
|
9
10
|
mistral: /* @__PURE__ */ new Set([]),
|
|
10
11
|
openai: /* @__PURE__ */ new Set(["openai-organization", "openai-project"])
|
|
11
12
|
};
|
|
@@ -35,13 +36,25 @@ const POST = async ({ request }) => {
|
|
|
35
36
|
mistral: "https://api.mistral.ai/",
|
|
36
37
|
openai: "https://api.openai.com/"
|
|
37
38
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
if (provider === "litellm") {
|
|
40
|
+
const rawBase = private_env.LITELLM_BASE_URL?.trim();
|
|
41
|
+
if (!rawBase) {
|
|
42
|
+
return json({ error: "LiteLLM is not configured on this server" }, { status: 403 });
|
|
43
|
+
}
|
|
44
|
+
const litellmPrefix = `${rawBase.replace(/\/+$/, "")}/`;
|
|
45
|
+
if (!url.startsWith(litellmPrefix)) {
|
|
46
|
+
return json({ error: `Provider "${provider}" or URL not allowed` }, { status: 403 });
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
const allowedPrefix = ALLOWED_PREFIXES[provider];
|
|
50
|
+
if (!allowedPrefix || !url.startsWith(allowedPrefix)) {
|
|
51
|
+
return json({ error: `Provider "${provider}" or URL not allowed` }, { status: 403 });
|
|
52
|
+
}
|
|
41
53
|
}
|
|
42
54
|
const apiKeyEnv = {
|
|
43
55
|
anthropic: private_env.ANTHROPIC_API_KEY ?? "",
|
|
44
56
|
"google-ai": private_env.GOOGLE_AI_API_KEY ?? "",
|
|
57
|
+
litellm: private_env.LITELLM_API_KEY ?? "",
|
|
45
58
|
mistral: private_env.MISTRAL_API_KEY ?? "",
|
|
46
59
|
openai: private_env.OPENAI_API_KEY ?? ""
|
|
47
60
|
};
|
|
@@ -63,9 +76,17 @@ const POST = async ({ request }) => {
|
|
|
63
76
|
} else if (provider === "google-ai") {
|
|
64
77
|
forwardHeaders["x-goog-api-key"] = apiKeyEnv["google-ai"];
|
|
65
78
|
} else if (provider === "openai") {
|
|
66
|
-
|
|
79
|
+
if (apiKeyEnv.openai) {
|
|
80
|
+
forwardHeaders.Authorization = `Bearer ${apiKeyEnv.openai}`;
|
|
81
|
+
}
|
|
67
82
|
} else if (provider === "mistral") {
|
|
68
|
-
|
|
83
|
+
if (apiKeyEnv.mistral) {
|
|
84
|
+
forwardHeaders.Authorization = `Bearer ${apiKeyEnv.mistral}`;
|
|
85
|
+
}
|
|
86
|
+
} else if (provider === "litellm") {
|
|
87
|
+
if (apiKeyEnv.litellm) {
|
|
88
|
+
forwardHeaders.Authorization = `Bearer ${apiKeyEnv.litellm}`;
|
|
89
|
+
}
|
|
69
90
|
}
|
|
70
91
|
const controller = new AbortController();
|
|
71
92
|
const timeout = setTimeout(() => {
|
|
@@ -95,4 +116,4 @@ const POST = async ({ request }) => {
|
|
|
95
116
|
};
|
|
96
117
|
|
|
97
118
|
export { POST };
|
|
98
|
-
//# sourceMappingURL=_server.ts-
|
|
119
|
+
//# sourceMappingURL=_server.ts-BevnuePu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BevnuePu.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/neurolink-proxy/_server.ts.js"],"sourcesContent":["import { b as private_env } from \"../../../../chunks/shared-server.js\";\nimport { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { json } from \"@sveltejs/kit\";\nconst ALLOWED_CLIENT_HEADERS = {\n anthropic: /* @__PURE__ */ new Set([\"anthropic-beta\", \"anthropic-version\"]),\n \"google-ai\": /* @__PURE__ */ new Set([]),\n litellm: /* @__PURE__ */ new Set([]),\n mistral: /* @__PURE__ */ new Set([]),\n openai: /* @__PURE__ */ new Set([\"openai-organization\", \"openai-project\"])\n};\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let payload;\n try {\n payload = await request.json();\n } catch {\n return json({ error: \"Invalid JSON body\" }, { status: 400 });\n }\n if (!payload || typeof payload !== \"object\" || typeof payload.provider !== \"string\" || typeof payload.url !== \"string\" || !payload.headers || typeof payload.headers !== \"object\") {\n return json({ error: \"Invalid proxy payload\" }, { status: 400 });\n }\n const {\n body,\n headers: reqHeaders,\n provider,\n url\n } = payload;\n const ALLOWED_PREFIXES = {\n anthropic: \"https://api.anthropic.com/\",\n \"google-ai\": \"https://generativelanguage.googleapis.com/\",\n mistral: \"https://api.mistral.ai/\",\n openai: \"https://api.openai.com/\"\n };\n if (provider === \"litellm\") {\n const rawBase = private_env.LITELLM_BASE_URL?.trim();\n if (!rawBase) {\n return json({ error: \"LiteLLM is not configured on this server\" }, { status: 403 });\n }\n const litellmPrefix = `${rawBase.replace(/\\/+$/, \"\")}/`;\n if (!url.startsWith(litellmPrefix)) {\n return json({ error: `Provider \"${provider}\" or URL not allowed` }, { status: 403 });\n }\n } else {\n const allowedPrefix = ALLOWED_PREFIXES[provider];\n if (!allowedPrefix || !url.startsWith(allowedPrefix)) {\n return json({ error: `Provider \"${provider}\" or URL not allowed` }, { status: 403 });\n }\n }\n const apiKeyEnv = {\n anthropic: private_env.ANTHROPIC_API_KEY ?? \"\",\n \"google-ai\": private_env.GOOGLE_AI_API_KEY ?? \"\",\n litellm: private_env.LITELLM_API_KEY ?? \"\",\n mistral: private_env.MISTRAL_API_KEY ?? \"\",\n openai: private_env.OPENAI_API_KEY ?? \"\"\n };\n const allowedForProvider = ALLOWED_CLIENT_HEADERS[provider] ?? /* @__PURE__ */ new Set();\n const normalizedReqHeaders = {};\n for (const [k, v] of Object.entries(reqHeaders)) {\n const key = k.toLowerCase();\n if (allowedForProvider.has(key)) {\n normalizedReqHeaders[key] = v;\n }\n }\n const forwardHeaders = {\n \"Content-Type\": \"application/json\",\n ...normalizedReqHeaders\n };\n if (provider === \"anthropic\") {\n forwardHeaders[\"x-api-key\"] = apiKeyEnv.anthropic;\n forwardHeaders[\"anthropic-version\"] = forwardHeaders[\"anthropic-version\"] ?? \"2023-06-01\";\n } else if (provider === \"google-ai\") {\n forwardHeaders[\"x-goog-api-key\"] = apiKeyEnv[\"google-ai\"];\n } else if (provider === \"openai\") {\n if (apiKeyEnv.openai) {\n forwardHeaders.Authorization = `Bearer ${apiKeyEnv.openai}`;\n }\n } else if (provider === \"mistral\") {\n if (apiKeyEnv.mistral) {\n forwardHeaders.Authorization = `Bearer ${apiKeyEnv.mistral}`;\n }\n } else if (provider === \"litellm\") {\n if (apiKeyEnv.litellm) {\n forwardHeaders.Authorization = `Bearer ${apiKeyEnv.litellm}`;\n }\n }\n const controller = new AbortController();\n const timeout = setTimeout(() => {\n controller.abort();\n }, 3e4);\n let resp;\n try {\n resp = await fetch(url, {\n body: JSON.stringify(body),\n headers: forwardHeaders,\n method: \"POST\",\n signal: controller.signal\n });\n } catch (err) {\n clearTimeout(timeout);\n const message = err instanceof Error ? err.message : \"Upstream request failed\";\n return json({ error: message }, { status: 502 });\n }\n clearTimeout(timeout);\n let data;\n try {\n data = await resp.json();\n } catch {\n return json({ error: \"Upstream returned non-JSON response\" }, { status: 502 });\n }\n return json(data, { status: resp.status });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { v as validateAuth } from './auth-DuunT7Cg.js';
|
|
2
|
+
import { p as ptyManager } from './pty-manager-ZqXqa-6A.js';
|
|
3
|
+
import { s as shareStore, h as hashPassword } from './share-store-B9jMpVg0.js';
|
|
4
|
+
import { c as closeGuests } from './guest-registry-Dxvd7p-g.js';
|
|
5
|
+
import { j as json } from './index-CoD1IJuy.js';
|
|
6
|
+
import './shared-server-DaWdgxVh.js';
|
|
7
|
+
import 'crypto';
|
|
8
|
+
import 'child_process';
|
|
9
|
+
import 'fs';
|
|
10
|
+
import 'path';
|
|
11
|
+
import 'url';
|
|
12
|
+
import './qwen-reader-DGfUbKaJ.js';
|
|
13
|
+
import 'os';
|
|
14
|
+
import './super-session-handler-DPyxFgmz.js';
|
|
15
|
+
import './registry-D4J_CuzW.js';
|
|
16
|
+
import 'better-sqlite3';
|
|
17
|
+
import './coordinator-DMU_ADXf.js';
|
|
18
|
+
import 'net';
|
|
19
|
+
|
|
20
|
+
const MIN_PASSWORD_LENGTH = 6;
|
|
21
|
+
const MODES = ["view", "control"];
|
|
22
|
+
function toInfo(terminalId) {
|
|
23
|
+
const share = shareStore.getShare(terminalId);
|
|
24
|
+
if (!share) {
|
|
25
|
+
return { active: false, createdAt: null, mode: null, updatedAt: null };
|
|
26
|
+
}
|
|
27
|
+
return { active: true, createdAt: share.createdAt, mode: share.mode, updatedAt: share.updatedAt };
|
|
28
|
+
}
|
|
29
|
+
const GET = ({ params, request }) => {
|
|
30
|
+
const authError = validateAuth(request);
|
|
31
|
+
if (authError) {
|
|
32
|
+
return authError;
|
|
33
|
+
}
|
|
34
|
+
return json(toInfo(params.id));
|
|
35
|
+
};
|
|
36
|
+
const PUT = async ({ params, request }) => {
|
|
37
|
+
const authError = validateAuth(request);
|
|
38
|
+
if (authError) {
|
|
39
|
+
return authError;
|
|
40
|
+
}
|
|
41
|
+
if (!ptyManager.get(params.id)) {
|
|
42
|
+
return json({ error: "Terminal not found" }, { status: 404 });
|
|
43
|
+
}
|
|
44
|
+
let body;
|
|
45
|
+
try {
|
|
46
|
+
body = await request.json();
|
|
47
|
+
} catch {
|
|
48
|
+
return json({ error: "Invalid JSON" }, { status: 400 });
|
|
49
|
+
}
|
|
50
|
+
if (!MODES.includes(body.mode)) {
|
|
51
|
+
return json({ error: "mode must be 'view' or 'control'" }, { status: 400 });
|
|
52
|
+
}
|
|
53
|
+
const existing = shareStore.getShare(params.id);
|
|
54
|
+
const password = typeof body.password === "string" ? body.password : "";
|
|
55
|
+
if (!existing && password.length < MIN_PASSWORD_LENGTH) {
|
|
56
|
+
return json(
|
|
57
|
+
{ error: `password is required (min ${String(MIN_PASSWORD_LENGTH)} chars)` },
|
|
58
|
+
{ status: 400 }
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
if (password && password.length < MIN_PASSWORD_LENGTH) {
|
|
62
|
+
return json(
|
|
63
|
+
{ error: `password must be at least ${String(MIN_PASSWORD_LENGTH)} chars` },
|
|
64
|
+
{ status: 400 }
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
shareStore.setShare({
|
|
69
|
+
createdAt: existing?.createdAt ?? now,
|
|
70
|
+
mode: body.mode,
|
|
71
|
+
// `existing` is guaranteed non-null when password is empty (validated above).
|
|
72
|
+
passwordHash: password ? hashPassword(password) : existing?.passwordHash ?? "",
|
|
73
|
+
terminalId: params.id,
|
|
74
|
+
updatedAt: now
|
|
75
|
+
});
|
|
76
|
+
if (password) {
|
|
77
|
+
shareStore.deleteSessions(params.id);
|
|
78
|
+
}
|
|
79
|
+
if (password || existing?.mode !== body.mode) {
|
|
80
|
+
closeGuests(params.id);
|
|
81
|
+
}
|
|
82
|
+
return json(toInfo(params.id));
|
|
83
|
+
};
|
|
84
|
+
const DELETE = ({ params, request }) => {
|
|
85
|
+
const authError = validateAuth(request);
|
|
86
|
+
if (authError) {
|
|
87
|
+
return authError;
|
|
88
|
+
}
|
|
89
|
+
shareStore.deleteShare(params.id);
|
|
90
|
+
const closed = closeGuests(params.id);
|
|
91
|
+
return json({ closedConnections: closed, success: true });
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export { DELETE, GET, PUT };
|
|
95
|
+
//# sourceMappingURL=_server.ts-CA5KUENM.js.map
|