@juspay/shooter 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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.BhZOCxO4.css} +1 -1
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.gz +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css +1 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.br +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.gz +0 -0
- package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css +1 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.br +0 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css +1 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.br +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css +1 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.br +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.gz +0 -0
- package/build/client/_app/immutable/assets/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.DwS5ZHBh.css +1 -0
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.br +0 -0
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css +1 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.gz +0 -0
- package/build/client/_app/immutable/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/B-K5Sh65.js +1 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js.br +0 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js +20 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.br +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js +1 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js +6 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js +1 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.br +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js +1 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BTGVxaYV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BYqGCrTe.js +1 -0
- package/build/client/_app/immutable/chunks/BYqGCrTe.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYqGCrTe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BlxrFPDK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js +1 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js +1 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js +61 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js +1 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js +1 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DLu6yJIZ.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/DVkn4r72.js +1 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js +41 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.br +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/PPVm8Dsz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js +1 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.br +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js +2 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.br +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js +2 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js +1 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js +1 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js +1 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js +1 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js +3 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js +1 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js +4 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js +2 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js +2 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/favicon.svg.gz +0 -0
- package/build/client/manifest.json +13 -0
- package/build/client/manifest.json.br +0 -0
- package/build/client/manifest.json.gz +0 -0
- package/build/pty-holder.cjs +37 -8
- package/build/server/chunks/0-Vk38tI2J.js +9 -0
- package/build/server/chunks/0-Vk38tI2J.js.map +1 -0
- package/build/server/chunks/1-BvYQX5MR.js +9 -0
- package/build/server/chunks/1-BvYQX5MR.js.map +1 -0
- package/build/server/chunks/2-Cl7R4Qk2.js +9 -0
- package/build/server/chunks/2-Cl7R4Qk2.js.map +1 -0
- package/build/server/chunks/3-Ck7ewhOX.js +9 -0
- package/build/server/chunks/3-Ck7ewhOX.js.map +1 -0
- package/build/server/chunks/4-CnDeRm2Z.js +9 -0
- package/build/server/chunks/4-CnDeRm2Z.js.map +1 -0
- package/build/server/chunks/5-IxitzEvN.js +9 -0
- package/build/server/chunks/5-IxitzEvN.js.map +1 -0
- package/build/server/chunks/6-CyZ3r1iS.js +9 -0
- package/build/server/chunks/6-CyZ3r1iS.js.map +1 -0
- package/build/server/chunks/7-BmI7du46.js +9 -0
- package/build/server/chunks/7-BmI7du46.js.map +1 -0
- package/build/server/chunks/Button-Cs1aE6ka.js +80 -0
- package/build/server/chunks/Button-Cs1aE6ka.js.map +1 -0
- package/build/server/chunks/EmptyState-DDFH1K8g.js +26 -0
- package/build/server/chunks/EmptyState-DDFH1K8g.js.map +1 -0
- package/build/server/chunks/Icon-CEUrotA6.js +36 -0
- package/build/server/chunks/Icon-CEUrotA6.js.map +1 -0
- package/build/server/chunks/Shimmer-DB8W1zt6.js +10 -0
- package/build/server/chunks/Shimmer-DB8W1zt6.js.map +1 -0
- package/build/server/chunks/_error.svelte-uCOJNxvr.js +39 -0
- package/build/server/chunks/_error.svelte-uCOJNxvr.js.map +1 -0
- package/build/server/chunks/_layout.svelte-CtWmEJwe.js +56 -0
- package/build/server/chunks/_layout.svelte-CtWmEJwe.js.map +1 -0
- package/build/server/chunks/_page.svelte-BcZaKdX9.js +45 -0
- package/build/server/chunks/_page.svelte-BcZaKdX9.js.map +1 -0
- package/build/server/chunks/_page.svelte-BdYynOck.js +85 -0
- package/build/server/chunks/_page.svelte-BdYynOck.js.map +1 -0
- package/build/server/chunks/_page.svelte-BgevQjq1.js +101 -0
- package/build/server/chunks/_page.svelte-BgevQjq1.js.map +1 -0
- package/build/server/chunks/_page.svelte-CVq6tRb3.js +550 -0
- package/build/server/chunks/_page.svelte-CVq6tRb3.js.map +1 -0
- package/build/server/chunks/_page.svelte-CxWcQ0Am.js +651 -0
- package/build/server/chunks/_page.svelte-CxWcQ0Am.js.map +1 -0
- package/build/server/chunks/_page.svelte-DO4oa_LY.js +44 -0
- package/build/server/chunks/_page.svelte-DO4oa_LY.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-DRVbgm6k.js → _server.ts-CAxsWKvS.js} +22 -25
- package/build/server/chunks/_server.ts-CAxsWKvS.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-C29xzfaw.js → _server.ts-CTpcLUH8.js} +10 -10
- package/build/server/chunks/_server.ts-CTpcLUH8.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-CtH0dhUp.js +71 -0
- package/build/server/chunks/_server.ts-CtH0dhUp.js.map +1 -0
- package/build/server/chunks/_server.ts-DB_Kg97c.js +73 -0
- package/build/server/chunks/_server.ts-DB_Kg97c.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-DYpJImqd.js +99 -0
- package/build/server/chunks/_server.ts-DYpJImqd.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-Cv_OrRuL.js → _server.ts-Deok2y88.js} +209 -34
- package/build/server/chunks/_server.ts-Deok2y88.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-vekTmWAx.js} +8 -8
- package/build/server/chunks/_server.ts-vekTmWAx.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-BdGHe_hY.js +25 -0
- package/build/server/chunks/client-BdGHe_hY.js.map +1 -0
- package/build/server/chunks/client2-CCBGA-2V.js +7 -0
- package/build/server/chunks/client2-CCBGA-2V.js.map +1 -0
- package/build/server/chunks/error-DDXB3duW.js +12 -0
- package/build/server/chunks/error-DDXB3duW.js.map +1 -0
- package/build/server/chunks/{exports-CJ0Q5XmL.js → index-DwaY1cAm.js} +1111 -1634
- package/build/server/chunks/index-DwaY1cAm.js.map +1 -0
- package/build/server/chunks/index-server-CrDaL06Y.js +9 -0
- package/build/server/chunks/index-server-CrDaL06Y.js.map +1 -0
- package/build/server/chunks/index2-CgclKpUj.js +58 -0
- package/build/server/chunks/index2-CgclKpUj.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/opencode-db-path-DcfhJtJy.js +15 -0
- package/build/server/chunks/opencode-db-path-DcfhJtJy.js.map +1 -0
- package/build/server/chunks/{pty-manager-C0FhBiVq.js → pty-manager-BQVB7IVj.js} +155 -326
- package/build/server/chunks/pty-manager-BQVB7IVj.js.map +1 -0
- package/build/server/chunks/root-DDSnEAZv.js +1171 -0
- package/build/server/chunks/root-DDSnEAZv.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-hBbXlUak.js +11 -0
- package/build/server/chunks/state.svelte-hBbXlUak.js.map +1 -0
- package/build/server/chunks/stores-DHNzYNpX.js +28 -0
- package/build/server/chunks/stores-DHNzYNpX.js.map +1 -0
- package/build/server/index.js +1085 -2242
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +39 -25
- 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 +215 -45
- package/server.ts +114 -71
- package/src/app.css +12 -3
- package/src/app.d.ts +13 -20
- package/src/app.html +3 -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/cache.ts +10 -2
- 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/markdown.ts +22 -1
- package/src/lib/modules/client/common/native-bridge.ts +28 -20
- package/src/lib/modules/client/common/time.ts +13 -11
- package/src/lib/modules/client/terminal/ChatView.svelte +354 -74
- package/src/lib/modules/client/terminal/CommandPalette.svelte +3 -2
- package/src/lib/modules/client/terminal/ConnectionStatus.svelte +7 -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 +74 -45
- 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 +86 -26
- package/src/lib/modules/server/sessions/opencode-db-path.ts +26 -0
- package/src/lib/modules/server/sessions/opencode-reader.ts +13 -15
- package/src/lib/modules/server/sessions/process-detector.ts +103 -0
- package/src/lib/modules/server/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 +547 -556
- package/src/lib/modules/server/terminal/pty-holder.cjs +37 -8
- package/src/lib/modules/server/terminal/pty-manager.ts +157 -115
- 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 +332 -147
- 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/theme.css +30 -0
- package/src/lib/types/config.ts +1 -6
- package/src/routes/+error.svelte +94 -0
- package/src/routes/+layout.svelte +66 -31
- package/src/routes/+page.svelte +25 -22
- 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 +81 -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 +15 -5
- package/src/routes/api/sessions/connect/+server.ts +125 -0
- package/src/routes/api/sessions/detect/+server.ts +27 -0
- package/src/routes/api/terminals/+server.ts +26 -24
- 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 +149 -75
- package/src/routes/project/+page.svelte +165 -35
- package/src/routes/session/[id]/+page.svelte +479 -283
- package/src/routes/terminals/+page.svelte +58 -45
- package/src/routes/terminals/[id]/+page.svelte +223 -91
- package/build/client/_app/immutable/assets/0.CM9Hl6d-.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CM9Hl6d-.css.gz +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/4.cJuCkJKZ.css +0 -1
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.br +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css +0 -1
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.br +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.gz +0 -0
- package/build/client/_app/immutable/assets/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 +0 -1
- 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/ChatView.CsdBAOKx.css +0 -1
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.gz +0 -0
- package/build/client/_app/immutable/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/CGLrx-H5.js +0 -1
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/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 +0 -6
- 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/0-q2IUp76Y.js.map +0 -1
- package/build/server/chunks/1-CU50G5wZ.js +0 -9
- package/build/server/chunks/1-CU50G5wZ.js.map +0 -1
- 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
|
@@ -0,0 +1,638 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isJSON,
|
|
3
|
+
decodeNumber,
|
|
4
|
+
_decodeNumber,
|
|
5
|
+
decodeBoolean,
|
|
6
|
+
_decodeBoolean,
|
|
7
|
+
decodeString,
|
|
8
|
+
_decodeString,
|
|
9
|
+
} from 'type-decoder';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type { ConnectResult }
|
|
13
|
+
* @description Result returned after successfully connecting to a PTY holder process and completing the info+scrollback handshake
|
|
14
|
+
*/
|
|
15
|
+
export type ConnectResult = {
|
|
16
|
+
/**
|
|
17
|
+
* @description OS process ID of the PTY child process
|
|
18
|
+
* @type { number }
|
|
19
|
+
* @memberof ConnectResult
|
|
20
|
+
*/
|
|
21
|
+
pid: number;
|
|
22
|
+
/**
|
|
23
|
+
* @description Whether the PTY process has already exited
|
|
24
|
+
* @type { boolean }
|
|
25
|
+
* @memberof ConnectResult
|
|
26
|
+
*/
|
|
27
|
+
exited: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* @description Process exit code if exited, or null if still running
|
|
30
|
+
* @type { number }
|
|
31
|
+
* @memberof ConnectResult
|
|
32
|
+
*/
|
|
33
|
+
exitCode: number | null;
|
|
34
|
+
/**
|
|
35
|
+
* @description Scrollback buffer content replayed on connect
|
|
36
|
+
* @type { string }
|
|
37
|
+
* @memberof ConnectResult
|
|
38
|
+
*/
|
|
39
|
+
scrollback: string;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export function decodeConnectResult(rawInput: unknown): ConnectResult | null {
|
|
43
|
+
if (isJSON(rawInput)) {
|
|
44
|
+
const decodedPid = decodeNumber(rawInput['pid']);
|
|
45
|
+
const decodedExited = decodeBoolean(rawInput['exited']);
|
|
46
|
+
const decodedExitCode = decodeNumber(rawInput['exitCode']);
|
|
47
|
+
const decodedScrollback = decodeString(rawInput['scrollback']);
|
|
48
|
+
|
|
49
|
+
if (decodedPid === null || decodedExited === null || decodedScrollback === null) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
pid: decodedPid,
|
|
55
|
+
exited: decodedExited,
|
|
56
|
+
exitCode: decodedExitCode,
|
|
57
|
+
scrollback: decodedScrollback,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @type { IncomingActivityMessage }
|
|
65
|
+
* @description Terminal activity state change (active/idle)
|
|
66
|
+
*/
|
|
67
|
+
export type IncomingActivityMessage = {
|
|
68
|
+
/**
|
|
69
|
+
* @type { string }
|
|
70
|
+
* @memberof IncomingActivityMessage
|
|
71
|
+
*/
|
|
72
|
+
type: string;
|
|
73
|
+
/**
|
|
74
|
+
* @description Whether the terminal is currently producing output
|
|
75
|
+
* @type { boolean }
|
|
76
|
+
* @memberof IncomingActivityMessage
|
|
77
|
+
*/
|
|
78
|
+
active: boolean;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export function decodeIncomingActivityMessage(rawInput: unknown): IncomingActivityMessage | null {
|
|
82
|
+
if (isJSON(rawInput)) {
|
|
83
|
+
const decodedType = decodeString(rawInput['type']);
|
|
84
|
+
const decodedActive = decodeBoolean(rawInput['active']);
|
|
85
|
+
|
|
86
|
+
if (decodedType === null || decodedActive === null) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
type: decodedType,
|
|
92
|
+
active: decodedActive,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @type { IncomingExitMessage }
|
|
100
|
+
* @description PTY process has exited
|
|
101
|
+
*/
|
|
102
|
+
export type IncomingExitMessage = {
|
|
103
|
+
/**
|
|
104
|
+
* @type { string }
|
|
105
|
+
* @memberof IncomingExitMessage
|
|
106
|
+
*/
|
|
107
|
+
type: string;
|
|
108
|
+
/**
|
|
109
|
+
* @description Process exit code
|
|
110
|
+
* @type { number }
|
|
111
|
+
* @memberof IncomingExitMessage
|
|
112
|
+
*/
|
|
113
|
+
code: number;
|
|
114
|
+
/**
|
|
115
|
+
* @description Signal that caused the exit
|
|
116
|
+
* @type { string }
|
|
117
|
+
* @memberof IncomingExitMessage
|
|
118
|
+
*/
|
|
119
|
+
signal: string;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export function decodeIncomingExitMessage(rawInput: unknown): IncomingExitMessage | null {
|
|
123
|
+
if (isJSON(rawInput)) {
|
|
124
|
+
const decodedType = decodeString(rawInput['type']);
|
|
125
|
+
const decodedCode = decodeNumber(rawInput['code']);
|
|
126
|
+
const decodedSignal = decodeString(rawInput['signal']);
|
|
127
|
+
|
|
128
|
+
if (decodedType === null || decodedCode === null || decodedSignal === null) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return {
|
|
133
|
+
type: decodedType,
|
|
134
|
+
code: decodedCode,
|
|
135
|
+
signal: decodedSignal,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @type { IncomingOutputMessage }
|
|
143
|
+
* @description PTY output chunk during normal operation
|
|
144
|
+
*/
|
|
145
|
+
export type IncomingOutputMessage = {
|
|
146
|
+
/**
|
|
147
|
+
* @type { string }
|
|
148
|
+
* @memberof IncomingOutputMessage
|
|
149
|
+
*/
|
|
150
|
+
type: string;
|
|
151
|
+
/**
|
|
152
|
+
* @description Raw PTY output data
|
|
153
|
+
* @type { string }
|
|
154
|
+
* @memberof IncomingOutputMessage
|
|
155
|
+
*/
|
|
156
|
+
data: string;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export function decodeIncomingOutputMessage(rawInput: unknown): IncomingOutputMessage | null {
|
|
160
|
+
if (isJSON(rawInput)) {
|
|
161
|
+
const decodedType = decodeString(rawInput['type']);
|
|
162
|
+
const decodedData = decodeString(rawInput['data']);
|
|
163
|
+
|
|
164
|
+
if (decodedType === null || decodedData === null) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return {
|
|
169
|
+
type: decodedType,
|
|
170
|
+
data: decodedData,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* @type { IncomingScrollbackMessage }
|
|
178
|
+
* @description Full scrollback replay sent on connection
|
|
179
|
+
*/
|
|
180
|
+
export type IncomingScrollbackMessage = {
|
|
181
|
+
/**
|
|
182
|
+
* @type { string }
|
|
183
|
+
* @memberof IncomingScrollbackMessage
|
|
184
|
+
*/
|
|
185
|
+
type: string;
|
|
186
|
+
/**
|
|
187
|
+
* @description Full scrollback buffer content
|
|
188
|
+
* @type { string }
|
|
189
|
+
* @memberof IncomingScrollbackMessage
|
|
190
|
+
*/
|
|
191
|
+
data: string;
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
export function decodeIncomingScrollbackMessage(
|
|
195
|
+
rawInput: unknown
|
|
196
|
+
): IncomingScrollbackMessage | null {
|
|
197
|
+
if (isJSON(rawInput)) {
|
|
198
|
+
const decodedType = decodeString(rawInput['type']);
|
|
199
|
+
const decodedData = decodeString(rawInput['data']);
|
|
200
|
+
|
|
201
|
+
if (decodedType === null || decodedData === null) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return {
|
|
206
|
+
type: decodedType,
|
|
207
|
+
data: decodedData,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @type { IncomingInfoMessage }
|
|
215
|
+
* @description Current holder state sent on connection
|
|
216
|
+
*/
|
|
217
|
+
export type IncomingInfoMessage = {
|
|
218
|
+
/**
|
|
219
|
+
* @type { string }
|
|
220
|
+
* @memberof IncomingInfoMessage
|
|
221
|
+
*/
|
|
222
|
+
type: string;
|
|
223
|
+
/**
|
|
224
|
+
* @description PTY child process ID
|
|
225
|
+
* @type { number }
|
|
226
|
+
* @memberof IncomingInfoMessage
|
|
227
|
+
*/
|
|
228
|
+
pid: number;
|
|
229
|
+
/**
|
|
230
|
+
* @description Whether the PTY process has exited
|
|
231
|
+
* @type { boolean }
|
|
232
|
+
* @memberof IncomingInfoMessage
|
|
233
|
+
*/
|
|
234
|
+
exited: boolean;
|
|
235
|
+
/**
|
|
236
|
+
* @description Exit code if process has exited
|
|
237
|
+
* @type { number }
|
|
238
|
+
* @memberof IncomingInfoMessage
|
|
239
|
+
*/
|
|
240
|
+
exitCode: number;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
export function decodeIncomingInfoMessage(rawInput: unknown): IncomingInfoMessage | null {
|
|
244
|
+
if (isJSON(rawInput)) {
|
|
245
|
+
const decodedType = decodeString(rawInput['type']);
|
|
246
|
+
const decodedPid = decodeNumber(rawInput['pid']);
|
|
247
|
+
const decodedExited = decodeBoolean(rawInput['exited']);
|
|
248
|
+
const decodedExitCode = decodeNumber(rawInput['exitCode']);
|
|
249
|
+
|
|
250
|
+
if (
|
|
251
|
+
decodedType === null ||
|
|
252
|
+
decodedPid === null ||
|
|
253
|
+
decodedExited === null ||
|
|
254
|
+
decodedExitCode === null
|
|
255
|
+
) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
return {
|
|
260
|
+
type: decodedType,
|
|
261
|
+
pid: decodedPid,
|
|
262
|
+
exited: decodedExited,
|
|
263
|
+
exitCode: decodedExitCode,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* @type { IncomingCwdMessage }
|
|
271
|
+
* @description Current working directory change detected via OSC 7
|
|
272
|
+
*/
|
|
273
|
+
export type IncomingCwdMessage = {
|
|
274
|
+
/**
|
|
275
|
+
* @type { string }
|
|
276
|
+
* @memberof IncomingCwdMessage
|
|
277
|
+
*/
|
|
278
|
+
type: string;
|
|
279
|
+
/**
|
|
280
|
+
* @description Absolute path of the new working directory
|
|
281
|
+
* @type { string }
|
|
282
|
+
* @memberof IncomingCwdMessage
|
|
283
|
+
*/
|
|
284
|
+
path: string;
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
export function decodeIncomingCwdMessage(rawInput: unknown): IncomingCwdMessage | null {
|
|
288
|
+
if (isJSON(rawInput)) {
|
|
289
|
+
const decodedType = decodeString(rawInput['type']);
|
|
290
|
+
const decodedPath = decodeString(rawInput['path']);
|
|
291
|
+
|
|
292
|
+
if (decodedType === null || decodedPath === null) {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return {
|
|
297
|
+
type: decodedType,
|
|
298
|
+
path: decodedPath,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export type IncomingMessage =
|
|
305
|
+
| CIncomingMessageIncomingActivityMessage
|
|
306
|
+
| CIncomingMessageIncomingExitMessage
|
|
307
|
+
| CIncomingMessageIncomingOutputMessage
|
|
308
|
+
| CIncomingMessageIncomingScrollbackMessage
|
|
309
|
+
| CIncomingMessageIncomingInfoMessage
|
|
310
|
+
| CIncomingMessageIncomingCwdMessage;
|
|
311
|
+
|
|
312
|
+
export function decodeIncomingMessage(rawInput: unknown): IncomingMessage | null {
|
|
313
|
+
const result: IncomingMessage | null =
|
|
314
|
+
decodeCIncomingMessageIncomingActivityMessage(rawInput) ??
|
|
315
|
+
decodeCIncomingMessageIncomingExitMessage(rawInput) ??
|
|
316
|
+
decodeCIncomingMessageIncomingOutputMessage(rawInput) ??
|
|
317
|
+
decodeCIncomingMessageIncomingScrollbackMessage(rawInput) ??
|
|
318
|
+
decodeCIncomingMessageIncomingInfoMessage(rawInput) ??
|
|
319
|
+
decodeCIncomingMessageIncomingCwdMessage(rawInput);
|
|
320
|
+
|
|
321
|
+
return result;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export class CIncomingMessageIncomingActivityMessage {
|
|
325
|
+
data: IncomingActivityMessage;
|
|
326
|
+
constructor(data: IncomingActivityMessage) {
|
|
327
|
+
this.data = data;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export function decodeCIncomingMessageIncomingActivityMessage(
|
|
332
|
+
rawInput: unknown
|
|
333
|
+
): CIncomingMessageIncomingActivityMessage | null {
|
|
334
|
+
const result = decodeIncomingActivityMessage(rawInput);
|
|
335
|
+
if (result === null) {
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
return new CIncomingMessageIncomingActivityMessage(result);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
export class CIncomingMessageIncomingExitMessage {
|
|
342
|
+
data: IncomingExitMessage;
|
|
343
|
+
constructor(data: IncomingExitMessage) {
|
|
344
|
+
this.data = data;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
export function decodeCIncomingMessageIncomingExitMessage(
|
|
349
|
+
rawInput: unknown
|
|
350
|
+
): CIncomingMessageIncomingExitMessage | null {
|
|
351
|
+
const result = decodeIncomingExitMessage(rawInput);
|
|
352
|
+
if (result === null) {
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
return new CIncomingMessageIncomingExitMessage(result);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
export class CIncomingMessageIncomingOutputMessage {
|
|
359
|
+
data: IncomingOutputMessage;
|
|
360
|
+
constructor(data: IncomingOutputMessage) {
|
|
361
|
+
this.data = data;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export function decodeCIncomingMessageIncomingOutputMessage(
|
|
366
|
+
rawInput: unknown
|
|
367
|
+
): CIncomingMessageIncomingOutputMessage | null {
|
|
368
|
+
const result = decodeIncomingOutputMessage(rawInput);
|
|
369
|
+
if (result === null) {
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
return new CIncomingMessageIncomingOutputMessage(result);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
export class CIncomingMessageIncomingScrollbackMessage {
|
|
376
|
+
data: IncomingScrollbackMessage;
|
|
377
|
+
constructor(data: IncomingScrollbackMessage) {
|
|
378
|
+
this.data = data;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
export function decodeCIncomingMessageIncomingScrollbackMessage(
|
|
383
|
+
rawInput: unknown
|
|
384
|
+
): CIncomingMessageIncomingScrollbackMessage | null {
|
|
385
|
+
const result = decodeIncomingScrollbackMessage(rawInput);
|
|
386
|
+
if (result === null) {
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
return new CIncomingMessageIncomingScrollbackMessage(result);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export class CIncomingMessageIncomingInfoMessage {
|
|
393
|
+
data: IncomingInfoMessage;
|
|
394
|
+
constructor(data: IncomingInfoMessage) {
|
|
395
|
+
this.data = data;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
export function decodeCIncomingMessageIncomingInfoMessage(
|
|
400
|
+
rawInput: unknown
|
|
401
|
+
): CIncomingMessageIncomingInfoMessage | null {
|
|
402
|
+
const result = decodeIncomingInfoMessage(rawInput);
|
|
403
|
+
if (result === null) {
|
|
404
|
+
return null;
|
|
405
|
+
}
|
|
406
|
+
return new CIncomingMessageIncomingInfoMessage(result);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
export class CIncomingMessageIncomingCwdMessage {
|
|
410
|
+
data: IncomingCwdMessage;
|
|
411
|
+
constructor(data: IncomingCwdMessage) {
|
|
412
|
+
this.data = data;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
export function decodeCIncomingMessageIncomingCwdMessage(
|
|
417
|
+
rawInput: unknown
|
|
418
|
+
): CIncomingMessageIncomingCwdMessage | null {
|
|
419
|
+
const result = decodeIncomingCwdMessage(rawInput);
|
|
420
|
+
if (result === null) {
|
|
421
|
+
return null;
|
|
422
|
+
}
|
|
423
|
+
return new CIncomingMessageIncomingCwdMessage(result);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* @type { OutgoingResizeMessage }
|
|
428
|
+
* @description Resize the PTY dimensions
|
|
429
|
+
*/
|
|
430
|
+
export type OutgoingResizeMessage = {
|
|
431
|
+
/**
|
|
432
|
+
* @type { string }
|
|
433
|
+
* @memberof OutgoingResizeMessage
|
|
434
|
+
*/
|
|
435
|
+
type: string;
|
|
436
|
+
/**
|
|
437
|
+
* @description New width in columns
|
|
438
|
+
* @type { number }
|
|
439
|
+
* @memberof OutgoingResizeMessage
|
|
440
|
+
*/
|
|
441
|
+
cols: number;
|
|
442
|
+
/**
|
|
443
|
+
* @description New height in rows
|
|
444
|
+
* @type { number }
|
|
445
|
+
* @memberof OutgoingResizeMessage
|
|
446
|
+
*/
|
|
447
|
+
rows: number;
|
|
448
|
+
};
|
|
449
|
+
|
|
450
|
+
export function decodeOutgoingResizeMessage(rawInput: unknown): OutgoingResizeMessage | null {
|
|
451
|
+
if (isJSON(rawInput)) {
|
|
452
|
+
const decodedType = decodeString(rawInput['type']);
|
|
453
|
+
const decodedCols = decodeNumber(rawInput['cols']);
|
|
454
|
+
const decodedRows = decodeNumber(rawInput['rows']);
|
|
455
|
+
|
|
456
|
+
if (decodedType === null || decodedCols === null || decodedRows === null) {
|
|
457
|
+
return null;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
return {
|
|
461
|
+
type: decodedType,
|
|
462
|
+
cols: decodedCols,
|
|
463
|
+
rows: decodedRows,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
return null;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* @type { OutgoingInputMessage }
|
|
471
|
+
* @description Write data to PTY stdin
|
|
472
|
+
*/
|
|
473
|
+
export type OutgoingInputMessage = {
|
|
474
|
+
/**
|
|
475
|
+
* @type { string }
|
|
476
|
+
* @memberof OutgoingInputMessage
|
|
477
|
+
*/
|
|
478
|
+
type: string;
|
|
479
|
+
/**
|
|
480
|
+
* @description Raw input data to write to PTY
|
|
481
|
+
* @type { string }
|
|
482
|
+
* @memberof OutgoingInputMessage
|
|
483
|
+
*/
|
|
484
|
+
data: string;
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
export function decodeOutgoingInputMessage(rawInput: unknown): OutgoingInputMessage | null {
|
|
488
|
+
if (isJSON(rawInput)) {
|
|
489
|
+
const decodedType = decodeString(rawInput['type']);
|
|
490
|
+
const decodedData = decodeString(rawInput['data']);
|
|
491
|
+
|
|
492
|
+
if (decodedType === null || decodedData === null) {
|
|
493
|
+
return null;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
return {
|
|
497
|
+
type: decodedType,
|
|
498
|
+
data: decodedData,
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
return null;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* @type { OutgoingKillMessage }
|
|
506
|
+
* @description Send a signal to the PTY process
|
|
507
|
+
*/
|
|
508
|
+
export type OutgoingKillMessage = {
|
|
509
|
+
/**
|
|
510
|
+
* @type { string }
|
|
511
|
+
* @memberof OutgoingKillMessage
|
|
512
|
+
*/
|
|
513
|
+
type: string;
|
|
514
|
+
/**
|
|
515
|
+
* @description Signal name to send (default SIGTERM)
|
|
516
|
+
* @type { string }
|
|
517
|
+
* @memberof OutgoingKillMessage
|
|
518
|
+
*/
|
|
519
|
+
signal: string | null;
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
export function decodeOutgoingKillMessage(rawInput: unknown): OutgoingKillMessage | null {
|
|
523
|
+
if (isJSON(rawInput)) {
|
|
524
|
+
const decodedType = decodeString(rawInput['type']);
|
|
525
|
+
const decodedSignal = decodeString(rawInput['signal']);
|
|
526
|
+
|
|
527
|
+
if (decodedType === null) {
|
|
528
|
+
return null;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return {
|
|
532
|
+
type: decodedType,
|
|
533
|
+
signal: decodedSignal,
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
return null;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
export type OutgoingMessage =
|
|
540
|
+
| COutgoingMessageOutgoingResizeMessage
|
|
541
|
+
| COutgoingMessageOutgoingInputMessage
|
|
542
|
+
| COutgoingMessageOutgoingKillMessage;
|
|
543
|
+
|
|
544
|
+
export function decodeOutgoingMessage(rawInput: unknown): OutgoingMessage | null {
|
|
545
|
+
const result: OutgoingMessage | null =
|
|
546
|
+
decodeCOutgoingMessageOutgoingResizeMessage(rawInput) ??
|
|
547
|
+
decodeCOutgoingMessageOutgoingInputMessage(rawInput) ??
|
|
548
|
+
decodeCOutgoingMessageOutgoingKillMessage(rawInput);
|
|
549
|
+
|
|
550
|
+
return result;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
export class COutgoingMessageOutgoingResizeMessage {
|
|
554
|
+
data: OutgoingResizeMessage;
|
|
555
|
+
constructor(data: OutgoingResizeMessage) {
|
|
556
|
+
this.data = data;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
export function decodeCOutgoingMessageOutgoingResizeMessage(
|
|
561
|
+
rawInput: unknown
|
|
562
|
+
): COutgoingMessageOutgoingResizeMessage | null {
|
|
563
|
+
const result = decodeOutgoingResizeMessage(rawInput);
|
|
564
|
+
if (result === null) {
|
|
565
|
+
return null;
|
|
566
|
+
}
|
|
567
|
+
return new COutgoingMessageOutgoingResizeMessage(result);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
export class COutgoingMessageOutgoingInputMessage {
|
|
571
|
+
data: OutgoingInputMessage;
|
|
572
|
+
constructor(data: OutgoingInputMessage) {
|
|
573
|
+
this.data = data;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
export function decodeCOutgoingMessageOutgoingInputMessage(
|
|
578
|
+
rawInput: unknown
|
|
579
|
+
): COutgoingMessageOutgoingInputMessage | null {
|
|
580
|
+
const result = decodeOutgoingInputMessage(rawInput);
|
|
581
|
+
if (result === null) {
|
|
582
|
+
return null;
|
|
583
|
+
}
|
|
584
|
+
return new COutgoingMessageOutgoingInputMessage(result);
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
export class COutgoingMessageOutgoingKillMessage {
|
|
588
|
+
data: OutgoingKillMessage;
|
|
589
|
+
constructor(data: OutgoingKillMessage) {
|
|
590
|
+
this.data = data;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
export function decodeCOutgoingMessageOutgoingKillMessage(
|
|
595
|
+
rawInput: unknown
|
|
596
|
+
): COutgoingMessageOutgoingKillMessage | null {
|
|
597
|
+
const result = decodeOutgoingKillMessage(rawInput);
|
|
598
|
+
if (result === null) {
|
|
599
|
+
return null;
|
|
600
|
+
}
|
|
601
|
+
return new COutgoingMessageOutgoingKillMessage(result);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* @type { WatchedFile }
|
|
606
|
+
* @description Tracking state for a JSONL session file being watched by the SessionWatcher
|
|
607
|
+
*/
|
|
608
|
+
export type WatchedFile = {
|
|
609
|
+
/**
|
|
610
|
+
* @description Absolute path to the JSONL session file being watched
|
|
611
|
+
* @type { string }
|
|
612
|
+
* @memberof WatchedFile
|
|
613
|
+
*/
|
|
614
|
+
filePath: string;
|
|
615
|
+
/**
|
|
616
|
+
* @description Byte offset of the last read position in the file
|
|
617
|
+
* @type { number }
|
|
618
|
+
* @memberof WatchedFile
|
|
619
|
+
*/
|
|
620
|
+
offset: number;
|
|
621
|
+
};
|
|
622
|
+
|
|
623
|
+
export function decodeWatchedFile(rawInput: unknown): WatchedFile | null {
|
|
624
|
+
if (isJSON(rawInput)) {
|
|
625
|
+
const decodedFilePath = decodeString(rawInput['filePath']);
|
|
626
|
+
const decodedOffset = decodeNumber(rawInput['offset']);
|
|
627
|
+
|
|
628
|
+
if (decodedFilePath === null || decodedOffset === null) {
|
|
629
|
+
return null;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
return {
|
|
633
|
+
filePath: decodedFilePath,
|
|
634
|
+
offset: decodedOffset,
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
return null;
|
|
638
|
+
}
|