@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,18 +1,8 @@
|
|
|
1
|
+
import type { NotificationSession } from '$generated/types';
|
|
2
|
+
|
|
1
3
|
import { getNotifications, type NotificationRecord } from './notification-history';
|
|
2
4
|
|
|
3
|
-
export
|
|
4
|
-
duration: number; // seconds
|
|
5
|
-
endTime: string;
|
|
6
|
-
eventCount: number;
|
|
7
|
-
events: NotificationRecord[];
|
|
8
|
-
filesModified: string[];
|
|
9
|
-
id: string;
|
|
10
|
-
project: string;
|
|
11
|
-
runtime: string;
|
|
12
|
-
startTime: string;
|
|
13
|
-
status: 'active' | 'complete';
|
|
14
|
-
toolsUsed: string[];
|
|
15
|
-
}
|
|
5
|
+
export type Session = NotificationSession;
|
|
16
6
|
|
|
17
7
|
const SESSION_GAP_MS = 30 * 60 * 1000; // 30 min gap = new session
|
|
18
8
|
const ACTIVE_THRESHOLD_MS = 5 * 60 * 1000; // active if last event < 5 min ago
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
// Shared in-memory store for pending permission requests.
|
|
2
2
|
// Used by /api/notify (creates entries) and /api/response (reads/updates).
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
decision: 'allow' | 'deny' | null;
|
|
8
|
-
sessionId: string;
|
|
9
|
-
toolInput: Record<string, unknown>;
|
|
10
|
-
toolName: string;
|
|
11
|
-
}
|
|
4
|
+
import type { PendingRequest } from '$generated/types';
|
|
5
|
+
|
|
6
|
+
export type { PendingRequest };
|
|
12
7
|
|
|
13
8
|
const MAX_AGE_MS = 5 * 60 * 1000; // 5 minutes
|
|
14
9
|
|
|
@@ -7,12 +7,13 @@ import type {
|
|
|
7
7
|
SentDetail,
|
|
8
8
|
} from '$generated/types';
|
|
9
9
|
|
|
10
|
-
//
|
|
11
|
-
//
|
|
10
|
+
// Composite types built from generated primitives. These use arrays and
|
|
11
|
+
// union constructs that type-crafter does not emit, so they stay as local
|
|
12
|
+
// definitions.
|
|
12
13
|
|
|
13
14
|
export interface LibraryResult {
|
|
14
|
-
failed: LibraryFailedItem[]
|
|
15
|
-
sent: LibrarySentItem[]
|
|
15
|
+
failed: LibraryFailedItem[];
|
|
16
|
+
sent: LibrarySentItem[];
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export interface NotificationPayload {
|
|
@@ -6,8 +6,9 @@ export type { ExitCallback, OutputCallback } from './runner';
|
|
|
6
6
|
// Types generated by type-crafter
|
|
7
7
|
export type { CLIOptions };
|
|
8
8
|
|
|
9
|
-
// Types not
|
|
10
|
-
//
|
|
9
|
+
// Types defined in YAML spec (cli.yaml) but not generated by type-crafter
|
|
10
|
+
// because they contain $ref or array constructs.
|
|
11
|
+
// TODO: Remove once type-crafter supports these constructs.
|
|
11
12
|
export interface CLICommand {
|
|
12
13
|
args: string[];
|
|
13
14
|
name: string;
|
|
@@ -30,15 +30,17 @@ export async function sendFCMNotification(
|
|
|
30
30
|
},
|
|
31
31
|
data: {
|
|
32
32
|
body: payload.body || payload.message || '',
|
|
33
|
-
category:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
category:
|
|
34
|
+
payload.category ??
|
|
35
|
+
(typeof payload.data?.category === 'string' ? payload.data.category : ''),
|
|
36
|
+
project: typeof payload.data?.project === 'string' ? payload.data.project : '',
|
|
37
|
+
requestId: typeof payload.data?.requestId === 'string' ? payload.data.requestId : '',
|
|
38
|
+
source: typeof payload.data?.source === 'string' ? payload.data.source : '',
|
|
37
39
|
timestamp: new Date().toISOString(),
|
|
38
40
|
title: payload.title,
|
|
39
41
|
toolInput: payload.data?.toolInput ? JSON.stringify(payload.data.toolInput) : '',
|
|
40
|
-
toolName: payload.data?.toolName ?
|
|
41
|
-
type: payload.data?.type ?
|
|
42
|
+
toolName: typeof payload.data?.toolName === 'string' ? payload.data.toolName : '',
|
|
43
|
+
type: typeof payload.data?.type === 'string' ? payload.data.type : '',
|
|
42
44
|
},
|
|
43
45
|
token: deviceToken,
|
|
44
46
|
};
|
|
@@ -14,12 +14,12 @@ import type { ConversationMessage, MessagePart } from './types';
|
|
|
14
14
|
* These are control/metadata entries that don't represent conversation content.
|
|
15
15
|
*/
|
|
16
16
|
export const SKIP_EVENT_TYPES = new Set([
|
|
17
|
-
'system',
|
|
18
17
|
'config',
|
|
19
|
-
'summary',
|
|
20
|
-
'result',
|
|
21
18
|
'heartbeat',
|
|
22
19
|
'metadata',
|
|
20
|
+
'result',
|
|
21
|
+
'summary',
|
|
22
|
+
'system',
|
|
23
23
|
]);
|
|
24
24
|
|
|
25
25
|
/**
|
|
@@ -74,8 +74,6 @@ export function listProjectsWithSessions(): ProjectGroup[] {
|
|
|
74
74
|
|
|
75
75
|
for (const dir of projectDirs) {
|
|
76
76
|
const projectDir = path.join(CLAUDE_PROJECTS_DIR, dir);
|
|
77
|
-
// Decode project path (fallback, prefer session's projectPath)
|
|
78
|
-
const decodedPath = dir.startsWith('-') ? dir.replace(/-/g, '/') : `/${dir.replace(/-/g, '/')}`;
|
|
79
77
|
|
|
80
78
|
// Get sessions for this project
|
|
81
79
|
const sessions = listSessionsForProject(projectDir);
|
|
@@ -86,10 +84,12 @@ export function listProjectsWithSessions(): ProjectGroup[] {
|
|
|
86
84
|
// Sort sessions by modified desc
|
|
87
85
|
sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());
|
|
88
86
|
|
|
89
|
-
//
|
|
87
|
+
// Prefer projectPath from session index, then cwd from JSONL, then decoded dir name
|
|
90
88
|
const realPath =
|
|
91
89
|
sessions.find((s) => s.projectPath && !s.projectPath.includes('.claude/projects'))
|
|
92
|
-
?.projectPath ||
|
|
90
|
+
?.projectPath ||
|
|
91
|
+
readCwdFromProjectDir(projectDir, sessions) ||
|
|
92
|
+
(dir.startsWith('-') ? dir.replace(/-/g, '/') : `/${dir.replace(/-/g, '/')}`);
|
|
93
93
|
const pathSegments = realPath.split('/').filter(Boolean);
|
|
94
94
|
const projectName = pathSegments.slice(-2).join('/');
|
|
95
95
|
|
|
@@ -122,7 +122,8 @@ function cleanTitle(prompt: string): string {
|
|
|
122
122
|
.replace(/<command-args>.*?<\/command-args>/gs, '')
|
|
123
123
|
.replace(/<local-command-caveat>.*?<\/local-command-caveat>/gs, '')
|
|
124
124
|
.replace(/<local-command-stdout>.*?<\/local-command-stdout>/gs, '')
|
|
125
|
-
.replace(/<system-reminder>.*?<\/system-reminder>/gs, '')
|
|
125
|
+
.replace(/<system-reminder>.*?<\/system-reminder>/gs, '')
|
|
126
|
+
.replace(/<task-notification>.*?<\/task-notification>/gs, '');
|
|
126
127
|
|
|
127
128
|
// Iteratively strip tags until none remain (prevents reconstructed tags like "<scr" + "ipt>")
|
|
128
129
|
let prev = '';
|
|
@@ -220,7 +221,9 @@ function listSessionsForProject(projectDir: string): SessionInfo[] {
|
|
|
220
221
|
// Count user + assistant messages for the message count
|
|
221
222
|
const lines = content.split('\n');
|
|
222
223
|
for (const line of lines) {
|
|
223
|
-
if (!line.trim()) {
|
|
224
|
+
if (!line.trim()) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
224
227
|
try {
|
|
225
228
|
const entry = JSON.parse(line);
|
|
226
229
|
if (entry.type === 'user' || entry.type === 'assistant') {
|
|
@@ -232,12 +235,18 @@ function listSessionsForProject(projectDir: string): SessionInfo[] {
|
|
|
232
235
|
}
|
|
233
236
|
// Find the first real user message (skip system caveats, commands, tool results)
|
|
234
237
|
for (const line of lines) {
|
|
235
|
-
if (!line.trim()) {
|
|
238
|
+
if (!line.trim()) {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
236
241
|
try {
|
|
237
242
|
const entry = JSON.parse(line);
|
|
238
|
-
if (entry.type !== 'user') {
|
|
243
|
+
if (entry.type !== 'user') {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
239
246
|
const msg = entry.message;
|
|
240
|
-
if (!msg?.content) {
|
|
247
|
+
if (!msg?.content) {
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
241
250
|
|
|
242
251
|
// Extract text from content (can be string or array of blocks)
|
|
243
252
|
let text = '';
|
|
@@ -256,14 +265,22 @@ function listSessionsForProject(projectDir: string): SessionInfo[] {
|
|
|
256
265
|
}
|
|
257
266
|
}
|
|
258
267
|
|
|
259
|
-
if (!text) {
|
|
268
|
+
if (!text) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
260
271
|
|
|
261
272
|
// Skip system-injected caveats and command outputs
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
273
|
+
// Keep aligned with cleanTitle() tag stripping
|
|
274
|
+
if (
|
|
275
|
+
text.startsWith('<local-command') ||
|
|
276
|
+
text.startsWith('<command-name>') ||
|
|
277
|
+
text.startsWith('<command-message>') ||
|
|
278
|
+
text.startsWith('<command-args>') ||
|
|
279
|
+
text.startsWith('<local-command-stdout>') ||
|
|
280
|
+
text.startsWith('<local-command-caveat>') ||
|
|
281
|
+
text.startsWith('<system-reminder>') ||
|
|
282
|
+
text.startsWith('<task-notification>')
|
|
283
|
+
) {
|
|
267
284
|
continue;
|
|
268
285
|
}
|
|
269
286
|
|
|
@@ -299,3 +316,31 @@ function listSessionsForProject(projectDir: string): SessionInfo[] {
|
|
|
299
316
|
return [];
|
|
300
317
|
}
|
|
301
318
|
}
|
|
319
|
+
|
|
320
|
+
function readCwdFromProjectDir(projectDir: string, sessions: SessionInfo[]): string {
|
|
321
|
+
for (const session of sessions) {
|
|
322
|
+
try {
|
|
323
|
+
const jsonlPath = path.join(projectDir, `${session.id}.jsonl`);
|
|
324
|
+
if (!fs.existsSync(jsonlPath)) {
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
const content = fs.readFileSync(jsonlPath, 'utf-8');
|
|
328
|
+
for (const line of content.split('\n')) {
|
|
329
|
+
if (!line.trim()) {
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
try {
|
|
333
|
+
const entry = JSON.parse(line) as Record<string, unknown>;
|
|
334
|
+
if (typeof entry.cwd === 'string' && entry.cwd) {
|
|
335
|
+
return entry.cwd;
|
|
336
|
+
}
|
|
337
|
+
} catch {
|
|
338
|
+
// skip malformed lines
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
} catch {
|
|
342
|
+
// skip unreadable files
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return '';
|
|
346
|
+
}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
|
+
// Re-export generated types that match 1:1
|
|
2
|
+
export type { MessageRole, ProjectGroup, SessionInfo } from '$generated/types';
|
|
3
|
+
import type { MessageRole } from '$generated/types';
|
|
4
|
+
|
|
5
|
+
// ── Local interfaces ─────────────────────────────────────────────────
|
|
6
|
+
// These remain local because the generated versions differ structurally:
|
|
7
|
+
// generated MessagePart uses wrapper classes (CMessagePartTextPart, etc.)
|
|
8
|
+
// and part types use `type: string` instead of string literals needed
|
|
9
|
+
// for discriminated unions. Declared as interfaces per ESLint rules.
|
|
10
|
+
|
|
1
11
|
export interface ConversationMessage {
|
|
2
12
|
id: string;
|
|
3
13
|
parts: MessagePart[];
|
|
4
|
-
role:
|
|
14
|
+
role: MessageRole;
|
|
5
15
|
timestamp: string;
|
|
6
16
|
}
|
|
7
17
|
|
|
8
18
|
export type MessagePart = TextPart | ThinkingPart | ToolResultPart | ToolUsePart;
|
|
9
19
|
|
|
10
|
-
export interface ProjectGroup {
|
|
11
|
-
fullPath: string;
|
|
12
|
-
id: string;
|
|
13
|
-
lastModified: string;
|
|
14
|
-
name: string;
|
|
15
|
-
sessionCount: number;
|
|
16
|
-
sessions: SessionInfo[];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface SessionInfo {
|
|
20
|
-
created: string;
|
|
21
|
-
gitBranch: string;
|
|
22
|
-
id: string;
|
|
23
|
-
messageCount: number;
|
|
24
|
-
modified: string;
|
|
25
|
-
projectPath: string;
|
|
26
|
-
source: 'claude-code' | 'opencode';
|
|
27
|
-
summary: string;
|
|
28
|
-
title: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
20
|
export interface TextPart {
|
|
32
21
|
content: string;
|
|
33
22
|
type: 'text';
|