@juspay/shooter 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/notifier.cjs +117 -33
- package/.claude/settings.json +14 -14
- package/README.md +116 -84
- package/bin/shooter.cjs +471 -102
- package/build/client/_app/immutable/assets/{0.CM9Hl6d-.css → 0.DC5pAwP3.css} +1 -1
- package/build/client/_app/immutable/assets/0.DC5pAwP3.css.br +0 -0
- package/build/client/_app/immutable/assets/{0.CM9Hl6d-.css.gz → 0.DC5pAwP3.css.gz} +0 -0
- package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.BoXp0JoS.css +1 -0
- package/build/client/_app/immutable/assets/3.BoXp0JoS.css.br +0 -0
- package/build/client/_app/immutable/assets/3.BoXp0JoS.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.eZGZN-BF.css +1 -0
- package/build/client/_app/immutable/assets/6.eZGZN-BF.css.br +0 -0
- package/build/client/_app/immutable/assets/6.eZGZN-BF.css.gz +0 -0
- package/build/client/_app/immutable/assets/{7.BCJ1IuMx.css → 7.PyEFVv_s.css} +1 -1
- package/build/client/_app/immutable/assets/7.PyEFVv_s.css.br +0 -0
- package/build/client/_app/immutable/assets/7.PyEFVv_s.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.gz +0 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css +1 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css.br +0 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css.gz +0 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css +1 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css.br +0 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css.gz +0 -0
- package/build/client/_app/immutable/assets/xterm.DFuMZ0ql.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{Cjwk_cGO.js → 50RPd5u3.js} +1 -1
- package/build/client/_app/immutable/chunks/50RPd5u3.js.br +0 -0
- package/build/client/_app/immutable/chunks/50RPd5u3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDC7XD4o.js +1 -0
- package/build/client/_app/immutable/chunks/BDC7XD4o.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDC7XD4o.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BTGVxaYV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BeONA6_G.js +2 -0
- package/build/client/_app/immutable/chunks/BeONA6_G.js.br +0 -0
- package/build/client/_app/immutable/chunks/BeONA6_G.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BlxrFPDK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BygiiMA0.js +1 -0
- package/build/client/_app/immutable/chunks/BygiiMA0.js.br +0 -0
- package/build/client/_app/immutable/chunks/BygiiMA0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CHvUpVYv.js +1 -0
- package/build/client/_app/immutable/chunks/CHvUpVYv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CHvUpVYv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CbqC9BW7.js +1 -0
- package/build/client/_app/immutable/chunks/CbqC9BW7.js.br +2 -0
- package/build/client/_app/immutable/chunks/CbqC9BW7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CdL99jkG.js +1 -0
- package/build/client/_app/immutable/chunks/CdL99jkG.js.br +0 -0
- package/build/client/_app/immutable/chunks/CdL99jkG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ClK4wZbC.js +61 -0
- package/build/client/_app/immutable/chunks/ClK4wZbC.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClK4wZbC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CojFyTPp.js +1 -0
- package/build/client/_app/immutable/chunks/CojFyTPp.js.br +0 -0
- package/build/client/_app/immutable/chunks/CojFyTPp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DLu6yJIZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DREFAyhX.js +60 -0
- package/build/client/_app/immutable/chunks/DREFAyhX.js.br +0 -0
- package/build/client/_app/immutable/chunks/DREFAyhX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js +1 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/K_aHH2KN.js +1 -0
- package/build/client/_app/immutable/chunks/K_aHH2KN.js.br +0 -0
- package/build/client/_app/immutable/chunks/K_aHH2KN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ona8oofC.js +1 -0
- package/build/client/_app/immutable/chunks/Ona8oofC.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ona8oofC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/PPVm8Dsz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/tjbnEgXP.js +1 -0
- package/build/client/_app/immutable/chunks/tjbnEgXP.js.br +0 -0
- package/build/client/_app/immutable/chunks/tjbnEgXP.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js +2 -0
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js.br +0 -0
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js +1 -0
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js.br +2 -0
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js +1 -0
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js +1 -0
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js +1 -0
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js +3 -0
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js +1 -0
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.shitbtHc.js +1 -0
- package/build/client/_app/immutable/nodes/5.shitbtHc.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.shitbtHc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js +2 -0
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js +2 -0
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/favicon.svg.gz +0 -0
- package/build/pty-holder.cjs +37 -8
- package/build/server/chunks/0-Cs1dzfRz.js +9 -0
- package/build/server/chunks/{0-q2IUp76Y.js.map → 0-Cs1dzfRz.js.map} +1 -1
- package/build/server/chunks/1-BCSX7oED.js +9 -0
- package/build/server/chunks/{1-CU50G5wZ.js.map → 1-BCSX7oED.js.map} +1 -1
- package/build/server/chunks/2-6gkeO8b4.js +9 -0
- package/build/server/chunks/2-6gkeO8b4.js.map +1 -0
- package/build/server/chunks/3-DH9J9Vsc.js +9 -0
- package/build/server/chunks/3-DH9J9Vsc.js.map +1 -0
- package/build/server/chunks/4-Rzy5TYjl.js +9 -0
- package/build/server/chunks/4-Rzy5TYjl.js.map +1 -0
- package/build/server/chunks/5-D0wB7nfE.js +9 -0
- package/build/server/chunks/5-D0wB7nfE.js.map +1 -0
- package/build/server/chunks/6-DR2ABDPq.js +9 -0
- package/build/server/chunks/6-DR2ABDPq.js.map +1 -0
- package/build/server/chunks/7-D-oQJsia.js +9 -0
- package/build/server/chunks/7-D-oQJsia.js.map +1 -0
- package/build/server/chunks/Button-C7D5W6wV.js +80 -0
- package/build/server/chunks/Button-C7D5W6wV.js.map +1 -0
- package/build/server/chunks/EmptyState-Ci4pSpmY.js +20 -0
- package/build/server/chunks/EmptyState-Ci4pSpmY.js.map +1 -0
- package/build/server/chunks/Icon-DyrkHVnV.js +36 -0
- package/build/server/chunks/Icon-DyrkHVnV.js.map +1 -0
- package/build/server/chunks/Shimmer-BITK6wrm.js +10 -0
- package/build/server/chunks/Shimmer-BITK6wrm.js.map +1 -0
- package/build/server/chunks/_layout.svelte-CO4f8UD7.js +76 -0
- package/build/server/chunks/_layout.svelte-CO4f8UD7.js.map +1 -0
- package/build/server/chunks/_page.svelte-3Cc3NMAP.js +81 -0
- package/build/server/chunks/_page.svelte-3Cc3NMAP.js.map +1 -0
- package/build/server/chunks/_page.svelte-C0p3HsIW.js +46 -0
- package/build/server/chunks/_page.svelte-C0p3HsIW.js.map +1 -0
- package/build/server/chunks/_page.svelte-C6bns9aQ.js +41 -0
- package/build/server/chunks/_page.svelte-C6bns9aQ.js.map +1 -0
- package/build/server/chunks/_page.svelte-CFCONiDK.js +97 -0
- package/build/server/chunks/_page.svelte-CFCONiDK.js.map +1 -0
- package/build/server/chunks/_page.svelte-DskND_G9.js +550 -0
- package/build/server/chunks/_page.svelte-DskND_G9.js.map +1 -0
- package/build/server/chunks/_page.svelte-rTrWmhOp.js +651 -0
- package/build/server/chunks/_page.svelte-rTrWmhOp.js.map +1 -0
- package/build/server/chunks/{_server.ts-CbDRDIoP.js → _server.ts-BStnNIcq.js} +9 -11
- package/build/server/chunks/_server.ts-BStnNIcq.js.map +1 -0
- package/build/server/chunks/{_server.ts-C29xzfaw.js → _server.ts-C8slOHB0.js} +9 -10
- package/build/server/chunks/_server.ts-C8slOHB0.js.map +1 -0
- package/build/server/chunks/{_server.ts-CPa6DgIt.js → _server.ts-COu0vNpd.js} +6 -6
- package/build/server/chunks/_server.ts-COu0vNpd.js.map +1 -0
- package/build/server/chunks/{_server.ts-DRVbgm6k.js → _server.ts-CS5H5klP.js} +10 -17
- package/build/server/chunks/_server.ts-CS5H5klP.js.map +1 -0
- package/build/server/chunks/{_server.ts-D4MNi4cD.js → _server.ts-Cf84YIaW.js} +3 -3
- package/build/server/chunks/{_server.ts-D4MNi4cD.js.map → _server.ts-Cf84YIaW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BL2FGb5Z.js → _server.ts-Ch-6iOHp.js} +99 -53
- package/build/server/chunks/_server.ts-Ch-6iOHp.js.map +1 -0
- package/build/server/chunks/{_server.ts-DfajWaqh.js → _server.ts-DV8zTCF9.js} +7 -9
- package/build/server/chunks/_server.ts-DV8zTCF9.js.map +1 -0
- package/build/server/chunks/{_server.ts-ColfDHW8.js → _server.ts-DYvb9ijZ.js} +21 -10
- package/build/server/chunks/_server.ts-DYvb9ijZ.js.map +1 -0
- package/build/server/chunks/_server.ts-DhTrdlWH.js +62 -0
- package/build/server/chunks/_server.ts-DhTrdlWH.js.map +1 -0
- package/build/server/chunks/{_server.ts-Cv_OrRuL.js → _server.ts-DpEVfp8W.js} +165 -8
- package/build/server/chunks/_server.ts-DpEVfp8W.js.map +1 -0
- package/build/server/chunks/{_server.ts-y9-WYDMa.js → _server.ts-WhTJBEJy.js} +5 -4
- package/build/server/chunks/{_server.ts-y9-WYDMa.js.map → _server.ts-WhTJBEJy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BjOJsoy4.js → _server.ts-XzT2UHM1.js} +6 -5
- package/build/server/chunks/_server.ts-XzT2UHM1.js.map +1 -0
- package/build/server/chunks/{_server.ts-BgdjBZco.js → _server.ts-tSpgyl1D.js} +7 -5
- package/build/server/chunks/_server.ts-tSpgyl1D.js.map +1 -0
- package/build/server/chunks/{_server.ts-BihKSdj_.js → _server.ts-uHUi-4cd.js} +7 -8
- package/build/server/chunks/_server.ts-uHUi-4cd.js.map +1 -0
- package/build/server/chunks/{auth-CEgFis71.js → auth-DeCdZ83n.js} +2 -2
- package/build/server/chunks/{auth-CEgFis71.js.map → auth-DeCdZ83n.js.map} +1 -1
- package/build/server/chunks/client-BYT9c0ig.js +7 -0
- package/build/server/chunks/client-BYT9c0ig.js.map +1 -0
- package/build/server/chunks/client2-BjxIYuno.js +25 -0
- package/build/server/chunks/client2-BjxIYuno.js.map +1 -0
- package/build/server/chunks/error-DDXB3duW.js +12 -0
- package/build/server/chunks/error-DDXB3duW.js.map +1 -0
- package/build/server/chunks/error.svelte-BG_yE-Wt.js +27 -0
- package/build/server/chunks/error.svelte-BG_yE-Wt.js.map +1 -0
- package/build/server/chunks/{exports-CJ0Q5XmL.js → index-Cnl871UW.js} +1111 -1634
- package/build/server/chunks/index-Cnl871UW.js.map +1 -0
- package/build/server/chunks/index-server-CUC9Jt7r.js +9 -0
- package/build/server/chunks/index-server-CUC9Jt7r.js.map +1 -0
- package/build/server/chunks/index2-HA3VTH7y.js +58 -0
- package/build/server/chunks/index2-HA3VTH7y.js.map +1 -0
- package/build/server/chunks/{library-apns-BHxLmuIx.js → library-apns-BqJbvSKh.js} +4 -4
- package/build/server/chunks/library-apns-BqJbvSKh.js.map +1 -0
- package/build/server/chunks/markdown-W_mTBct0.js +8 -0
- package/build/server/chunks/markdown-W_mTBct0.js.map +1 -0
- package/build/server/chunks/{pty-manager-C0FhBiVq.js → pty-manager-DR0Wt2Ac.js} +146 -319
- package/build/server/chunks/pty-manager-DR0Wt2Ac.js.map +1 -0
- package/build/server/chunks/root-DhswcH6o.js +1171 -0
- package/build/server/chunks/root-DhswcH6o.js.map +1 -0
- package/build/server/chunks/{shared-server-BDY8jh20.js → shared-server-sSGG17Df.js} +2 -3
- package/build/server/chunks/{shared-server-BDY8jh20.js.map → shared-server-sSGG17Df.js.map} +1 -1
- package/build/server/chunks/state.svelte-2Lellg7t.js +11 -0
- package/build/server/chunks/state.svelte-2Lellg7t.js.map +1 -0
- package/build/server/index.js +1085 -2242
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +23 -23
- package/build/server/manifest.js.map +1 -1
- package/package.json +32 -9
- package/scripts/fix-generated-types.sh +37 -0
- package/scripts/homebrew/shooter.rb +51 -0
- package/scripts/install.sh +348 -186
- package/scripts/setup.cjs +139 -43
- package/server.ts +111 -71
- package/src/app.css +12 -3
- package/src/app.d.ts +13 -20
- package/src/app.html +0 -2
- package/src/generated/types/API.ts +280 -0
- package/src/generated/types/APN.ts +186 -203
- package/src/generated/types/CLI.ts +18 -25
- package/src/generated/types/Client.ts +589 -0
- package/src/generated/types/Config.ts +53 -0
- package/src/generated/types/Holder.ts +638 -0
- package/src/generated/types/JWT.ts +39 -50
- package/src/generated/types/Notification.ts +426 -0
- package/src/generated/types/OpenCode.ts +356 -0
- package/src/generated/types/Sessions.ts +570 -0
- package/src/generated/types/Terminal.ts +2184 -2071
- package/src/generated/types/WsProtocol.ts +2004 -0
- package/src/generated/types/index.ts +9 -3
- package/src/lib/env.ts +29 -0
- package/src/lib/modules/client/common/config-guard.ts +37 -5
- package/src/lib/modules/client/common/error.ts +10 -0
- package/src/lib/modules/client/common/index.ts +6 -5
- package/src/lib/modules/client/common/native-bridge.ts +28 -20
- package/src/lib/modules/client/terminal/ChatView.svelte +46 -23
- package/src/lib/modules/client/terminal/CommandPalette.svelte +3 -2
- package/src/lib/modules/client/terminal/ConnectionStatus.svelte +6 -1
- package/src/lib/modules/client/terminal/LaunchSheet.svelte +147 -84
- package/src/lib/modules/client/terminal/QuickKeys.svelte +3 -1
- package/src/lib/modules/client/terminal/ShortcutsHelp.svelte +2 -5
- package/src/lib/modules/client/terminal/keyboard-shortcuts.ts +27 -24
- package/src/lib/modules/client/terminal/xterm-wrapper.ts +70 -44
- package/src/lib/modules/server/apn/library-apns.ts +3 -2
- package/src/lib/modules/server/apn/notification-history.ts +2 -13
- package/src/lib/modules/server/apn/notification-sessions.ts +3 -13
- package/src/lib/modules/server/apn/pending-requests.ts +3 -8
- package/src/lib/modules/server/apn/types.ts +5 -4
- package/src/lib/modules/server/cli/index.ts +3 -2
- package/src/lib/modules/server/fcm/fcm-service.ts +8 -6
- package/src/lib/modules/server/sessions/jsonl-parser.ts +3 -3
- package/src/lib/modules/server/sessions/jsonl-reader.ts +60 -15
- package/src/lib/modules/server/sessions/types.ts +11 -22
- package/src/lib/modules/server/terminal/holder-client.ts +272 -248
- package/src/lib/modules/server/terminal/opencode-watcher.ts +555 -553
- package/src/lib/modules/server/terminal/pty-holder.cjs +37 -8
- package/src/lib/modules/server/terminal/pty-manager.ts +141 -111
- package/src/lib/modules/server/terminal/session-watcher.ts +6 -4
- package/src/lib/modules/server/terminal/terminal-store.ts +131 -128
- package/src/lib/modules/server/utils/error.ts +9 -0
- package/src/lib/modules/server/ws/events-handler.ts +12 -6
- package/src/lib/modules/server/ws/keepalive.ts +86 -69
- package/src/lib/modules/server/ws/server.ts +43 -37
- package/src/lib/modules/server/ws/session-handler.ts +52 -45
- package/src/lib/modules/server/ws/terminal-handler.ts +29 -17
- package/src/lib/modules/server/ws/ticket-store.ts +29 -26
- package/src/lib/types/config.ts +1 -6
- package/src/routes/+layout.svelte +66 -31
- package/src/routes/+page.svelte +8 -15
- package/src/routes/api/debug/+server.ts +3 -1
- package/src/routes/api/device-token/+server.ts +60 -60
- package/src/routes/api/health/+server.ts +69 -73
- package/src/routes/api/notify/+server.ts +115 -68
- package/src/routes/api/qr-config/+server.ts +30 -32
- package/src/routes/api/response/+server.ts +9 -4
- package/src/routes/api/sessions/+server.ts +3 -1
- package/src/routes/api/terminals/+server.ts +14 -15
- package/src/routes/api/terminals/[id]/+server.ts +13 -7
- package/src/routes/api/terminals/[id]/paste-image/+server.ts +54 -52
- package/src/routes/api/terminals/[id]/resize/+server.ts +6 -3
- package/src/routes/api/webhook/+server.ts +8 -10
- package/src/routes/api/ws-status/+server.ts +7 -5
- package/src/routes/api/ws-ticket/+server.ts +42 -41
- package/src/routes/config/+page.svelte +129 -76
- package/src/routes/project/+page.svelte +7 -28
- package/src/routes/session/[id]/+page.svelte +70 -52
- package/src/routes/terminals/+page.svelte +45 -43
- package/src/routes/terminals/[id]/+page.svelte +198 -91
- package/build/client/_app/immutable/assets/0.CM9Hl6d-.css.br +0 -0
- package/build/client/_app/immutable/assets/3.C0uFg0IS.css +0 -1
- package/build/client/_app/immutable/assets/3.C0uFg0IS.css.br +0 -0
- package/build/client/_app/immutable/assets/3.C0uFg0IS.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.AraZrY8I.css +0 -1
- package/build/client/_app/immutable/assets/6.AraZrY8I.css.br +0 -0
- package/build/client/_app/immutable/assets/6.AraZrY8I.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.BCJ1IuMx.css.br +0 -0
- package/build/client/_app/immutable/assets/7.BCJ1IuMx.css.gz +0 -0
- package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css +0 -1
- package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css.br +0 -0
- package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BNJphC1q.js +0 -56
- package/build/client/_app/immutable/chunks/BNJphC1q.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNJphC1q.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bvk7mfPM.js +0 -1
- package/build/client/_app/immutable/chunks/Bvk7mfPM.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bvk7mfPM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CAokzuPQ.js +0 -1
- package/build/client/_app/immutable/chunks/CAokzuPQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CAokzuPQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CgCpWzEA.js +0 -1
- package/build/client/_app/immutable/chunks/CgCpWzEA.js.br +0 -0
- package/build/client/_app/immutable/chunks/CgCpWzEA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cjwk_cGO.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cjwk_cGO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtQ8EED1.js +0 -11
- package/build/client/_app/immutable/chunks/CtQ8EED1.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtQ8EED1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DERQCisl.js +0 -1
- package/build/client/_app/immutable/chunks/DERQCisl.js.br +0 -0
- package/build/client/_app/immutable/chunks/DERQCisl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DKrg8TQs.js +0 -1
- package/build/client/_app/immutable/chunks/DKrg8TQs.js.br +0 -0
- package/build/client/_app/immutable/chunks/DKrg8TQs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dkkpz_4D.js +0 -126
- package/build/client/_app/immutable/chunks/Dkkpz_4D.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dkkpz_4D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DoczjQhA.js +0 -1
- package/build/client/_app/immutable/chunks/DoczjQhA.js.br +0 -0
- package/build/client/_app/immutable/chunks/DoczjQhA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/RpcNruLP.js +0 -2
- package/build/client/_app/immutable/chunks/RpcNruLP.js.br +0 -0
- package/build/client/_app/immutable/chunks/RpcNruLP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/a-St0Zwo.js +0 -1
- package/build/client/_app/immutable/chunks/a-St0Zwo.js.br +0 -0
- package/build/client/_app/immutable/chunks/a-St0Zwo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/bo70OQUZ.js +0 -1
- package/build/client/_app/immutable/chunks/bo70OQUZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/bo70OQUZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.QvGgdvTI.js +0 -2
- package/build/client/_app/immutable/entry/app.QvGgdvTI.js.br +0 -0
- package/build/client/_app/immutable/entry/app.QvGgdvTI.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BntDNRMC.js +0 -1
- package/build/client/_app/immutable/entry/start.BntDNRMC.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BntDNRMC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js +0 -1
- package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.MG1QhfrI.js +0 -1
- package/build/client/_app/immutable/nodes/1.MG1QhfrI.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.MG1QhfrI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.B4MlOSh6.js +0 -1
- package/build/client/_app/immutable/nodes/2.B4MlOSh6.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B4MlOSh6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DIwYkjDn.js +0 -3
- package/build/client/_app/immutable/nodes/3.DIwYkjDn.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DIwYkjDn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.D-cIe70D.js +0 -1
- package/build/client/_app/immutable/nodes/4.D-cIe70D.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.D-cIe70D.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.D7zPRe3L.js +0 -1
- package/build/client/_app/immutable/nodes/5.D7zPRe3L.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.D7zPRe3L.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BB7QE48r.js +0 -2
- package/build/client/_app/immutable/nodes/6.BB7QE48r.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BB7QE48r.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.D8mqsrZG.js +0 -2
- package/build/client/_app/immutable/nodes/7.D8mqsrZG.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D8mqsrZG.js.gz +0 -0
- package/build/client/manifest.webmanifest +0 -1
- package/build/client/registerSW.js +0 -1
- package/build/client/registerSW.js.br +0 -0
- package/build/client/registerSW.js.gz +0 -0
- package/build/client/sw.js +0 -222
- package/build/client/sw.js.br +0 -0
- package/build/client/sw.js.gz +0 -0
- package/build/client/workbox-5119daf5.js +0 -3395
- package/build/client/workbox-5119daf5.js.br +0 -0
- package/build/client/workbox-5119daf5.js.gz +0 -0
- package/build/server/chunks/0-q2IUp76Y.js +0 -9
- package/build/server/chunks/1-CU50G5wZ.js +0 -9
- package/build/server/chunks/2-D01t9s8T.js +0 -9
- package/build/server/chunks/2-D01t9s8T.js.map +0 -1
- package/build/server/chunks/3-5PUQ04wC.js +0 -9
- package/build/server/chunks/3-5PUQ04wC.js.map +0 -1
- package/build/server/chunks/4-e7gywnSG.js +0 -9
- package/build/server/chunks/4-e7gywnSG.js.map +0 -1
- package/build/server/chunks/5-CA1SA6KZ.js +0 -9
- package/build/server/chunks/5-CA1SA6KZ.js.map +0 -1
- package/build/server/chunks/6-71H221sV.js +0 -9
- package/build/server/chunks/6-71H221sV.js.map +0 -1
- package/build/server/chunks/7-Bo-vmdyz.js +0 -9
- package/build/server/chunks/7-Bo-vmdyz.js.map +0 -1
- package/build/server/chunks/_layout.svelte-SFHOxs74.js +0 -132
- package/build/server/chunks/_layout.svelte-SFHOxs74.js.map +0 -1
- package/build/server/chunks/_page.svelte-B4w-2wD-.js +0 -120
- package/build/server/chunks/_page.svelte-B4w-2wD-.js.map +0 -1
- package/build/server/chunks/_page.svelte-B_qAXjkh.js +0 -213
- package/build/server/chunks/_page.svelte-B_qAXjkh.js.map +0 -1
- package/build/server/chunks/_page.svelte-CsF1_TRG.js +0 -50
- package/build/server/chunks/_page.svelte-CsF1_TRG.js.map +0 -1
- package/build/server/chunks/_page.svelte-DJC6U-P0.js +0 -68
- package/build/server/chunks/_page.svelte-DJC6U-P0.js.map +0 -1
- package/build/server/chunks/_page.svelte-DQ6HBtsz.js +0 -407
- package/build/server/chunks/_page.svelte-DQ6HBtsz.js.map +0 -1
- package/build/server/chunks/_page.svelte-LbhhjP21.js +0 -148
- package/build/server/chunks/_page.svelte-LbhhjP21.js.map +0 -1
- package/build/server/chunks/_server.ts-BL2FGb5Z.js.map +0 -1
- package/build/server/chunks/_server.ts-BgdjBZco.js.map +0 -1
- package/build/server/chunks/_server.ts-BihKSdj_.js.map +0 -1
- package/build/server/chunks/_server.ts-BjOJsoy4.js.map +0 -1
- package/build/server/chunks/_server.ts-C29xzfaw.js.map +0 -1
- package/build/server/chunks/_server.ts-CPa6DgIt.js.map +0 -1
- package/build/server/chunks/_server.ts-CbDRDIoP.js.map +0 -1
- package/build/server/chunks/_server.ts-Cl1OEWL4.js +0 -54
- package/build/server/chunks/_server.ts-Cl1OEWL4.js.map +0 -1
- package/build/server/chunks/_server.ts-ColfDHW8.js.map +0 -1
- package/build/server/chunks/_server.ts-Cv_OrRuL.js.map +0 -1
- package/build/server/chunks/_server.ts-DRVbgm6k.js.map +0 -1
- package/build/server/chunks/_server.ts-DfajWaqh.js.map +0 -1
- package/build/server/chunks/client-CxCatAKr.js +0 -255
- package/build/server/chunks/client-CxCatAKr.js.map +0 -1
- package/build/server/chunks/error.svelte-BqdwMWdK.js +0 -26
- package/build/server/chunks/error.svelte-BqdwMWdK.js.map +0 -1
- package/build/server/chunks/exports-CJ0Q5XmL.js.map +0 -1
- package/build/server/chunks/index2-DAxIoAO-.js +0 -36
- package/build/server/chunks/index2-DAxIoAO-.js.map +0 -1
- package/build/server/chunks/jsonl-parser-dmZU_Hyu.js +0 -137
- package/build/server/chunks/jsonl-parser-dmZU_Hyu.js.map +0 -1
- package/build/server/chunks/library-apns-BHxLmuIx.js.map +0 -1
- package/build/server/chunks/markdown-Bxrl3cCF.js +0 -1241
- package/build/server/chunks/markdown-Bxrl3cCF.js.map +0 -1
- package/build/server/chunks/pty-manager-C0FhBiVq.js.map +0 -1
- package/build/server/chunks/stores-D0HorpgL.js +0 -36
- package/build/server/chunks/stores-D0HorpgL.js.map +0 -1
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import type { ShooterConfig } from '$
|
|
2
|
+
import type { ShooterConfig, TerminalListItem } from '$generated/types';
|
|
3
3
|
|
|
4
4
|
import { goto } from '$app/navigation';
|
|
5
|
-
import { Button, Pill, Shimmer, Tooltip } from '@juspay/svelte-ui-components';
|
|
6
5
|
import {
|
|
7
6
|
EmptyState,
|
|
8
7
|
formatRelativeTime,
|
|
@@ -12,29 +11,15 @@
|
|
|
12
11
|
setCache,
|
|
13
12
|
} from '$lib/modules/client/common';
|
|
14
13
|
import LaunchSheet from '$lib/modules/client/terminal/LaunchSheet.svelte';
|
|
14
|
+
import { Button, Pill, Shimmer, Tooltip } from '@juspay/svelte-ui-components';
|
|
15
15
|
import { onDestroy, onMount } from 'svelte';
|
|
16
16
|
|
|
17
|
-
interface Terminal {
|
|
18
|
-
args: string[];
|
|
19
|
-
command: string;
|
|
20
|
-
createdAt: string;
|
|
21
|
-
currentCwd?: null | string;
|
|
22
|
-
cwd: string;
|
|
23
|
-
exitCode: null | number;
|
|
24
|
-
exitedAt: null | string;
|
|
25
|
-
id: string;
|
|
26
|
-
isActive?: boolean;
|
|
27
|
-
lastOutput: null | string;
|
|
28
|
-
pid: number;
|
|
29
|
-
status: 'exited' | 'running';
|
|
30
|
-
}
|
|
31
|
-
|
|
32
17
|
const POLL_INTERVAL_MS = 10_000;
|
|
33
18
|
const CACHE_KEY = 'shooter_terminals';
|
|
34
19
|
const AI_COMMANDS = ['claude', 'opencode'];
|
|
35
20
|
const SHELL_COMMANDS = ['zsh', 'bash', 'sh', 'fish'];
|
|
36
21
|
|
|
37
|
-
let terminals = $state<
|
|
22
|
+
let terminals = $state<TerminalListItem[]>([]);
|
|
38
23
|
let loading = $state(false);
|
|
39
24
|
let fetching = false;
|
|
40
25
|
let config = $state<null | ShooterConfig>(null);
|
|
@@ -48,7 +33,7 @@
|
|
|
48
33
|
loadConfiguration();
|
|
49
34
|
|
|
50
35
|
// Show cached data immediately (10s TTL matches poll interval)
|
|
51
|
-
const cached = getCached(CACHE_KEY, 10_000) as null |
|
|
36
|
+
const cached = getCached(CACHE_KEY, 10_000) as null | TerminalListItem[];
|
|
52
37
|
if (cached) {
|
|
53
38
|
terminals = cached;
|
|
54
39
|
loading = false;
|
|
@@ -110,8 +95,11 @@
|
|
|
110
95
|
return;
|
|
111
96
|
}
|
|
112
97
|
|
|
113
|
-
const result = (await response.json()) as { terminals:
|
|
114
|
-
terminals = result.terminals
|
|
98
|
+
const result = (await response.json()) as { terminals: TerminalListItem[] };
|
|
99
|
+
terminals = result.terminals.map((t) => ({
|
|
100
|
+
...t,
|
|
101
|
+
lastOutput: t.lastOutput ?? null,
|
|
102
|
+
}));
|
|
115
103
|
setCache(CACHE_KEY, terminals);
|
|
116
104
|
} catch (error) {
|
|
117
105
|
console.error('Failed to fetch terminals:', error);
|
|
@@ -157,7 +145,7 @@
|
|
|
157
145
|
return 'shell';
|
|
158
146
|
}
|
|
159
147
|
|
|
160
|
-
function getBadgeInfo(terminal:
|
|
148
|
+
function getBadgeInfo(terminal: TerminalListItem): { class: string; label: string } {
|
|
161
149
|
if (terminal.status === 'exited') {
|
|
162
150
|
return { class: 'pill-badge-ended', label: 'ENDED' };
|
|
163
151
|
}
|
|
@@ -180,17 +168,25 @@
|
|
|
180
168
|
return `${parts[0]}/.../${parts.slice(-2).join('/')}`;
|
|
181
169
|
}
|
|
182
170
|
|
|
171
|
+
/* eslint-disable no-control-regex, no-useless-escape */
|
|
183
172
|
function stripAnsi(str: string): string {
|
|
184
|
-
return str
|
|
173
|
+
return str
|
|
174
|
+
.replace(/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\x1b\[[\?]?[0-9;]*[a-zA-Z]|\x1b/g, '')
|
|
175
|
+
.replace(/[\x00-\x1f]/g, '')
|
|
176
|
+
.trim();
|
|
185
177
|
}
|
|
178
|
+
/* eslint-enable no-control-regex, no-useless-escape */
|
|
186
179
|
|
|
187
180
|
function truncateOutput(output: null | string, maxLen = 80): string {
|
|
188
181
|
if (!output) {
|
|
189
182
|
return '';
|
|
190
183
|
}
|
|
191
|
-
//
|
|
192
|
-
|
|
193
|
-
const lines =
|
|
184
|
+
// Split on newlines BEFORE stripping ANSI so that \n characters survive
|
|
185
|
+
// the control-character removal pass, then strip each line individually.
|
|
186
|
+
const lines = output
|
|
187
|
+
.split('\n')
|
|
188
|
+
.map((l) => stripAnsi(l))
|
|
189
|
+
.filter((l) => l.trim());
|
|
194
190
|
const lastLine = lines[lines.length - 1] || '';
|
|
195
191
|
if (lastLine.length <= maxLen) {
|
|
196
192
|
return lastLine;
|
|
@@ -206,14 +202,16 @@
|
|
|
206
202
|
event.preventDefault();
|
|
207
203
|
event.stopPropagation();
|
|
208
204
|
|
|
209
|
-
if (!config?.apiKey)
|
|
205
|
+
if (!config?.apiKey) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
210
208
|
|
|
211
209
|
try {
|
|
212
210
|
const response = await fetch(`/api/terminals/${id}`, {
|
|
213
|
-
method: 'DELETE',
|
|
214
211
|
headers: {
|
|
215
212
|
Authorization: `Bearer ${config.apiKey}`,
|
|
216
213
|
},
|
|
214
|
+
method: 'DELETE',
|
|
217
215
|
});
|
|
218
216
|
|
|
219
217
|
if (response.ok) {
|
|
@@ -240,16 +238,12 @@
|
|
|
240
238
|
</div>
|
|
241
239
|
<div class="page-actions">
|
|
242
240
|
<Button classes="btn-secondary" onclick={forceRefresh} disabled={loading}>
|
|
243
|
-
{
|
|
244
|
-
|
|
245
|
-
Refresh
|
|
246
|
-
{/snippet}
|
|
241
|
+
<Icon name="refresh" size={14} />
|
|
242
|
+
Refresh
|
|
247
243
|
</Button>
|
|
248
244
|
<Button classes="btn-primary" onclick={handleNewTerminal}>
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
New Terminal
|
|
252
|
-
{/snippet}
|
|
245
|
+
<span class="plus-icon">+</span>
|
|
246
|
+
New Terminal
|
|
253
247
|
</Button>
|
|
254
248
|
</div>
|
|
255
249
|
</div>
|
|
@@ -276,10 +270,8 @@
|
|
|
276
270
|
description="Launch a new terminal session to get started. Terminal sessions will appear here once created."
|
|
277
271
|
>
|
|
278
272
|
<Button classes="btn-primary" onclick={handleNewTerminal}>
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
New Terminal
|
|
282
|
-
{/snippet}
|
|
273
|
+
<span class="plus-icon">+</span>
|
|
274
|
+
New Terminal
|
|
283
275
|
</Button>
|
|
284
276
|
</EmptyState>
|
|
285
277
|
{:else}
|
|
@@ -326,7 +318,10 @@
|
|
|
326
318
|
<span class="terminal-command">{getCommandName(terminal.command)}</span>
|
|
327
319
|
<Pill text={badge.label} classes={badge.class} />
|
|
328
320
|
{#if terminal.exitCode !== null}
|
|
329
|
-
<Pill
|
|
321
|
+
<Pill
|
|
322
|
+
text="exit {terminal.exitCode}"
|
|
323
|
+
classes={terminal.exitCode !== 0 ? 'pill-exit-error' : 'pill-exit-ok'}
|
|
324
|
+
/>
|
|
330
325
|
{/if}
|
|
331
326
|
</div>
|
|
332
327
|
<div class="terminal-card-right">
|
|
@@ -496,8 +491,15 @@
|
|
|
496
491
|
}
|
|
497
492
|
|
|
498
493
|
@keyframes activity-pulse {
|
|
499
|
-
0%,
|
|
500
|
-
|
|
494
|
+
0%,
|
|
495
|
+
100% {
|
|
496
|
+
transform: scale(1);
|
|
497
|
+
opacity: 1;
|
|
498
|
+
}
|
|
499
|
+
50% {
|
|
500
|
+
transform: scale(1.5);
|
|
501
|
+
opacity: 0.7;
|
|
502
|
+
}
|
|
501
503
|
}
|
|
502
504
|
|
|
503
505
|
/* Command name */
|