@juspay/shooter 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/chunks/{CqfYvnci.js → Dc_Gg2H6.js} +1 -1
- package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{y_g-KC7l.js → DlnAjkg1.js} +1 -1
- package/build/client/_app/immutable/chunks/DlnAjkg1.js.br +0 -0
- package/build/client/_app/immutable/chunks/{y_g-KC7l.js.gz → DlnAjkg1.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/{EhLZwqfu.js → YKoRJzXZ.js} +2 -2
- package/build/client/_app/immutable/chunks/YKoRJzXZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/YKoRJzXZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.zJvbFXsj.js → app.CFPgQOa8.js} +2 -2
- package/build/client/_app/immutable/entry/app.CFPgQOa8.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CFPgQOa8.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js +1 -0
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js.br +2 -0
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.B_E4j3MX.js → 0.DR-BBF5r.js} +1 -1
- package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.B0oFqb8X.js → 1.CNm6rAwf.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.Bqul0XyM.js → 2.B08usYzr.js} +1 -1
- package/build/client/_app/immutable/nodes/2.B08usYzr.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B08usYzr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.CTqUQKSN.js → 3.CsY6J5HS.js} +1 -1
- package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.BvjUfHnH.js → 6.CbQQ3FtZ.js} +1 -1
- package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.5K7Od8ba.js → 7.CCKgiNNk.js} +1 -1
- package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.Bs1DrW0_.js → 8.C7AaheUD.js} +1 -1
- package/build/client/_app/immutable/nodes/8.C7AaheUD.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.C7AaheUD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.1fMlGdqv.js → 9.DfL9kMC4.js} +1 -1
- package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-e1fgD9Mi.js → 0-DC2VLooL.js} +2 -2
- package/build/server/chunks/{0-e1fgD9Mi.js.map → 0-DC2VLooL.js.map} +1 -1
- package/build/server/chunks/{1-D2_XVthm.js → 1-XJaf8Jvf.js} +2 -2
- package/build/server/chunks/{1-D2_XVthm.js.map → 1-XJaf8Jvf.js.map} +1 -1
- package/build/server/chunks/{2-DADX86JZ.js → 2-D4Cx-1QL.js} +2 -2
- package/build/server/chunks/{2-DADX86JZ.js.map → 2-D4Cx-1QL.js.map} +1 -1
- package/build/server/chunks/{3-CHacdiCg.js → 3-CVhIEP-u.js} +2 -2
- package/build/server/chunks/{3-CHacdiCg.js.map → 3-CVhIEP-u.js.map} +1 -1
- package/build/server/chunks/{6-CWLNQu6F.js → 6-QFSbzRMP.js} +2 -2
- package/build/server/chunks/{6-CWLNQu6F.js.map → 6-QFSbzRMP.js.map} +1 -1
- package/build/server/chunks/{7-DmQ3B8uy.js → 7-CZ_YGjMV.js} +2 -2
- package/build/server/chunks/{7-DmQ3B8uy.js.map → 7-CZ_YGjMV.js.map} +1 -1
- package/build/server/chunks/{8-CnFVjQtZ.js → 8-Xe2Rugb4.js} +2 -2
- package/build/server/chunks/{8-CnFVjQtZ.js.map → 8-Xe2Rugb4.js.map} +1 -1
- package/build/server/chunks/{9-Dw7-P6aF.js → 9-IwHpC4SO.js} +2 -2
- package/build/server/chunks/{9-Dw7-P6aF.js.map → 9-IwHpC4SO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ByIrRtCx.js → _server.ts-Ds_SUGC3.js} +53 -15
- package/build/server/chunks/_server.ts-Ds_SUGC3.js.map +1 -0
- package/build/server/chunks/{_server.ts-B__YN2kX.js → _server.ts-G8OeADGj.js} +21 -3
- package/build/server/chunks/_server.ts-G8OeADGj.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +11 -11
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/modules/server/sessions/jsonl-reader.ts +75 -16
- package/src/routes/api/notify/+server.ts +31 -3
- package/build/client/_app/immutable/chunks/CqfYvnci.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqfYvnci.js.gz +0 -0
- package/build/client/_app/immutable/chunks/EhLZwqfu.js.br +0 -0
- package/build/client/_app/immutable/chunks/EhLZwqfu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/y_g-KC7l.js.br +0 -0
- package/build/client/_app/immutable/entry/app.zJvbFXsj.js.br +0 -0
- package/build/client/_app/immutable/entry/app.zJvbFXsj.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js +0 -1
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js.br +0 -2
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.B_E4j3MX.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.B_E4j3MX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B0oFqb8X.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B0oFqb8X.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Bqul0XyM.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Bqul0XyM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CTqUQKSN.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CTqUQKSN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BvjUfHnH.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BvjUfHnH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.5K7Od8ba.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.5K7Od8ba.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Bs1DrW0_.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Bs1DrW0_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.1fMlGdqv.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.1fMlGdqv.js.gz +0 -0
- package/build/server/chunks/_server.ts-B__YN2kX.js.map +0 -1
- package/build/server/chunks/_server.ts-ByIrRtCx.js.map +0 -1
package/build/server/manifest.js
CHANGED
|
@@ -10,18 +10,18 @@ return {
|
|
|
10
10
|
assets: new Set(["app-icon.png","apple-touch-icon.png","favicon.png","favicon.svg","manifest.json","pwa-192x192.png","pwa-512x512.png"]),
|
|
11
11
|
mimeTypes: {".png":"image/png",".svg":"image/svg+xml",".json":"application/json"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.BnJOVqhI.js",app:"_app/immutable/entry/app.CFPgQOa8.js",imports:["_app/immutable/entry/start.BnJOVqhI.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/entry/app.CFPgQOa8.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/1mEchsPO.js","_app/immutable/chunks/B7X-vhXI.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
|
-
__memo(() => import('./chunks/0-
|
|
16
|
-
__memo(() => import('./chunks/1-
|
|
17
|
-
__memo(() => import('./chunks/2-
|
|
18
|
-
__memo(() => import('./chunks/3-
|
|
15
|
+
__memo(() => import('./chunks/0-DC2VLooL.js')),
|
|
16
|
+
__memo(() => import('./chunks/1-XJaf8Jvf.js')),
|
|
17
|
+
__memo(() => import('./chunks/2-D4Cx-1QL.js')),
|
|
18
|
+
__memo(() => import('./chunks/3-CVhIEP-u.js')),
|
|
19
19
|
__memo(() => import('./chunks/4-0UE_6Ep-.js')),
|
|
20
20
|
__memo(() => import('./chunks/5-BBIP1PzX.js')),
|
|
21
|
-
__memo(() => import('./chunks/6-
|
|
22
|
-
__memo(() => import('./chunks/7-
|
|
23
|
-
__memo(() => import('./chunks/8-
|
|
24
|
-
__memo(() => import('./chunks/9-
|
|
21
|
+
__memo(() => import('./chunks/6-QFSbzRMP.js')),
|
|
22
|
+
__memo(() => import('./chunks/7-CZ_YGjMV.js')),
|
|
23
|
+
__memo(() => import('./chunks/8-Xe2Rugb4.js')),
|
|
24
|
+
__memo(() => import('./chunks/9-IwHpC4SO.js'))
|
|
25
25
|
],
|
|
26
26
|
remotes: {
|
|
27
27
|
|
|
@@ -74,7 +74,7 @@ return {
|
|
|
74
74
|
pattern: /^\/api\/notify\/?$/,
|
|
75
75
|
params: [],
|
|
76
76
|
page: null,
|
|
77
|
-
endpoint: __memo(() => import('./chunks/_server.ts-
|
|
77
|
+
endpoint: __memo(() => import('./chunks/_server.ts-G8OeADGj.js'))
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
id: "/api/qr-config",
|
|
@@ -95,7 +95,7 @@ return {
|
|
|
95
95
|
pattern: /^\/api\/sessions\/?$/,
|
|
96
96
|
params: [],
|
|
97
97
|
page: null,
|
|
98
|
-
endpoint: __memo(() => import('./chunks/_server.ts-
|
|
98
|
+
endpoint: __memo(() => import('./chunks/_server.ts-Ds_SUGC3.js'))
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
id: "/api/sessions/connect",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"app-icon.png\",\"apple-touch-icon.png\",\"favicon.png\",\"favicon.svg\",\"manifest.json\",\"pwa-192x192.png\",\"pwa-512x512.png\"]),\n\tmimeTypes: {\".png\":\"image/png\",\".svg\":\"image/svg+xml\",\".json\":\"application/json\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.B2Jf5iFd.js\",app:\"_app/immutable/entry/app.zJvbFXsj.js\",imports:[\"_app/immutable/entry/start.B2Jf5iFd.js\",\"_app/immutable/chunks/EhLZwqfu.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/entry/app.zJvbFXsj.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js')),\n\t\t\t__memo(() => import('./nodes/8.js')),\n\t\t\t__memo(() => import('./nodes/9.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/activity\",\n\t\t\t\tpattern: /^\\/activity\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/debug\",\n\t\t\t\tpattern: /^\\/api\\/debug\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/debug/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/device-token\",\n\t\t\t\tpattern: /^\\/api\\/device-token\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/device-token/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/health\",\n\t\t\t\tpattern: /^\\/api\\/health\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/health/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/neurolink-proxy\",\n\t\t\t\tpattern: /^\\/api\\/neurolink-proxy\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/neurolink-proxy/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/notify\",\n\t\t\t\tpattern: /^\\/api\\/notify\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/notify/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/qr-config\",\n\t\t\t\tpattern: /^\\/api\\/qr-config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/qr-config/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/response\",\n\t\t\t\tpattern: /^\\/api\\/response\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/response/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/connect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/connect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/connect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/detect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/detect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/detect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/paste-image\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/paste-image\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/paste-image/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/resize\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/resize\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/resize/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/webhook\",\n\t\t\t\tpattern: /^\\/api\\/webhook\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/webhook/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-status\",\n\t\t\t\tpattern: /^\\/api\\/ws-status\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-status/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-ticket\",\n\t\t\t\tpattern: /^\\/api\\/ws-ticket\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-ticket/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/config\",\n\t\t\t\tpattern: /^\\/config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/neurolink\",\n\t\t\t\tpattern: /^\\/neurolink\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/project\",\n\t\t\t\tpattern: /^\\/project\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/session/[id]\",\n\t\t\t\tpattern: /^\\/session\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals\",\n\t\t\t\tpattern: /^\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 8 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals/[id]\",\n\t\t\t\tpattern: /^\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 9 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"app-icon.png\",\"apple-touch-icon.png\",\"favicon.png\",\"favicon.svg\",\"manifest.json\",\"pwa-192x192.png\",\"pwa-512x512.png\"]),\n\tmimeTypes: {\".png\":\"image/png\",\".svg\":\"image/svg+xml\",\".json\":\"application/json\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.BnJOVqhI.js\",app:\"_app/immutable/entry/app.CFPgQOa8.js\",imports:[\"_app/immutable/entry/start.BnJOVqhI.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/entry/app.CFPgQOa8.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js')),\n\t\t\t__memo(() => import('./nodes/8.js')),\n\t\t\t__memo(() => import('./nodes/9.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/activity\",\n\t\t\t\tpattern: /^\\/activity\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/debug\",\n\t\t\t\tpattern: /^\\/api\\/debug\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/debug/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/device-token\",\n\t\t\t\tpattern: /^\\/api\\/device-token\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/device-token/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/health\",\n\t\t\t\tpattern: /^\\/api\\/health\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/health/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/neurolink-proxy\",\n\t\t\t\tpattern: /^\\/api\\/neurolink-proxy\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/neurolink-proxy/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/notify\",\n\t\t\t\tpattern: /^\\/api\\/notify\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/notify/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/qr-config\",\n\t\t\t\tpattern: /^\\/api\\/qr-config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/qr-config/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/response\",\n\t\t\t\tpattern: /^\\/api\\/response\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/response/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/connect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/connect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/connect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/sessions/detect\",\n\t\t\t\tpattern: /^\\/api\\/sessions\\/detect\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/sessions/detect/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/paste-image\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/paste-image\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/paste-image/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/terminals/[id]/resize\",\n\t\t\t\tpattern: /^\\/api\\/terminals\\/([^/]+?)\\/resize\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/terminals/_id_/resize/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/webhook\",\n\t\t\t\tpattern: /^\\/api\\/webhook\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/webhook/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-status\",\n\t\t\t\tpattern: /^\\/api\\/ws-status\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-status/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/ws-ticket\",\n\t\t\t\tpattern: /^\\/api\\/ws-ticket\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/ws-ticket/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/config\",\n\t\t\t\tpattern: /^\\/config\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/neurolink\",\n\t\t\t\tpattern: /^\\/neurolink\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/project\",\n\t\t\t\tpattern: /^\\/project\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/session/[id]\",\n\t\t\t\tpattern: /^\\/session\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals\",\n\t\t\t\tpattern: /^\\/terminals\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 8 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/terminals/[id]\",\n\t\t\t\tpattern: /^\\/terminals\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 9 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -152,11 +152,13 @@ export function listProjectsWithSessions(): ProjectGroup[] {
|
|
|
152
152
|
// Sort sessions by modified desc
|
|
153
153
|
sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());
|
|
154
154
|
|
|
155
|
-
// Prefer projectPath from session index, then cwd from JSONL, then
|
|
155
|
+
// Prefer projectPath from session index, then cwd from JSONL, then
|
|
156
|
+
// filesystem-validated decoder, then last-resort naive decoding.
|
|
156
157
|
const realPath =
|
|
157
158
|
sessions.find((s) => s.projectPath && !s.projectPath.includes('.claude/projects'))
|
|
158
159
|
?.projectPath ||
|
|
159
160
|
readCwdFromProjectDir(projectDir, sessions) ||
|
|
161
|
+
decodeClaudeProjectDir(dir) ||
|
|
160
162
|
(dir.startsWith('-') ? dir.replace(/-/g, '/') : `/${dir.replace(/-/g, '/')}`);
|
|
161
163
|
const pathSegments = realPath.split('/').filter(Boolean);
|
|
162
164
|
const projectName = pathSegments.slice(-2).join('/');
|
|
@@ -181,6 +183,10 @@ export function listSessions(): SessionInfo[] {
|
|
|
181
183
|
return listSessionsForProject(projectDir);
|
|
182
184
|
}
|
|
183
185
|
|
|
186
|
+
function bytesReadEnded(chunk: string): boolean {
|
|
187
|
+
return chunk.length > 0 && chunk.charCodeAt(chunk.length - 1) === 10;
|
|
188
|
+
}
|
|
189
|
+
|
|
184
190
|
function cleanTitle(prompt: string): string {
|
|
185
191
|
// Strip internal Claude Code XML markup tags, then remove ALL angle-bracket content.
|
|
186
192
|
// Use a loop to handle nested/reconstructed tags (satisfies CodeQL multi-char sanitization).
|
|
@@ -216,6 +222,52 @@ function cleanTitle(prompt: string): string {
|
|
|
216
222
|
return firstLine;
|
|
217
223
|
}
|
|
218
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Decode a Claude Code project directory name like "-home-parth-dogra-Desktop-Repo-pr-guardian"
|
|
227
|
+
* into the real filesystem path "/home/parth-dogra/Desktop/Repo/pr-guardian".
|
|
228
|
+
*
|
|
229
|
+
* Claude Code encodes paths by replacing "/" with "-", which is ambiguous when
|
|
230
|
+
* the original path contains hyphens (e.g. "parth-dogra", "pr-guardian"). This
|
|
231
|
+
* walks the filesystem from / and greedily matches the longest hyphen-joined
|
|
232
|
+
* segment that exists as a directory at each step.
|
|
233
|
+
*
|
|
234
|
+
* Returns null if no valid decoding exists on this filesystem.
|
|
235
|
+
*/
|
|
236
|
+
function decodeClaudeProjectDir(encoded: string): null | string {
|
|
237
|
+
if (!encoded.startsWith('-')) {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
const parts = encoded.slice(1).split('-');
|
|
241
|
+
if (parts.length === 0) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
let currentPath = '/';
|
|
246
|
+
let i = 0;
|
|
247
|
+
while (i < parts.length) {
|
|
248
|
+
let matchedTo = -1;
|
|
249
|
+
// Try the longest possible segment first (greedy longest match)
|
|
250
|
+
for (let j = parts.length; j > i; j--) {
|
|
251
|
+
const segment = parts.slice(i, j).join('-');
|
|
252
|
+
const candidate = path.join(currentPath, segment);
|
|
253
|
+
try {
|
|
254
|
+
if (fs.statSync(candidate).isDirectory()) {
|
|
255
|
+
matchedTo = j;
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
} catch {
|
|
259
|
+
// not a directory / doesn't exist — try a shorter segment
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (matchedTo === -1) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
currentPath = path.join(currentPath, parts.slice(i, matchedTo).join('-'));
|
|
266
|
+
i = matchedTo;
|
|
267
|
+
}
|
|
268
|
+
return currentPath;
|
|
269
|
+
}
|
|
270
|
+
|
|
219
271
|
function getProjectDir(): string {
|
|
220
272
|
// Encode project path: /Users/sachinsharma/Developer/Personal/shooter -> -Users-sachinsharma-Developer-Personal-shooter
|
|
221
273
|
const projectPath = process.cwd();
|
|
@@ -334,33 +386,40 @@ function listSessionsForProject(projectDir: string): SessionInfo[] {
|
|
|
334
386
|
}
|
|
335
387
|
|
|
336
388
|
function readCwdFromProjectDir(projectDir: string, sessions: SessionInfo[]): string {
|
|
389
|
+
// Scan complete JSONL lines until we find one with cwd. Newer Claude Code
|
|
390
|
+
// versions write metadata lines (permission-mode, file-history-snapshot)
|
|
391
|
+
// first, so cwd only appears on line 2+.
|
|
392
|
+
const READ_BYTES = 65536;
|
|
337
393
|
for (const session of sessions) {
|
|
338
394
|
try {
|
|
339
395
|
const filePath = path.join(projectDir, `${session.id}.jsonl`);
|
|
340
396
|
if (!fs.existsSync(filePath)) {
|
|
341
397
|
continue;
|
|
342
398
|
}
|
|
343
|
-
// Only read the first 4KB — cwd appears on line 1
|
|
344
399
|
const fd = fs.openSync(filePath, 'r');
|
|
345
|
-
let
|
|
400
|
+
let chunk: string;
|
|
346
401
|
try {
|
|
347
|
-
const buf = Buffer.alloc(
|
|
348
|
-
const bytesRead = fs.readSync(fd, buf, 0,
|
|
349
|
-
|
|
402
|
+
const buf = Buffer.alloc(READ_BYTES);
|
|
403
|
+
const bytesRead = fs.readSync(fd, buf, 0, READ_BYTES, 0);
|
|
404
|
+
chunk = buf.toString('utf-8', 0, bytesRead);
|
|
350
405
|
} finally {
|
|
351
406
|
fs.closeSync(fd);
|
|
352
407
|
}
|
|
353
|
-
const
|
|
354
|
-
if
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
408
|
+
const lines = chunk.split('\n');
|
|
409
|
+
// Drop the last line if the chunk was truncated mid-line
|
|
410
|
+
const completeLines = bytesReadEnded(chunk) ? lines : lines.slice(0, -1);
|
|
411
|
+
for (const line of completeLines) {
|
|
412
|
+
if (!line.trim()) {
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
try {
|
|
416
|
+
const entry = JSON.parse(line) as Record<string, unknown>;
|
|
417
|
+
if (typeof entry.cwd === 'string' && entry.cwd) {
|
|
418
|
+
return entry.cwd;
|
|
419
|
+
}
|
|
420
|
+
} catch {
|
|
421
|
+
// skip malformed line and try the next one
|
|
361
422
|
}
|
|
362
|
-
} catch {
|
|
363
|
-
// skip malformed first line
|
|
364
423
|
}
|
|
365
424
|
} catch {
|
|
366
425
|
// skip unreadable files
|
|
@@ -9,9 +9,31 @@ import { isFCMConfigured, sendFCMNotification } from '$lib/modules/server/fcm/fc
|
|
|
9
9
|
import { toErrorMessage } from '$lib/modules/server/utils/error';
|
|
10
10
|
import { broadcastEvent } from '$lib/modules/server/ws/server';
|
|
11
11
|
import { json } from '@sveltejs/kit';
|
|
12
|
+
import { existsSync, readFileSync } from 'fs';
|
|
13
|
+
import { homedir } from 'os';
|
|
14
|
+
import { join } from 'path';
|
|
12
15
|
|
|
13
16
|
import type { RequestHandler } from './$types';
|
|
14
17
|
|
|
18
|
+
// Reads tokens persisted by /api/device-token — populated automatically when
|
|
19
|
+
// the Android or iOS app registers on first launch.
|
|
20
|
+
function readPersistedDeviceToken(platform: 'android' | 'ios'): string | undefined {
|
|
21
|
+
const tokensFile = join(homedir(), '.shooter', 'device-tokens.json');
|
|
22
|
+
if (!existsSync(tokensFile)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const parsed: unknown = JSON.parse(readFileSync(tokensFile, 'utf-8'));
|
|
27
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
28
|
+
const value = (parsed as Record<string, unknown>)[platform];
|
|
29
|
+
return typeof value === 'string' && value ? value : undefined;
|
|
30
|
+
}
|
|
31
|
+
} catch {
|
|
32
|
+
// corrupt / unreadable — fall through
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
15
37
|
// Singleton APNs client - reuses HTTP/2 connection across requests
|
|
16
38
|
let apnsSingleton: LibraryAPNsService | null = null;
|
|
17
39
|
function getAPNsClient(): LibraryAPNsService {
|
|
@@ -376,15 +398,21 @@ export const POST: RequestHandler = async ({ request }) => {
|
|
|
376
398
|
);
|
|
377
399
|
}
|
|
378
400
|
|
|
379
|
-
// Honor request-scoped deviceToken,
|
|
401
|
+
// Honor request-scoped deviceToken, then the Android-specific env var,
|
|
402
|
+
// then the token auto-registered by the Android app via /api/device-token.
|
|
403
|
+
// env.DEVICE_TOKEN is intentionally NOT in this chain: the iOS branch
|
|
404
|
+
// treats it as an APNs token (see below), and letting it bleed into the
|
|
405
|
+
// FCM path would ship an APNs token to FCM in mixed-platform setups.
|
|
380
406
|
const androidToken =
|
|
381
|
-
requestDeviceToken?.trim() ||
|
|
407
|
+
requestDeviceToken?.trim() ||
|
|
408
|
+
env.ANDROID_DEVICE_TOKEN?.trim() ||
|
|
409
|
+
readPersistedDeviceToken('android');
|
|
382
410
|
|
|
383
411
|
if (!androidToken) {
|
|
384
412
|
return json(
|
|
385
413
|
{
|
|
386
414
|
details:
|
|
387
|
-
'
|
|
415
|
+
'No Android device token available — set ANDROID_DEVICE_TOKEN, pass deviceToken in the request body, or open the Android app so it can auto-register its FCM token.',
|
|
388
416
|
error: 'No device token configured',
|
|
389
417
|
},
|
|
390
418
|
{ status: 500 }
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as o,a as r}from"../chunks/EhLZwqfu.js";export{o as load_css,r as start};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-B__YN2kX.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/notify/_server.ts.js"],"sourcesContent":["import { b as private_env } from \"../../../../chunks/shared-server.js\";\nimport { L as LibraryAPNsService } from \"../../../../chunks/library-apns.js\";\nimport { c as createPendingRequest } from \"../../../../chunks/pending-requests.js\";\nimport { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport admin from \"firebase-admin\";\nimport { t as toErrorMessage } from \"../../../../chunks/error.js\";\nimport { b as broadcastEvent } from \"../../../../chunks/events-handler.js\";\nimport { json } from \"@sveltejs/kit\";\nconst MAX_HISTORY = 100;\nconst history = [];\nfunction addNotification(record) {\n history.unshift(record);\n if (history.length > MAX_HISTORY) {\n history.length = MAX_HISTORY;\n }\n}\nfunction getNotifications(limit = 50) {\n return history.slice(0, limit);\n}\nlet app = null;\nfunction isFCMConfigured() {\n return !!(process.env.FCM_PROJECT_ID && process.env.FCM_CLIENT_EMAIL && process.env.FCM_PRIVATE_KEY);\n}\nasync function sendFCMNotification(deviceToken, payload) {\n try {\n const fcmApp = getApp();\n const message = {\n android: {\n priority: \"high\",\n // Ensures delivery even in Doze mode\n ttl: 3e5\n // 5 minutes TTL (matches pending request expiry)\n },\n data: {\n body: payload.body || payload.message || \"\",\n category: payload.category ?? (typeof payload.data?.category === \"string\" ? payload.data.category : \"\"),\n project: typeof payload.data?.project === \"string\" ? payload.data.project : \"\",\n requestId: typeof payload.data?.requestId === \"string\" ? payload.data.requestId : \"\",\n source: typeof payload.data?.source === \"string\" ? payload.data.source : \"\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title: payload.title,\n toolInput: payload.data?.toolInput ? JSON.stringify(payload.data.toolInput) : \"\",\n toolName: typeof payload.data?.toolName === \"string\" ? payload.data.toolName : \"\",\n type: typeof payload.data?.type === \"string\" ? payload.data.type : \"\"\n },\n token: deviceToken\n };\n const messageId = await admin.messaging(fcmApp).send(message);\n return { messageId, success: true };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(\"[FCM] Send failed:\", errorMessage);\n return { error: errorMessage, success: false };\n }\n}\nfunction getApp() {\n if (!app) {\n const projectId = process.env.FCM_PROJECT_ID;\n const clientEmail = process.env.FCM_CLIENT_EMAIL;\n const privateKey = process.env.FCM_PRIVATE_KEY?.replace(/\\\\n/g, \"\\n\");\n if (!projectId || !clientEmail || !privateKey) {\n throw new Error(\n \"FCM not configured: missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY\"\n );\n }\n app = admin.initializeApp({\n credential: admin.credential.cert({ clientEmail, privateKey, projectId })\n });\n }\n return app;\n}\nlet apnsSingleton = null;\nfunction getAPNsClient() {\n if (!apnsSingleton) {\n apnsSingleton = new LibraryAPNsService();\n }\n return apnsSingleton;\n}\nconst notificationCache = /* @__PURE__ */ new Map();\nconst DEDUP_WINDOW = 1e4;\nfunction broadcastHookEvent(body) {\n const data = body.data ?? {};\n const eventType = typeof data.eventType === \"string\" ? data.eventType : typeof body.eventType === \"string\" ? body.eventType : \"\";\n const tool = typeof data.tool === \"string\" ? data.tool : \"\";\n const terminalId = typeof data.terminalId === \"string\" ? data.terminalId : void 0;\n const sessionId = typeof data.sessionId === \"string\" ? data.sessionId : void 0;\n switch (eventType) {\n case \"error\":\n broadcastEvent({\n error: typeof data.error === \"string\" ? data.error : typeof data.message === \"string\" ? data.message : \"Unknown error\",\n terminalId,\n tool,\n type: \"tool-failed\"\n });\n break;\n case \"idle_input\":\n case \"session.idle\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-idle\"\n });\n break;\n case \"permission\":\n case \"permission_notification\":\n if (data.requestId && data.toolName) {\n broadcastEvent({\n input: typeof data.toolInput === \"object\" && data.toolInput !== null ? data.toolInput : {},\n requestId: data.requestId,\n tool: data.toolName,\n type: \"permission-requested\"\n });\n }\n break;\n case \"question\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-question\"\n });\n break;\n case \"tool.after\":\n broadcastEvent({ success: true, terminalId, tool, type: \"tool-completed\" });\n break;\n case \"tool.before\":\n broadcastEvent({\n command: typeof data.command === \"string\" ? data.command : \"\",\n filePath: typeof data.filePath === \"string\" ? data.filePath : typeof data.files === \"string\" ? data.files : \"\",\n terminalId,\n tool,\n type: \"tool-started\"\n });\n break;\n }\n}\nfunction buildNotificationRecord(id, title, message, status, data, error) {\n return {\n category: data?.category ?? null,\n data: data ?? null,\n error: error ?? null,\n id,\n message,\n project: data?.project ?? null,\n source: data?.source ?? null,\n status,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title,\n tool: data?.tool ?? null\n };\n}\nfunction intelligentNotificationFilter(title, message, data, waitForResponse = false) {\n const source = data?.source || \"unknown\";\n if (isDuplicateNotification(title, message, data, waitForResponse)) {\n return {\n reason: \"Duplicate notification within 10-second window\",\n send: false\n };\n }\n if (source === \"smart-completion-detector\" || source === \"shooter-completion-detector\") {\n return {\n reason: \"Smart completion detector - completion or intervention needed\",\n send: true\n };\n }\n if (source === \"stop-hook\") {\n return {\n reason: \"Stop hook completion notification - session finished\",\n send: true\n };\n }\n const spamPatterns = [\n /PreToolUse/i,\n // Any PreToolUse notifications\n /PostToolUse/i,\n // Any PostToolUse notifications\n /^(Read|Write|Edit|Bash)\\s+Starting\\s*\\|\\s*\\w+$/i,\n // Only basic tool starting patterns\n /^unknown\\s*\\|\\s*\\w+$/i\n // Only \"unknown | projectname\" exactly\n ];\n const isSpam = spamPatterns.some((pattern) => pattern.test(title) || pattern.test(message));\n if (isSpam) {\n return {\n reason: \"Filtered spam notification from old hook system\",\n send: false\n };\n }\n const importantPatterns = [\n /session complete/i,\n /intervention needed/i,\n /error/i,\n /failed/i,\n /blocked/i,\n /attention/i\n ];\n const isImportant = importantPatterns.some(\n (pattern) => pattern.test(title) || pattern.test(message)\n );\n if (isImportant) {\n return {\n reason: \"Important notification - completion or intervention\",\n send: true\n };\n }\n return {\n reason: \"General notification - allowing by default\",\n send: true\n };\n}\nfunction isDuplicateNotification(title, message, data, waitForResponse = false) {\n if (waitForResponse) {\n return false;\n }\n const key = `${title}|${message}|${data?.category || \"unknown\"}`;\n const now = Date.now();\n if (notificationCache.has(key)) {\n const lastSent = notificationCache.get(key) ?? 0;\n if (now - lastSent < DEDUP_WINDOW) {\n return true;\n }\n }\n for (const [k, v] of notificationCache.entries()) {\n if (now - v > DEDUP_WINDOW) {\n notificationCache.delete(k);\n }\n }\n return false;\n}\nfunction recordNotification(title, message, data) {\n const key = `${title}|${message}|${data?.category || \"unknown\"}`;\n notificationCache.set(key, Date.now());\n}\nconst POST = async ({ request }) => {\n try {\n const apnsClient = getAPNsClient();\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const rawBody = await request.json();\n if (!rawBody || typeof rawBody !== \"object\" || Array.isArray(rawBody)) {\n return json({ error: \"Request body must be a JSON object\" }, { status: 400 });\n }\n const body = rawBody;\n const data = body.data;\n const requestDeviceToken = body.deviceToken;\n const message = body.message;\n const title = body.title;\n const skipPush = typeof body.skipPush === \"boolean\" ? body.skipPush : false;\n const waitForResponse = typeof body.waitForResponse === \"boolean\" ? body.waitForResponse : false;\n try {\n broadcastHookEvent(body);\n } catch {\n }\n if (!title || typeof title !== \"string\" || !message || typeof message !== \"string\") {\n return json({ error: \"Title and message are required and must be strings\" }, { status: 400 });\n }\n if (requestDeviceToken !== void 0 && typeof requestDeviceToken !== \"string\") {\n return json({ error: \"deviceToken must be a string\" }, { status: 400 });\n }\n const requestId = Math.random().toString(36).substring(2, 15);\n const dataRequestId = typeof data?.requestId === \"string\" ? data.requestId : void 0;\n const canonicalRequestId = dataRequestId || requestId;\n const shouldSendNotification = intelligentNotificationFilter(\n title,\n message,\n data,\n waitForResponse\n );\n if (!shouldSendNotification.send) {\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"filtered\",\n data,\n shouldSendNotification.reason\n )\n );\n return json({\n message: \"Notification filtered (not sent)\",\n reason: shouldSendNotification.reason,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n if (skipPush) {\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"skipped\", data));\n return json({\n message: \"Push skipped (WebSocket clients connected)\",\n requestId: canonicalRequestId,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const payload = {\n badge: 1,\n body: message,\n category: waitForResponse ? \"CLAUDE_PERMISSION\" : void 0,\n data: {\n ...data,\n requestId: canonicalRequestId,\n source: \"modern-apns-api\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n waitForResponse: waitForResponse || false\n },\n message: null,\n sound: \"default\",\n title\n };\n const platform = private_env.DEVICE_PLATFORM || \"ios\";\n if (platform === \"android\") {\n if (!isFCMConfigured()) {\n return json(\n {\n details: \"Missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY environment variables\",\n error: \"FCM not configured\"\n },\n { status: 500 }\n );\n }\n const androidToken = requestDeviceToken?.trim() || (private_env.ANDROID_DEVICE_TOKEN || private_env.DEVICE_TOKEN)?.trim();\n if (!androidToken) {\n return json(\n {\n details: \"ANDROID_DEVICE_TOKEN or DEVICE_TOKEN environment variable is missing and no deviceToken in request body\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n const fcmResult = await sendFCMNotification(androidToken, payload);\n if (fcmResult.success) {\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result: { messageId: fcmResult.messageId },\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } else {\n console.error(`[notify] FCM delivery failed: ${fcmResult.error}`);\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"failed\",\n data,\n fcmResult.error\n )\n );\n return json(\n {\n details: fcmResult.error,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n } else {\n if (!apnsClient.isConfigured()) {\n return json(\n {\n details: \"Missing APNS_KEY, APNS_KEY_ID, or APNS_TEAM_ID environment variables\",\n error: \"APNs client not configured\"\n },\n { status: 500 }\n );\n }\n const deviceToken = requestDeviceToken?.trim() || private_env.DEVICE_TOKEN?.trim();\n if (!deviceToken) {\n return json(\n {\n details: \"DEVICE_TOKEN environment variable is missing and no deviceToken in request body\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n try {\n const result = await apnsClient.sendNotification(deviceToken, payload);\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (notificationError) {\n const notifErrMsg = toErrorMessage(notificationError);\n console.error(`[notify] APNs delivery failed: ${notifErrMsg}`);\n addNotification(\n buildNotificationRecord(canonicalRequestId, title, message, \"failed\", data, notifErrMsg)\n );\n return json(\n {\n details: notifErrMsg,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n }\n } catch (error) {\n console.error(\"Notification error:\", error);\n return json(\n {\n details: toErrorMessage(error),\n error: \"Failed to send notification\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n};\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const limit = parseInt(url.searchParams.get(\"limit\") || \"50\");\n const notifications = getNotifications(limit);\n return json({\n count: notifications.length,\n notifications,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-ByIrRtCx.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport Database from \"better-sqlite3\";\nimport { r as resolveOpenCodeDbPath } from \"../../../../chunks/opencode-db-path.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (Array.isArray(content)) {\n return content.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const text = c.text;\n return typeof text === \"string\" ? text : \"\";\n }).join(\"\\n\");\n }\n return \"\";\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction toContentBlocks(raw) {\n if (Array.isArray(raw)) {\n return raw.filter((item) => isRecord(item));\n }\n if (isRecord(raw)) {\n return [raw];\n }\n return [];\n}\nconst SKIP_EVENT_TYPES = /* @__PURE__ */ new Set([\n \"config\",\n \"heartbeat\",\n \"metadata\",\n \"result\",\n \"summary\",\n \"system\"\n]);\nfunction parseAssistantBlock(block) {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n switch (block.type) {\n case \"text\":\n return { content: block.text || \"\", type: \"text\" };\n case \"thinking\":\n return { content: block.thinking || \"\", type: \"thinking\" };\n case \"tool_use\":\n return {\n id: block.id || \"\",\n input: block.input || {},\n toolName: block.name || \"Unknown\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction parseJsonlLine(line, assistantTurns, messageIndex) {\n const messages = [];\n const assistantCompleted = [];\n const entry = JSON.parse(line);\n if (!isRecord(entry)) {\n return { assistantCompleted, messages };\n }\n const entryType = str(entry, \"type\");\n if (SKIP_EVENT_TYPES.has(entryType)) {\n return { assistantCompleted, messages };\n }\n const entryTimestamp = str(entry, \"timestamp\");\n const entryUuid = str(entry, \"uuid\");\n if (entryType === \"user\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const parts = [];\n const blocks = toContentBlocks(msg.content);\n if (Array.isArray(msg.content)) {\n for (const item of msg.content) {\n if (typeof item === \"string\") {\n parts.push({ content: item, type: \"text\" });\n }\n }\n } else if (typeof msg.content === \"string\") {\n parts.push({ content: msg.content, type: \"text\" });\n }\n for (const block of blocks) {\n const blockType = str(block, \"type\");\n if (!blockType) {\n continue;\n }\n if (blockType === \"text\") {\n parts.push({ content: str(block, \"text\"), type: \"text\" });\n } else if (blockType === \"tool_result\") {\n let output = extractToolResultText(block.content);\n const toolUseResult = isRecord(entry.toolUseResult) ? entry.toolUseResult : null;\n if (toolUseResult?.content !== void 0) {\n output = extractToolResultText(toolUseResult.content);\n }\n parts.push({\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: str(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n if (parts.length > 0 && parts.some((p) => p.type === \"text\")) {\n messages.push({\n id: entryUuid || `user-${messageIndex}`,\n parts: parts.filter((p) => p.type === \"text\"),\n role: \"user\",\n timestamp: entryTimestamp\n });\n }\n const toolResults = parts.filter((p) => p.type === \"tool_result\");\n if (toolResults.length > 0) {\n messages.push({\n id: `tool-result-${entryUuid || messageIndex}`,\n parts: toolResults,\n role: \"system\",\n timestamp: entryTimestamp\n });\n }\n } else if (entryType === \"assistant\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const blocks = toContentBlocks(msg.content);\n const msgId = str(msg, \"id\") || entryUuid;\n for (const block of blocks) {\n const part = parseAssistantBlock(block);\n if (!part) {\n continue;\n }\n if (!assistantTurns.has(msgId)) {\n assistantTurns.set(msgId, { parts: [], timestamp: entryTimestamp });\n }\n const turn = assistantTurns.get(msgId);\n if (turn) {\n turn.parts.push(part);\n }\n }\n if (msg.stop_reason) {\n const turn = assistantTurns.get(msgId);\n if (turn && turn.parts.length > 0) {\n assistantCompleted.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n assistantTurns.delete(msgId);\n }\n }\n }\n return { assistantCompleted, messages };\n}\nfunction parseJsonlText(text, assistantTurns, startIndex) {\n const lines = text.split(\"\\n\").filter((line) => line.trim());\n const allMessages = [];\n let idx = startIndex;\n for (const line of lines) {\n try {\n const { assistantCompleted, messages } = parseJsonlLine(line, assistantTurns, idx);\n allMessages.push(...messages, ...assistantCompleted);\n idx++;\n } catch {\n }\n }\n return allMessages;\n}\nconst SYSTEM_TAG_PREFIXES = [\n \"<local-command\",\n \"<command-name>\",\n \"<command-message>\",\n \"<command-args>\",\n \"<local-command-stdout>\",\n \"<local-command-caveat>\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction extractContentText(content) {\n if (typeof content === \"string\") {\n return content.trim();\n }\n if (Array.isArray(content)) {\n for (const b of content) {\n if (typeof b === \"string\" && b.trim()) {\n return b.trim();\n }\n if (typeof b === \"object\" && b !== null) {\n const block = b;\n if (block.type === \"text\" && typeof block.text === \"string\" && block.text.trim()) {\n return block.text.trim();\n }\n }\n }\n }\n return \"\";\n}\nfunction findFirstUserPrompt(content) {\n for (const line of content.split(\"\\n\")) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (entry.type !== \"user\") {\n continue;\n }\n const msg = entry.message;\n if (!msg?.content) {\n continue;\n }\n const text = extractContentText(msg.content);\n if (!text || SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n continue;\n }\n return text;\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CLAUDE_PROJECTS_DIR = path.join(process.env.HOME || \"\", \".claude\", \"projects\");\nfunction getSessionConversation(sessionId, offset = 0, limit = 100, projectId) {\n const projectDir = projectId ? path.join(CLAUDE_PROJECTS_DIR, projectId) : getProjectDir();\n const jsonlPath = path.join(projectDir, `${sessionId}.jsonl`);\n if (!fs.existsSync(jsonlPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(jsonlPath, \"utf-8\");\n const assistantTurns = /* @__PURE__ */ new Map();\n const messages = parseJsonlText(raw, assistantTurns, 0);\n for (const [msgId, turn] of assistantTurns) {\n if (turn.parts.length > 0) {\n messages.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && startIdx < messages.length && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[sessions] Failed to parse session JSONL:\", error);\n return [];\n }\n}\nfunction listProjectsWithSessions() {\n if (!fs.existsSync(CLAUDE_PROJECTS_DIR)) {\n return [];\n }\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CLAUDE_PROJECTS_DIR).filter((d) => {\n const fullPath = path.join(CLAUDE_PROJECTS_DIR, d);\n try {\n return fs.statSync(fullPath).isDirectory();\n } catch {\n return false;\n }\n });\n } catch {\n return [];\n }\n const projects = [];\n for (const dir of projectDirs) {\n const projectDir = path.join(CLAUDE_PROJECTS_DIR, dir);\n const sessions = listSessionsForProject(projectDir);\n if (sessions.length === 0) {\n continue;\n }\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const realPath = sessions.find((s) => s.projectPath && !s.projectPath.includes(\".claude/projects\"))?.projectPath || readCwdFromProjectDir(projectDir, sessions) || (dir.startsWith(\"-\") ? dir.replace(/-/g, \"/\") : `/${dir.replace(/-/g, \"/\")}`);\n const pathSegments = realPath.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n projects.push({\n fullPath: realPath,\n id: shortHash$1(realPath),\n lastModified: sessions[0]?.modified || \"\",\n name: projectName,\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction cleanTitle(prompt) {\n let cleaned = prompt.replace(/<command-message>.*?<\\/command-message>/gs, \"\").replace(/<command-name>.*?<\\/command-name>/gs, \"\").replace(/<command-args>.*?<\\/command-args>/gs, \"\").replace(/<local-command-caveat>.*?<\\/local-command-caveat>/gs, \"\").replace(/<local-command-stdout>.*?<\\/local-command-stdout>/gs, \"\").replace(/<system-reminder>.*?<\\/system-reminder>/gs, \"\").replace(/<task-notification>.*?<\\/task-notification>/gs, \"\");\n let prev = \"\";\n while (prev !== cleaned) {\n prev = cleaned;\n cleaned = cleaned.replace(/<[^>]*>/g, \"\").replace(/</g, \"\");\n }\n cleaned = cleaned.trim();\n if (!cleaned) {\n return \"Untitled Session\";\n }\n const firstLine = cleaned.split(\"\\n\")[0].trim();\n if (!firstLine) {\n return \"Untitled Session\";\n }\n if (firstLine.length > 80) {\n return `${firstLine.slice(0, 77)}...`;\n }\n return firstLine;\n}\nfunction getProjectDir() {\n const projectPath = process.cwd();\n const encoded = projectPath.replace(/\\//g, \"-\");\n return path.join(CLAUDE_PROJECTS_DIR, encoded);\n}\nfunction listSessionsForProject(projectDir) {\n const indexPath = path.join(projectDir, \"sessions-index.json\");\n if (!fs.existsSync(indexPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(indexPath, \"utf-8\");\n const index = JSON.parse(raw);\n const indexedIds = /* @__PURE__ */ new Set();\n const sessions = index.entries.filter((e) => !e.isSidechain).filter((e) => {\n const jsonlFile = path.join(projectDir, `${e.sessionId}.jsonl`);\n return fs.existsSync(jsonlFile);\n }).map((entry) => {\n indexedIds.add(entry.sessionId);\n return {\n created: entry.created || \"\",\n gitBranch: entry.gitBranch || \"\",\n id: entry.sessionId,\n messageCount: entry.messageCount || 0,\n modified: entry.modified || \"\",\n projectPath: entry.projectPath || \"\",\n source: \"claude-code\",\n summary: entry.summary || \"\",\n title: cleanTitle(entry.firstPrompt || entry.summary || \"Untitled Session\")\n };\n });\n try {\n const files = fs.readdirSync(projectDir);\n for (const file of files) {\n if (!file.endsWith(\".jsonl\")) {\n continue;\n }\n const sessionId = file.replace(\".jsonl\", \"\");\n if (indexedIds.has(sessionId)) {\n continue;\n }\n const filePath = path.join(projectDir, file);\n const stat = fs.statSync(filePath);\n let firstPrompt = \"Active Session\";\n let messageCount = 0;\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n let countPos = 0;\n while (countPos < content.length) {\n const nl = content.indexOf(\"\\n\", countPos);\n const lineEnd = nl === -1 ? content.length : nl;\n const line = content.substring(countPos, lineEnd);\n if (line.includes('\"type\":\"user\"') || line.includes('\"type\":\"assistant\"')) {\n messageCount++;\n }\n if (nl === -1) {\n break;\n }\n countPos = nl + 1;\n }\n const prompt = findFirstUserPrompt(content);\n if (prompt) {\n firstPrompt = prompt;\n }\n } catch {\n }\n sessions.push({\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount,\n modified: stat.mtime.toISOString(),\n projectPath: \"\",\n source: \"claude-code\",\n summary: \"\",\n title: cleanTitle(firstPrompt)\n });\n }\n } catch {\n }\n return sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n } catch (error) {\n console.error(\"[sessions] Failed to read sessions index:\", error);\n return [];\n }\n}\nfunction readCwdFromProjectDir(projectDir, sessions) {\n for (const session of sessions) {\n try {\n const filePath = path.join(projectDir, `${session.id}.jsonl`);\n if (!fs.existsSync(filePath)) {\n continue;\n }\n const fd = fs.openSync(filePath, \"r\");\n let firstChunk;\n try {\n const buf = Buffer.alloc(4096);\n const bytesRead = fs.readSync(fd, buf, 0, 4096, 0);\n firstChunk = buf.toString(\"utf-8\", 0, bytesRead);\n } finally {\n fs.closeSync(fd);\n }\n const firstLine = firstChunk.split(\"\\n\")[0];\n if (!firstLine.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(firstLine);\n if (typeof entry.cwd === \"string\" && entry.cwd) {\n return entry.cwd;\n }\n } catch {\n }\n } catch {\n }\n }\n return \"\";\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst OPENCODE_DB_PATH = resolveOpenCodeDbPath();\nfunction getOpenCodeConversation(sessionId, offset = 0, limit = 200) {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const messages = db.prepare(\n `\n SELECT id, session_id, time_created, data FROM (\n SELECT id, session_id, time_created, data\n FROM message\n WHERE session_id = ?\n ORDER BY time_created DESC\n LIMIT ? OFFSET ?\n ) ORDER BY time_created ASC\n `\n ).all(sessionId, limit, offset);\n const messageIds = messages.map((m) => m.id);\n if (messageIds.length === 0) {\n return [];\n }\n const placeholders = messageIds.map(() => \"?\").join(\",\");\n const parts = db.prepare(\n `\n SELECT id, message_id, time_created, data\n FROM part\n WHERE message_id IN (${placeholders})\n ORDER BY time_created ASC\n `\n ).all(...messageIds);\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of parts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const result = [];\n for (const msg of messages) {\n let msgData = {};\n try {\n msgData = JSON.parse(msg.data);\n } catch {\n }\n const role = msgData.role === \"user\" ? \"user\" : \"assistant\";\n const msgParts = partsByMessage.get(msg.id) || [];\n const convertedParts = [];\n for (const part of msgParts) {\n let partData = {};\n try {\n partData = JSON.parse(part.data);\n } catch {\n continue;\n }\n const converted = convertOpenCodePart(partData);\n if (converted) {\n convertedParts.push(converted);\n }\n }\n if (convertedParts.length > 0) {\n result.push({\n id: msg.id,\n parts: convertedParts,\n role,\n timestamp: new Date(msg.time_created).toISOString()\n });\n }\n }\n return result;\n } catch (error) {\n console.error(\"[opencode] Failed to read conversation:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction listOpenCodeProjects() {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const sessions = db.prepare(\n `\n SELECT id, directory, title, slug, time_created, time_updated, parent_id\n FROM session\n WHERE time_archived IS NULL OR time_archived = 0\n ORDER BY time_updated DESC\n `\n ).all();\n const msgCounts = db.prepare(`SELECT session_id, COUNT(*) as count FROM message GROUP BY session_id`).all();\n const msgCountMap = new Map(msgCounts.map((r) => [r.session_id, r.count]));\n const projectMap = /* @__PURE__ */ new Map();\n for (const row of sessions) {\n const dir = row.directory || \"unknown\";\n if (!projectMap.has(dir)) {\n projectMap.set(dir, []);\n }\n const sessionInfo = {\n created: new Date(row.time_created).toISOString(),\n gitBranch: \"\",\n id: row.id,\n messageCount: msgCountMap.get(row.id) || 0,\n modified: new Date(row.time_updated).toISOString(),\n projectPath: dir,\n source: \"opencode\",\n summary: \"\",\n title: row.title || row.slug || \"Untitled Session\"\n };\n const bucket = projectMap.get(dir);\n if (bucket) {\n bucket.push(sessionInfo);\n }\n }\n const projects = [];\n for (const [dir, dirSessions] of projectMap) {\n const pathSegments = dir.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n dirSessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n projects.push({\n fullPath: dir,\n id: shortHash(dir),\n lastModified: dirSessions[0]?.modified || \"\",\n name: `${projectName} (OpenCode)`,\n sessionCount: dirSessions.length,\n sessions: dirSessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n } catch (error) {\n console.error(\"[opencode] Failed to read sessions:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction convertOpenCodePart(data) {\n const type = data.type;\n switch (type) {\n case \"reasoning\":\n return {\n content: data.text || \"\",\n type: \"thinking\"\n };\n case \"text\":\n return {\n content: data.text || \"\",\n type: \"text\"\n };\n case \"tool\": {\n const state = data.state;\n return {\n id: data.callID || data.id || \"\",\n input: state?.input || {},\n toolName: data.tool || \"Unknown\",\n type: \"tool_use\"\n };\n }\n default:\n return null;\n }\n}\nfunction getDb() {\n if (!fs.existsSync(OPENCODE_DB_PATH)) {\n return null;\n }\n try {\n return new Database(OPENCODE_DB_PATH, { readonly: true });\n } catch {\n return null;\n }\n}\nlet cachedProjects = null;\nlet cacheTimestamp = 0;\nconst CACHE_TTL_MS = 5e3;\nfunction getMergedProjects() {\n const now = Date.now();\n if (cachedProjects && now - cacheTimestamp < CACHE_TTL_MS) {\n return cachedProjects;\n }\n const claudeProjects = listProjectsWithSessions();\n const openCodeProjects = listOpenCodeProjects();\n const projectsByPath = /* @__PURE__ */ new Map();\n for (const p of claudeProjects) {\n projectsByPath.set(p.fullPath, { ...p });\n }\n for (const op of openCodeProjects) {\n const existing = projectsByPath.get(op.fullPath);\n if (existing) {\n existing.sessions.push(...op.sessions);\n existing.sessions.sort(\n (a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime()\n );\n existing.sessionCount = existing.sessions.length;\n existing.lastModified = existing.sessions[0]?.modified || existing.lastModified;\n existing.name = existing.name.replace(\" (OpenCode)\", \"\");\n } else {\n op.name = op.name.replace(\" (OpenCode)\", \"\");\n projectsByPath.set(op.fullPath, { ...op });\n }\n }\n cachedProjects = [...projectsByPath.values()].sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n cacheTimestamp = now;\n return cachedProjects;\n}\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n if (url.searchParams.get(\"refresh\") === \"true\") {\n cachedProjects = null;\n cacheTimestamp = 0;\n }\n const sessionId = url.searchParams.get(\"id\");\n if (sessionId) {\n const projectId = url.searchParams.get(\"project\") || \"\";\n const rawOffset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const rawLimit = parseInt(url.searchParams.get(\"limit\") || \"200\");\n const offset2 = Number.isFinite(rawOffset) && rawOffset >= 0 ? rawOffset : 0;\n const limit2 = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, 500) : 200;\n const allProjects2 = getMergedProjects();\n const matchedProject = projectId ? allProjects2.find((p) => p.id === projectId) : void 0;\n const claudeProjectDir = matchedProject ? matchedProject.fullPath.replace(/\\//g, \"-\") : void 0;\n let messages = getSessionConversation(sessionId, offset2, limit2, claudeProjectDir);\n if (messages.length === 0) {\n messages = getOpenCodeConversation(sessionId, offset2, limit2);\n }\n let sessionInfo = null;\n for (const project of allProjects2) {\n if (projectId && project.id !== projectId) {\n continue;\n }\n const found = project.sessions.find((s) => s.id === sessionId);\n if (found) {\n sessionInfo = found;\n break;\n }\n }\n if (!sessionInfo) {\n return json({ error: \"Session not found\" }, { status: 404 });\n }\n return json({\n messages,\n session: sessionInfo,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const allProjects = getMergedProjects();\n const limit = parseInt(url.searchParams.get(\"limit\") || \"0\");\n const offset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const total = allProjects.length;\n const paginatedProjects = limit > 0 ? allProjects.slice(offset, offset + limit) : allProjects;\n return json({\n count: allProjects.reduce((sum, p) => sum + p.sessionCount, 0),\n projects: paginatedProjects,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n total\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":"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"}
|