@juspay/shooter 1.12.0 → 1.13.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.
Files changed (96) hide show
  1. package/.claude/hooks/notifier.cjs +199 -81
  2. package/build/client/_app/immutable/chunks/BX6TUKUr.js +3 -0
  3. package/build/client/_app/immutable/chunks/BX6TUKUr.js.br +0 -0
  4. package/build/client/_app/immutable/chunks/BX6TUKUr.js.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{DfsJh23H.js → C8fuqb5_.js} +1 -1
  6. package/build/client/_app/immutable/chunks/C8fuqb5_.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/C8fuqb5_.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{DTGtOxE1.js → DXE_ttSN.js} +1 -1
  9. package/build/client/_app/immutable/chunks/DXE_ttSN.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/DXE_ttSN.js.gz +0 -0
  11. package/build/client/_app/immutable/entry/{app.B-sEFuLK.js → app.nFNxeHLO.js} +2 -2
  12. package/build/client/_app/immutable/entry/app.nFNxeHLO.js.br +0 -0
  13. package/build/client/_app/immutable/entry/app.nFNxeHLO.js.gz +0 -0
  14. package/build/client/_app/immutable/entry/start.Ja5Vj3Hy.js +1 -0
  15. package/build/client/_app/immutable/entry/start.Ja5Vj3Hy.js.br +2 -0
  16. package/build/client/_app/immutable/entry/start.Ja5Vj3Hy.js.gz +0 -0
  17. package/build/client/_app/immutable/nodes/{0.-0SstbRm.js → 0.DPygfoxx.js} +1 -1
  18. package/build/client/_app/immutable/nodes/0.DPygfoxx.js.br +0 -0
  19. package/build/client/_app/immutable/nodes/0.DPygfoxx.js.gz +0 -0
  20. package/build/client/_app/immutable/nodes/{1.BVLzPogE.js → 1.CMzJ-vKL.js} +1 -1
  21. package/build/client/_app/immutable/nodes/1.CMzJ-vKL.js.br +0 -0
  22. package/build/client/_app/immutable/nodes/1.CMzJ-vKL.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/{2.CiUyTQg5.js → 2.Vq2hU4jC.js} +1 -1
  24. package/build/client/_app/immutable/nodes/2.Vq2hU4jC.js.br +0 -0
  25. package/build/client/_app/immutable/nodes/2.Vq2hU4jC.js.gz +0 -0
  26. package/build/client/_app/immutable/nodes/{3.C9vlOBU0.js → 3.C9533L9p.js} +1 -1
  27. package/build/client/_app/immutable/nodes/3.C9533L9p.js.br +0 -0
  28. package/build/client/_app/immutable/nodes/3.C9533L9p.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/{6.BSsUBbIT.js → 6.BJ2KZBR0.js} +1 -1
  30. package/build/client/_app/immutable/nodes/6.BJ2KZBR0.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/6.BJ2KZBR0.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/{7.BIQq9Yuz.js → 7.BW3qRNSj.js} +1 -1
  33. package/build/client/_app/immutable/nodes/7.BW3qRNSj.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/7.BW3qRNSj.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{8.BU_sJ5_M.js → 8.BBF3ti4G.js} +1 -1
  36. package/build/client/_app/immutable/nodes/8.BBF3ti4G.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/8.BBF3ti4G.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{9.C1vJI771.js → 9.LI1n0A_s.js} +1 -1
  39. package/build/client/_app/immutable/nodes/9.LI1n0A_s.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/9.LI1n0A_s.js.gz +0 -0
  41. package/build/client/_app/version.json +1 -1
  42. package/build/client/_app/version.json.br +0 -0
  43. package/build/client/_app/version.json.gz +0 -0
  44. package/build/server/chunks/{0-DgzcVTc0.js → 0-C5VG6nCZ.js} +2 -2
  45. package/build/server/chunks/{0-DgzcVTc0.js.map → 0-C5VG6nCZ.js.map} +1 -1
  46. package/build/server/chunks/{1-iMvE8O_M.js → 1-CxT3oFDd.js} +2 -2
  47. package/build/server/chunks/{1-iMvE8O_M.js.map → 1-CxT3oFDd.js.map} +1 -1
  48. package/build/server/chunks/{2-BJrmwHii.js → 2-D-hS2r7O.js} +2 -2
  49. package/build/server/chunks/{2-BJrmwHii.js.map → 2-D-hS2r7O.js.map} +1 -1
  50. package/build/server/chunks/{3-Ds3b4DfT.js → 3-qAPXfbJm.js} +2 -2
  51. package/build/server/chunks/{3-Ds3b4DfT.js.map → 3-qAPXfbJm.js.map} +1 -1
  52. package/build/server/chunks/{6-DEbZkQEO.js → 6-Vj-4wida.js} +2 -2
  53. package/build/server/chunks/{6-DEbZkQEO.js.map → 6-Vj-4wida.js.map} +1 -1
  54. package/build/server/chunks/{7-BrQeR-CO.js → 7-BYfx84Bj.js} +2 -2
  55. package/build/server/chunks/{7-BrQeR-CO.js.map → 7-BYfx84Bj.js.map} +1 -1
  56. package/build/server/chunks/{8-e5TDwEpx.js → 8-CN6v3xbl.js} +2 -2
  57. package/build/server/chunks/{8-e5TDwEpx.js.map → 8-CN6v3xbl.js.map} +1 -1
  58. package/build/server/chunks/{9-1iqRqatJ.js → 9-BcAY9pkm.js} +2 -2
  59. package/build/server/chunks/{9-1iqRqatJ.js.map → 9-BcAY9pkm.js.map} +1 -1
  60. package/build/server/chunks/{_server.ts-C-W5J15L.js → _server.ts-CFX-S_8q.js} +20 -2
  61. package/build/server/chunks/_server.ts-CFX-S_8q.js.map +1 -0
  62. package/build/server/index.js +1 -1
  63. package/build/server/index.js.map +1 -1
  64. package/build/server/manifest.js +10 -10
  65. package/build/server/manifest.js.map +1 -1
  66. package/package.json +2 -2
  67. package/src/routes/api/notify/+server.ts +43 -2
  68. package/build/client/_app/immutable/chunks/DTGtOxE1.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/DTGtOxE1.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/DfsJh23H.js.br +0 -0
  71. package/build/client/_app/immutable/chunks/DfsJh23H.js.gz +0 -0
  72. package/build/client/_app/immutable/chunks/DlSs5Yra.js +0 -3
  73. package/build/client/_app/immutable/chunks/DlSs5Yra.js.br +0 -0
  74. package/build/client/_app/immutable/chunks/DlSs5Yra.js.gz +0 -0
  75. package/build/client/_app/immutable/entry/app.B-sEFuLK.js.br +0 -0
  76. package/build/client/_app/immutable/entry/app.B-sEFuLK.js.gz +0 -0
  77. package/build/client/_app/immutable/entry/start.A2buqyYO.js +0 -1
  78. package/build/client/_app/immutable/entry/start.A2buqyYO.js.br +0 -2
  79. package/build/client/_app/immutable/entry/start.A2buqyYO.js.gz +0 -0
  80. package/build/client/_app/immutable/nodes/0.-0SstbRm.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/0.-0SstbRm.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/1.BVLzPogE.js.br +0 -0
  83. package/build/client/_app/immutable/nodes/1.BVLzPogE.js.gz +0 -0
  84. package/build/client/_app/immutable/nodes/2.CiUyTQg5.js.br +0 -0
  85. package/build/client/_app/immutable/nodes/2.CiUyTQg5.js.gz +0 -0
  86. package/build/client/_app/immutable/nodes/3.C9vlOBU0.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/3.C9vlOBU0.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/6.BSsUBbIT.js.br +0 -0
  89. package/build/client/_app/immutable/nodes/6.BSsUBbIT.js.gz +0 -0
  90. package/build/client/_app/immutable/nodes/7.BIQq9Yuz.js.br +0 -0
  91. package/build/client/_app/immutable/nodes/7.BIQq9Yuz.js.gz +0 -0
  92. package/build/client/_app/immutable/nodes/8.BU_sJ5_M.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/8.BU_sJ5_M.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/9.C1vJI771.js.br +0 -0
  95. package/build/client/_app/immutable/nodes/9.C1vJI771.js.gz +0 -0
  96. package/build/server/chunks/_server.ts-C-W5J15L.js.map +0 -1
@@ -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.A2buqyYO.js",app:"_app/immutable/entry/app.B-sEFuLK.js",imports:["_app/immutable/entry/start.A2buqyYO.js","_app/immutable/chunks/DlSs5Yra.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/entry/app.B-sEFuLK.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/chunks/Cg3dlX05.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.Ja5Vj3Hy.js",app:"_app/immutable/entry/app.nFNxeHLO.js",imports:["_app/immutable/entry/start.Ja5Vj3Hy.js","_app/immutable/chunks/BX6TUKUr.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/entry/app.nFNxeHLO.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/DYuMZGL5.js","_app/immutable/chunks/Cg3dlX05.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
- __memo(() => import('./chunks/0-DgzcVTc0.js')),
16
- __memo(() => import('./chunks/1-iMvE8O_M.js')),
17
- __memo(() => import('./chunks/2-BJrmwHii.js')),
18
- __memo(() => import('./chunks/3-Ds3b4DfT.js')),
15
+ __memo(() => import('./chunks/0-C5VG6nCZ.js')),
16
+ __memo(() => import('./chunks/1-CxT3oFDd.js')),
17
+ __memo(() => import('./chunks/2-D-hS2r7O.js')),
18
+ __memo(() => import('./chunks/3-qAPXfbJm.js')),
19
19
  __memo(() => import('./chunks/4-BtYdKCVW.js')),
20
20
  __memo(() => import('./chunks/5-CvJK3PiH.js')),
21
- __memo(() => import('./chunks/6-DEbZkQEO.js')),
22
- __memo(() => import('./chunks/7-BrQeR-CO.js')),
23
- __memo(() => import('./chunks/8-e5TDwEpx.js')),
24
- __memo(() => import('./chunks/9-1iqRqatJ.js'))
21
+ __memo(() => import('./chunks/6-Vj-4wida.js')),
22
+ __memo(() => import('./chunks/7-BYfx84Bj.js')),
23
+ __memo(() => import('./chunks/8-CN6v3xbl.js')),
24
+ __memo(() => import('./chunks/9-BcAY9pkm.js'))
25
25
  ],
26
26
  remotes: {
27
27
 
@@ -81,7 +81,7 @@ return {
81
81
  pattern: /^\/api\/notify\/?$/,
82
82
  params: [],
83
83
  page: null,
84
- endpoint: __memo(() => import('./chunks/_server.ts-C-W5J15L.js'))
84
+ endpoint: __memo(() => import('./chunks/_server.ts-CFX-S_8q.js'))
85
85
  },
86
86
  {
87
87
  id: "/api/qr-config",
@@ -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.A2buqyYO.js\",app:\"_app/immutable/entry/app.B-sEFuLK.js\",imports:[\"_app/immutable/entry/start.A2buqyYO.js\",\"_app/immutable/chunks/DlSs5Yra.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/entry/app.B-sEFuLK.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/chunks/Cg3dlX05.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/decide/[requestId]\",\n\t\t\t\tpattern: /^\\/api\\/decide\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"requestId\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/decide/_requestId_/_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.Ja5Vj3Hy.js\",app:\"_app/immutable/entry/app.nFNxeHLO.js\",imports:[\"_app/immutable/entry/start.Ja5Vj3Hy.js\",\"_app/immutable/chunks/BX6TUKUr.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/entry/app.nFNxeHLO.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/DYuMZGL5.js\",\"_app/immutable/chunks/Cg3dlX05.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/decide/[requestId]\",\n\t\t\t\tpattern: /^\\/api\\/decide\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"requestId\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/decide/_requestId_/_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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juspay/shooter",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "Bidirectional communication server for Claude Code and iOS — push notifications, remote terminal, session viewing",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.28.2",
@@ -76,7 +76,7 @@
76
76
  "format:generated": "prettier --write ./src/lib/types/generated/*",
77
77
  "quality:all": "pnpm run lint && pnpm run format:check && pnpm run check",
78
78
  "gen:types": "npx type-crafter generate typescript-with-decoders ./specs/types/index.yaml ./src/lib/types/generated SingleFile SingleFile && bash scripts/postgen-types.sh && pnpm run format:generated",
79
- "test": "node tests/terminal-store.test.cjs && node tests/pending-requests.test.cjs && node tests/tunnel-discovery.test.cjs",
79
+ "test": "node tests/terminal-store.test.cjs && node tests/pending-requests.test.cjs && node tests/tunnel-discovery.test.cjs && node tests/plan-mode-routing.test.cjs",
80
80
  "setup": "node scripts/setup.cjs",
81
81
  "prepare": "husky || true",
82
82
  "prepublishOnly": "pnpm build"
@@ -1,4 +1,4 @@
1
- import type { NotificationData } from '$lib/types';
1
+ import type { NotificationData, OptionChoice, ResponseKind } from '$lib/types';
2
2
 
3
3
  import { env } from '$env/dynamic/private';
4
4
  import { LibraryAPNsService } from '$lib/modules/server/apn/library-apns';
@@ -266,6 +266,11 @@ function recordNotification(title: string, message: string, data?: NotificationD
266
266
  notificationCache.set(key, Date.now());
267
267
  }
268
268
 
269
+ // TODO(refactor): extract body parsing, filtering, and platform routing into
270
+ // helpers. This handler grew past the 300-line guideline organically; PR-2
271
+ // adds 4 lines for dynamic-options fields. A dedicated cleanup PR is the
272
+ // right place to split it, not a feature PR.
273
+ // eslint-disable-next-line max-lines-per-function
269
274
  export const POST: RequestHandler = async ({ request }) => {
270
275
  try {
271
276
  // Use singleton APNs client to reuse HTTP/2 connection
@@ -297,6 +302,29 @@ export const POST: RequestHandler = async ({ request }) => {
297
302
  const waitForResponse =
298
303
  typeof body.waitForResponse === 'boolean' ? body.waitForResponse : false;
299
304
 
305
+ // Dynamic-options fields (PR-2/PR-3). When the caller wants to drive
306
+ // a richer notification category — plan-mode approval, MCP
307
+ // elicitation, AskUserQuestion choices — these arrive in the top
308
+ // level of the body so they can be persisted in pending_requests
309
+ // and surfaced to the iOS Decide screen via /api/decide/[id].
310
+ //
311
+ // Backward-compat: when these are omitted, the existing CLAUDE_
312
+ // PERMISSION binary flow is unchanged.
313
+ const notificationCategory =
314
+ typeof body.notificationCategory === 'string' && body.notificationCategory.length > 0
315
+ ? body.notificationCategory
316
+ : undefined;
317
+ const question = typeof body.question === 'string' ? body.question : undefined;
318
+ const options =
319
+ Array.isArray(body.options) && body.options.every((o) => o && typeof o === 'object')
320
+ ? (body.options as OptionChoice[])
321
+ : undefined;
322
+ const responseKindRaw = body.responseKind;
323
+ const responseKind: ResponseKind | undefined =
324
+ responseKindRaw === 'hook' || responseKindRaw === 'pty' || responseKindRaw === 'info'
325
+ ? responseKindRaw
326
+ : undefined;
327
+
300
328
  // Broadcast to /ws/events for real-time activity feed
301
329
  try {
302
330
  broadcastHookEvent(body);
@@ -350,6 +378,9 @@ export const POST: RequestHandler = async ({ request }) => {
350
378
  if (skipPush) {
351
379
  if (waitForResponse) {
352
380
  createPendingRequest(canonicalRequestId, {
381
+ options,
382
+ question: question ?? null,
383
+ responseKind: responseKind ?? 'hook',
353
384
  sessionId: (data?.sessionId as string) || '',
354
385
  toolInput: (data?.toolInput as Record<string, unknown>) || {},
355
386
  toolName: (data?.toolName as string) || '',
@@ -370,7 +401,11 @@ export const POST: RequestHandler = async ({ request }) => {
370
401
  const payload = {
371
402
  badge: 1,
372
403
  body: message,
373
- category: waitForResponse ? 'CLAUDE_PERMISSION' : undefined,
404
+ // notificationCategory wins when explicitly set so plan-mode /
405
+ // elicitation flows can pick CLAUDE_PLAN_APPROVAL / CHOICE_2..4.
406
+ // Falls back to CLAUDE_PERMISSION for the legacy bidirectional
407
+ // permission flow when only waitForResponse is provided.
408
+ category: notificationCategory ?? (waitForResponse ? 'CLAUDE_PERMISSION' : undefined),
374
409
  data: {
375
410
  ...data,
376
411
  requestId: canonicalRequestId,
@@ -429,6 +464,9 @@ export const POST: RequestHandler = async ({ request }) => {
429
464
 
430
465
  if (waitForResponse) {
431
466
  createPendingRequest(canonicalRequestId, {
467
+ options,
468
+ question: question ?? null,
469
+ responseKind: responseKind ?? 'hook',
432
470
  sessionId: (data?.sessionId as string) || '',
433
471
  toolInput: (data?.toolInput as Record<string, unknown>) || {},
434
472
  toolName: (data?.toolName as string) || '',
@@ -505,6 +543,9 @@ export const POST: RequestHandler = async ({ request }) => {
505
543
  // only after confirming APNs delivery succeeded
506
544
  if (waitForResponse) {
507
545
  createPendingRequest(canonicalRequestId, {
546
+ options,
547
+ question: question ?? null,
548
+ responseKind: responseKind ?? 'hook',
508
549
  sessionId: (data?.sessionId as string) || '',
509
550
  toolInput: (data?.toolInput as Record<string, unknown>) || {},
510
551
  toolName: (data?.toolName as string) || '',
@@ -1,3 +0,0 @@
1
- import{bv as Te,v as Ve,s as P,g as j,b as N,P as oe,bw as At}from"./DYuMZGL5.js";class pe{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Le{constructor(t,n){this.status=t,this.location=n}}class Pe extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Et(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function kt(e){return e.split("%25").map(decodeURI).join("%25")}function Rt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ye({href:e}){return e.split("#")[0]}function St(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const It=new TextDecoder;function Ut(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const Tt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&X.delete(je(e)),Tt(e,t));const X=new Map;function Lt(e,t){const n=je(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&X.set(n,{body:a,init:s,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Ut(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function Pt(e,t,n){if(X.size>0){const r=je(e,n),a=X.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);X.delete(r)}}return window.fetch(t,n)}function je(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${St(...a)}"]`}return r}const jt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Nt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${xt(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((i,l)=>{if(l%2){if(i.startsWith("x+"))return ve(String.fromCharCode(parseInt(i.slice(2),16)));if(i.startsWith("u+"))return ve(String.fromCharCode(...i.slice(2).split("-").map(g=>parseInt(g,16))));const u=jt.exec(i),[,d,p,h,f]=u;return t.push({name:h,matcher:f,optional:!!d,rest:!!p,chained:p?l===1&&o[0]==="":!1}),p?"([^]*?)":d?"([^/]*)?":"([^/]+?)"}return ve(i)}).join("")}).join("")}/?$`),params:t}}function Ot(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function xt(e){return e.slice(1).split("/").filter(Ot)}function Ct(e,t,n){const r={},a=e.slice(1),s=a.filter(c=>c!==void 0);let o=0;for(let c=0;c<t.length;c+=1){const i=t[c];let l=a[c-o];if(i.chained&&i.rest&&o&&(l=a.slice(c-o,c+1).filter(u=>u).join("/"),o=0),l===void 0)if(i.rest)l="";else continue;if(!i.matcher||n[i.matcher](l)){r[i.name]=l;const u=t[c+1],d=a[c+1];u&&!u.rest&&u.optional&&d&&i.chained&&(o=0),!u&&!d&&Object.keys(r).length===s.length&&(o=0);continue}if(i.optional&&i.chained){o++;continue}return}if(!o)return r}function ve(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Dt({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([c,[i,l,u]])=>{const{pattern:d,params:p}=Nt(c),h={id:c,exec:f=>{const g=d.exec(f);if(g)return Ct(g,p,r)},errors:[1,...u||[]].map(f=>e[f]),layouts:[0,...l||[]].map(o),leaf:s(i)};return h.errors.length=h.layouts.length=Math.max(h.errors.length,h.layouts.length),h});function s(c){const i=c<0;return i&&(c=~c),[i,e[c]]}function o(c){return c===void 0?c:[a.has(c),e[c]]}}function Qe(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function qe(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const U=globalThis.__sveltekit_zm37h?.base??"",$t=globalThis.__sveltekit_zm37h?.assets??U??"",Bt="1779659099192",et="sveltekit:snapshot",tt="sveltekit:scroll",nt="sveltekit:states",Ft="sveltekit:pageurl",q="sveltekit:history",Q="sveltekit:navigation",B={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},re=location.origin;function Ne(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function M(){return{x:pageXOffset,y:pageYOffset}}function V(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ye={...B,"":B.hover};function rt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function at(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=rt(e)}}function Ee(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const c=location.hash.split("#")[1]||"/";r.hash=`#${c}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||_e(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=r?.origin===re&&e.hasAttribute("download");return{url:r,external:s,target:a,download:o}}function se(e){let t=null,n=null,r=null,a=null,s=null,o=null,c=e;for(;c&&c!==document.documentElement;)r===null&&(r=V(c,"preload-code")),a===null&&(a=V(c,"preload-data")),t===null&&(t=V(c,"keepfocus")),n===null&&(n=V(c,"noscroll")),s===null&&(s=V(c,"reload")),o===null&&(o=V(c,"replacestate")),c=rt(c);function i(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ye[r??"off"],preload_data:Ye[a??"off"],keepfocus:i(t),noscroll:i(n),reload:i(s),replace_state:i(o)}}function ze(e){const t=Te(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function s(o){let c;return t.subscribe(i=>{(c===void 0||n&&i!==c)&&o(c=i)})}return{notify:r,set:a,subscribe:s}}const ot={v:()=>{}};function Mt(){const{set:e,subscribe:t}=Te(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${$t}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==Bt;return o&&(e(!0),ot.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function _e(e,t,n){return e.origin!==re||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function jn(e){}const Vt=-1,qt=-2,Yt=-3,zt=-4,Gt=-5,Kt=-6,Wt=-7,st=2**32-1,ke=st-1;function Ht(e){return!(!Number.isInteger(e)||e<0||e>ke)}function Xt(e){return!(!Number.isInteger(e)||e<0||e>st)}function Jt(e){return Uint8Array.fromBase64(e).buffer}function Zt(e){return Uint8Array.from(Buffer.from(e,"base64")).buffer}function Qt(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let a=0;a<n;a++)r[a]=t.charCodeAt(a);return r.buffer}const en=typeof Uint8Array.fromBase64=="function",tn=typeof process=="object"&&process.versions?.node!==void 0,nn=en?Jt:tn?Zt:Qt;function rn(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);let a=null;function s(o,c=!1){if(o===Vt)return;if(o===Yt)return NaN;if(o===zt)return 1/0;if(o===Gt)return-1/0;if(o===Kt)return-0;if(c||typeof o!="number")throw new Error("Invalid input");if(o in r)return r[o];const i=n[o];if(!i||typeof i!="object")r[o]=i;else if(Array.isArray(i))if(typeof i[0]=="string"){const l=i[0],u=t&&Object.hasOwn(t,l)?t[l]:void 0;if(u){let d=i[1];if(typeof d!="number"&&(d=n.push(i[1])-1),a??=new Set,a.has(d))throw new Error("Invalid circular reference");return a.add(d),r[o]=u(s(d)),a.delete(d),r[o]}switch(l){case"Date":r[o]=new Date(i[1]);break;case"Set":const d=new Set;r[o]=d;for(let f=1;f<i.length;f+=1)d.add(s(i[f]));break;case"Map":const p=new Map;r[o]=p;for(let f=1;f<i.length;f+=2)p.set(s(i[f]),s(i[f+1]));break;case"RegExp":r[o]=new RegExp(i[1],i[2]);break;case"Object":{const f=i[1];if(typeof n[f]=="object"&&n[f][0]!=="BigInt")throw new Error("Invalid input");r[o]=Object(s(f));break}case"BigInt":r[o]=BigInt(i[1]);break;case"null":const h=Object.create(null);r[o]=h;for(let f=1;f<i.length;f+=2){if(i[f]==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");h[i[f]]=s(i[f+1])}break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Float16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":case"DataView":{if(n[i[1]][0]!=="ArrayBuffer")throw new Error("Invalid data");const f=globalThis[l],g=s(i[1]);r[o]=i[2]!==void 0?new f(g,i[2],i[3]):new f(g);break}case"ArrayBuffer":{const f=i[1];if(typeof f!="string")throw new Error("Invalid ArrayBuffer encoding");const g=nn(f);r[o]=g;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":{const f=l.slice(9);r[o]=Temporal[f].from(i[1]);break}case"URL":{const f=new URL(i[1]);r[o]=f;break}case"URLSearchParams":{const f=new URLSearchParams(i[1]);r[o]=f;break}default:throw new Error(`Unknown type ${l}`)}}else if(i[0]===Wt){const l=i[1];if(!Xt(l))throw new Error("Invalid input");const u=[];r[o]=u,u[ke]=void 0,delete u[ke];for(let d=2;d<i.length;d+=2){const p=i[d];if(!Ht(p)||p>=l)throw new Error("Invalid input");u[p]=s(i[d+1])}u.length=l}else{const l=new Array(i.length);r[o]=l;for(let u=0;u<i.length;u+=1){const d=i[u];d!==qt&&(l[u]=s(d))}}else{const l={};r[o]=l;for(const u of Object.keys(i)){if(u==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");const d=i[u];l[u]=s(d)}}return r[o]}return s(0)}const it=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...it];const an=new Set([...it]);[...an];function on(e){return e.filter(t=>t!=null)}const sn="x-sveltekit-invalidated",cn="x-sveltekit-trailing-slash";function ie(e){return e instanceof pe||e instanceof Pe?e.status:500}function ln(e){return e instanceof Pe?e.text:"Internal Error"}let S,ee,be;const fn=Ve.toString().includes("$$")||/function \w+\(\) \{\}/.test(Ve.toString()),Ge="a:";fn?(S={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ge)},ee={current:null},be={current:!1}):(S=new class{#e=P({});get data(){return j(this.#e)}set data(t){N(this.#e,t)}#t=P(null);get form(){return j(this.#t)}set form(t){N(this.#t,t)}#n=P(null);get error(){return j(this.#n)}set error(t){N(this.#n,t)}#r=P({});get params(){return j(this.#r)}set params(t){N(this.#r,t)}#a=P({id:null});get route(){return j(this.#a)}set route(t){N(this.#a,t)}#o=P({});get state(){return j(this.#o)}set state(t){N(this.#o,t)}#s=P(-1);get status(){return j(this.#s)}set status(t){N(this.#s,t)}#i=P(new URL(Ge));get url(){return j(this.#i)}set url(t){N(this.#i,t)}},ee=new class{#e=P(null);get current(){return j(this.#e)}set current(t){N(this.#e,t)}},be=new class{#e=P(!1);get current(){return j(this.#e)}set current(t){N(this.#e,t)}},ot.v=()=>be.current=!0);function un(e){Object.assign(S,e)}const dn="/__data.json",hn=".html__data.json";function pn(e){return e.endsWith(".html")?e.replace(/\.html$/,hn):e.replace(/\/$/,"")+dn}const _n=new Set(["icon","shortcut icon","apple-touch-icon"]);let W=null;const D=Qe(tt)??{},te=Qe(et)??{},C={url:ze({}),page:ze({}),navigating:Te(null),updated:Mt()};function Oe(e){D[e]=M()}function gn(e,t){let n=e+1;for(;D[n];)delete D[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function G(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function ct(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}function Ke(){}let xe,Re,ce,x,Se,A;const le=[],fe=[];let L=null;function Ie(){L?.fork?.then(e=>e?.discard()),L=null}const ae=new Map,lt=new Set,mn=new Set,J=new Set;let w={branch:[],error:null,url:null},Ce=!1,ue=!1,We=!0,ne=!1,H=!1,ft=!1,De=!1,ut,R,I,F;const Z=new Set,He=new Map;async function Cn(e,t,n){globalThis.__sveltekit_zm37h?.data&&globalThis.__sveltekit_zm37h.data,document.URL!==location.href&&(location.href=location.href),A=e,await e.hooks.init?.(),xe=Dt(e),x=document.documentElement,Se=t,Re=e.nodes[0],ce=e.nodes[1],Re(),ce(),R=history.state?.[q],I=history.state?.[Q],R||(R=I=Date.now(),history.replaceState({...history.state,[q]:R,[Q]:I},""));const r=D[R];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await Un(Se,n)):(await Y({type:"enter",url:Ne(A.hash?Ln(new URL(location.href)):location.href),replace_state:!0}),a()),In()}function wn(){le.length=0,De=!1}function dt(e){fe.some(t=>t?.snapshot)&&(te[e]=fe.map(t=>t?.snapshot?.capture()))}function ht(e){te[e]?.forEach((t,n)=>{fe[n]?.snapshot?.restore(t)})}function Xe(){Oe(R),qe(tt,D),dt(I),qe(et,te)}async function pt(e,t,n,r){let a;t.invalidateAll&&Ie(),await Y({type:"goto",url:Ne(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(De=!0,a=[...He.keys()]),t.invalidate&&t.invalidate.forEach(Sn)}}),t.invalidateAll&&oe().then(oe).then(()=>{He.forEach(({resource:s},o)=>{a?.includes(o)&&s.refresh?.()})})}async function yn(e){if(e.id!==L?.id){Ie();const t={};Z.add(t),L={id:e.id,token:t,promise:gt({...e,preload:t}).then(n=>(Z.delete(t),n.type==="loaded"&&n.state.error&&Ie(),n)),fork:null}}return L.promise}async function Ae(e){const t=(await me(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function _t(e,t,n){const r={params:w.params,route:{id:w.route?.id??null},url:new URL(location.href)};w={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(S,e.props.page),ut=new A.root({target:t,props:{...e.props,stores:C,components:fe},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ht(I),n){const s={from:null,to:{...r,scroll:D[R]??M()},willUnload:!1,type:"enter",complete:Promise.resolve()};J.forEach(o=>o(s))}ue=!0}async function de({url:e,params:t,branch:n,errors:r,status:a,error:s,route:o,form:c}){let i="never";if(U&&(e.pathname===U||e.pathname===U+"/"))i="always";else for(const f of n)f?.slash!==void 0&&(i=f.slash);e.pathname=Et(e.pathname,i),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:s,route:o},props:{constructors:on(n).map(f=>f.node.component),page:Me(S)}};c!==void 0&&(l.props.form=c);let u={},d=!S,p=0;for(let f=0;f<Math.max(n.length,w.branch.length);f+=1){const g=n[f],b=w.branch[f];g?.data!==b?.data&&(d=!0),g&&(u={...u,...g.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!w.url||e.href!==w.url.href||w.error!==s||c!==void 0&&c!==S.form||d)&&(l.props.page={error:s,params:t,route:{id:o?.id??null},state:{},status:a,url:new URL(e),form:c??null,data:d?u:S.data}),l}async function $e({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let o=null;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},i=await e();return{node:i,loader:e,server:s,universal:i.universal?.load?{type:"data",data:o,uses:c}:null,data:o??s?.data??null,slash:i.universal?.trailingSlash??s?.slash}}function vn(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=ue?Pt(r,a.href,t):Lt(r,t);return{resolved:a,promise:s}}function Je(e,t,n,r,a,s){if(De)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(s[o]!==w.params[o])return!0;for(const o of a.dependencies)if(le.some(c=>c(new URL(o))))return!0;return!1}function Be(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function bn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(o=>s.includes(o))&&s.every(o=>a.includes(o))&&n.delete(r)}return n}function Ze({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Me(S),constructors:[]}}}async function gt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(L?.id===e)return Z.delete(L.token),L.promise;const{errors:o,layouts:c,leaf:i}=a,l=[...c,i];o.forEach(m=>m?.().catch(()=>{})),l.forEach(m=>m?.[1]().catch(()=>{}));let u=null;const d=w.url?e!==he(w.url):!1,p=w.route?a.id!==w.route.id:!1,h=bn(w.url,n);let f=!1;{const m=l.map((y,E)=>{const k=w.branch[E],v=!!y?.[0]&&(k?.loader!==y[1]||Je(f,p,d,h,k.server?.uses,r));return v&&(f=!0),v});if(m.some(Boolean)){try{u=await yt(n,m)}catch(y){const E=await z(y,{url:n,params:r,route:{id:e}});return Z.has(s)?Ze({error:E,url:n,params:r,route:a}):ge({status:ie(y),error:E,url:n,route:a})}if(u.type==="redirect")return u}}const g=u?.nodes;let b=!1;const _=l.map(async(m,y)=>{if(!m)return;const E=w.branch[y],k=g?.[y];if((!k||k.type==="skip")&&m[1]===E?.loader&&!Je(b,p,d,h,E.universal?.uses,r))return E;if(b=!0,k?.type==="error")throw k;return $e({loader:m[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let $=0;$<y;$+=1)Object.assign(O,(await _[$])?.data);return O},server_data_node:Be(k===void 0&&m[0]?{type:"skip"}:k??null,m[0]?E?.server:void 0)})});for(const m of _)m.catch(()=>{});const T=[];for(let m=0;m<l.length;m+=1)if(l[m])try{T.push(await _[m])}catch(y){if(y instanceof Le)return{type:"redirect",location:y.location};if(Z.has(s))return Ze({error:await z(y,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let E=ie(y),k;if(g?.includes(y))E=y.status??E,k=y.error;else if(y instanceof pe)k=y.body;else{if(await C.updated.check())return await ct(),await G(n);k=await z(y,{params:r,url:n,route:{id:a.id}})}const v=await An(m,T,o);return v?de({url:n,params:r,branch:T.slice(0,v.idx).concat(v.node),errors:o,status:E,error:k,route:a}):await wt(n,{id:a.id},k,E)}else T.push(void 0);return de({url:n,params:r,branch:T,errors:o,status:200,error:null,route:a,form:t?void 0:null})}async function An(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function ge({status:e,error:t,url:n,route:r}){const a={};let s=null;if(A.server_loads[0]===0)try{const c=await yt(n,[!0]);if(c.type!=="data"||c.nodes[0]&&c.nodes[0].type!=="data")throw 0;s=c.nodes[0]??null}catch{(n.origin!==re||n.pathname!==location.pathname||Ce)&&await G(n)}try{const o=await $e({loader:Re,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Be(s)}),c={node:await ce(),loader:ce,universal:null,server:null,data:null};return de({url:n,params:a,branch:[o,c],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Le)return pt(new URL(o.location,location.href),{},0);throw o}}async function En(e){const t=e.href;if(ae.has(t))return ae.get(t);let n;try{const r=(async()=>{let a=await A.hooks.reroute({url:new URL(e),fetch:async(s,o)=>vn(s,o,e).promise})??e;if(typeof a=="string"){const s=new URL(e);A.hash?s.hash=a:s.pathname=a,a=s}return a})();ae.set(t,r),n=await r}catch{ae.delete(t);return}return n}async function me(e,t){if(e&&!_e(e,U,A.hash)){const n=await En(e);if(!n)return;const r=kn(n);for(const a of xe){const s=a.exec(r);if(s)return{id:he(e),invalidating:t,route:a,params:Rt(s),url:e}}}}function kn(e){return kt(A.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function he(e){return(A.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function mt({url:e,type:t,intent:n,delta:r,event:a,scroll:s}){let o=!1;const c=Fe(w,n,e,t,s??null);r!==void 0&&(c.navigation.delta=r),a!==void 0&&(c.navigation.event=a);const i={...c.navigation,cancel:()=>{o=!0,c.reject(new Error("navigation cancelled"))}};return ne||lt.forEach(l=>l(i)),o?null:c}async function Y({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o={},redirect_count:c=0,nav_token:i={},accept:l=Ke,block:u=Ke,event:d}){const p=F;F=i;const h=await me(t,!1),f=e==="enter"?Fe(w,h,t,e):mt({url:t,type:e,delta:n?.delta,intent:h,scroll:n?.scroll,event:d});if(!f){u(),F===i&&(F=p);return}const g=R,b=I;l(),ne=!0,ue&&f.navigation.type!=="enter"&&C.navigating.set(ee.current=f.navigation);let _=h&&await gt(h);if(!_){if(_e(t,U,A.hash))return await G(t,s);_=await wt(t,{id:null},await z(new Pe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=h?.url||t,F!==i)return f.reject(new Error("navigation aborted")),!1;if(_.type==="redirect"){if(c<20){await Y({type:e,url:new URL(_.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o,redirect_count:c+1,nav_token:i}),f.fulfil(void 0);return}_=await ge({status:500,error:await z(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else _.props.page.status>=400&&await C.updated.check()&&(await ct(),await G(t,s));if(wn(),Oe(g),dt(b),_.props.page.url.pathname!==t.pathname&&(t.pathname=_.props.page.url.pathname),o=n?n.state:o,!n){const v=s?0:1,O={[q]:R+=v,[Q]:I+=v,[nt]:o};(s?history.replaceState:history.pushState).call(history,O,"",t),s||gn(R,I)}const T=h&&L?.id===h.id?L.fork:null;L=null,_.props.page.state=o;let m;if(ue){const v=(await Promise.all(Array.from(mn,K=>K(f.navigation)))).filter(K=>typeof K=="function");if(v.length>0){let K=function(){v.forEach(we=>{J.delete(we)})};v.push(K),v.forEach(we=>{J.add(we)})}const O=f.navigation.to;w={..._.state,nav:{params:O.params,route:O.route,url:O.url}},_.props.page&&(_.props.page.url=t);const $=T&&await T;$?m=$.commit():(W=null,ut.$set(_.props),W&&Object.assign(_.props.page,W),un(_.props.page),m=At?.()),ft=!0}else await _t(_,Se,!1);const{activeElement:y}=document;await m,await oe(),await oe();let E=null;if(We){const v=n?n.scroll:a?M():null;v?scrollTo(v.x,v.y):(E=t.hash&&document.getElementById(bt(t)))?E.scrollIntoView():scrollTo(0,0)}const k=document.activeElement!==y&&document.activeElement!==document.body;!r&&!k&&Tn(t,!E),We=!0,_.props.page&&(W&&Object.assign(_.props.page,W),Object.assign(S,_.props.page)),ne=!1,e==="popstate"&&ht(I),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=M()),J.forEach(v=>v(f.navigation)),C.navigating.set(ee.current=null)}async function wt(e,t,n,r,a){return e.origin===re&&e.pathname===location.pathname&&!Ce?await ge({status:r,error:n,url:e,route:t}):await G(e,a)}function Rn(){let e,t={element:void 0,href:void 0},n;x.addEventListener("mousemove",c=>{const i=c.target;clearTimeout(e),e=setTimeout(()=>{s(i,B.hover)},20)});function r(c){c.defaultPrevented||s(c.composedPath()[0],B.tap)}x.addEventListener("mousedown",r),x.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(c=>{for(const i of c)i.isIntersecting&&(Ae(new URL(i.target.href)),a.unobserve(i.target))},{threshold:0});async function s(c,i){const l=at(c,x),u=l===t.element&&l?.href===t.href&&i>=n;if(!l||u)return;const{url:d,external:p,download:h}=Ee(l,U,A.hash);if(p||h)return;const f=se(l),g=d&&he(w.url)===he(d);if(!(f.reload||g))if(i<=f.preload_data){t={element:l,href:l.href},n=B.tap;const b=await me(d,!1);if(!b)return;yn(b)}else i<=f.preload_code&&(t={element:l,href:l.href},n=i,Ae(d))}function o(){a.disconnect();for(const c of x.querySelectorAll("a")){const{url:i,external:l,download:u}=Ee(c,U,A.hash);if(l||u)continue;const d=se(c);d.reload||(d.preload_code===B.viewport&&a.observe(c),d.preload_code===B.eager&&Ae(i))}}J.add(o),o()}function z(e,t){if(e instanceof pe)return e.body;const n=ie(e),r=ln(e);return A.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Dn(e,t={}){return e=new URL(Ne(e)),e.origin!==re?Promise.reject(new Error("goto: invalid URL")):pt(e,t,0)}function Sn(e){if(typeof e=="function")le.push(e);else{const{href:t}=new URL(e,location.href);le.push(n=>n.href===t)}}function In(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(Xe(),!ne){const r=Fe(w,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};lt.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Xe()}),navigator.connection?.saveData||Rn(),x.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=at(t.composedPath()[0],x);if(!n)return;const{url:r,external:a,target:s,download:o}=Ee(n,U,A.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const c=se(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[l,u]=(A.hash?r.hash.replace(/^#/,""):r.href).split("#"),d=l===ye(location);if(a||c.reload&&(!d||!u)){mt({url:r,type:"link",event:t})?ne=!0:t.preventDefault();return}if(u!==void 0&&d){const[,p]=w.url.href.split("#");if(p===u){if(t.preventDefault(),u===""||u==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=n.ownerDocument.getElementById(decodeURIComponent(u));h&&(h.scrollIntoView(),h.focus())}return}if(H=!0,Oe(R),e(r),!c.replace_state)return;H=!1}t.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await Y({type:"link",url:r,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??r.href===location.href,event:t})}),x.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const o=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(_e(o,U,!1))return;const c=t.target,i=se(c);if(i.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(c,r);o.search=new URLSearchParams(l).toString(),Y({type:"form",url:o,keepfocus:i.keepfocus,noscroll:i.noscroll,replace_state:i.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Ue){if(t.state?.[q]){const n=t.state[q];if(F={},n===R)return;const r=D[n],a=t.state[nt]??{},s=new URL(t.state[Ft]??location.href),o=t.state[Q],c=w.url?ye(location)===ye(w.url):!1;if(o===I&&(ft||c)){a!==S.state&&(S.state=a),e(s),D[R]=M(),r&&scrollTo(r.x,r.y),R=n;return}const l=n-R;await Y({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{R=n,I=o},block:()=>{history.go(-l)},nav_token:F,event:t})}else if(!H){const n=new URL(location.href);e(n),A.hash&&location.reload()}}}),addEventListener("hashchange",()=>{H&&(H=!1,history.replaceState({...history.state,[q]:++R,[Q]:I},"",location.href))});for(const t of document.querySelectorAll("link"))_n.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&C.navigating.set(ee.current=null)});function e(t){w.url=S.url=t,C.page.set(Me(S)),C.page.notify()}}async function Un(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:o,data:c,form:i}){Ce=!0;const l=new URL(location.href);let u;({params:a={},route:s={id:null}}=await me(l,!1)||{}),u=xe.find(({id:h})=>h===s.id);let d,p=!0;try{const h=r.map(async(g,b)=>{const _=c[b];return _?.uses&&(_.uses=vt(_.uses)),$e({loader:A.nodes[g],url:l,params:a,route:s,parent:async()=>{const T={};for(let m=0;m<b;m+=1)Object.assign(T,(await h[m]).data);return T},server_data_node:Be(_)})}),f=await Promise.all(h);if(u){const g=u.layouts;for(let b=0;b<g.length;b++)g[b]||f.splice(b,0,void 0)}d=await de({url:l,params:a,branch:f,status:t,error:n,errors:u?.errors,form:i,route:u??null})}catch(h){if(h instanceof Le){await G(new URL(h.location,location.href));return}d=await ge({status:ie(h),error:await z(h,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",p=!1}d.props.page&&(d.props.page.state={}),await _t(d,e,p)}async function yt(e,t){const n=new URL(e);n.pathname=pn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(cn,"1"),n.searchParams.append(sn,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new pe(a.status,s)}return new Promise(async s=>{const o=new Map,c=a.body.getReader();function i(u){return rn(u,{...A.decoders,Promise:d=>new Promise((p,h)=>{o.set(d,{fulfil:p,reject:h})})})}let l="";for(;;){const{done:u,value:d}=await c.read();if(u&&!l)break;for(l+=!d&&l?`
2
- `:It.decode(d,{stream:!0});;){const p=l.indexOf(`
3
- `);if(p===-1)break;const h=JSON.parse(l.slice(0,p));if(l=l.slice(p+1),h.type==="redirect")return s(h);if(h.type==="data")h.nodes?.forEach(f=>{f?.type==="data"&&(f.uses=vt(f.uses),f.data=i(f.data))}),s(h);else if(h.type==="chunk"){const{id:f,data:g,error:b}=h,_=o.get(f);o.delete(f),b?_.reject(i(b)):_.fulfil(i(g))}}}})}function vt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let Ue=!1;function Tn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=bt(e);if(r&&document.getElementById(r)){const{x:s,y:o}=M();setTimeout(()=>{const c=history.state;Ue=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(c,"",e),t&&scrollTo(s,o),Ue=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let o=0;o<a.rangeCount;o+=1)s.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===s.length){for(let o=0;o<a.rangeCount;o+=1){const c=s[o],i=a.getRangeAt(o);if(c.commonAncestorContainer!==i.commonAncestorContainer||c.startContainer!==i.startContainer||c.endContainer!==i.endContainer||c.startOffset!==i.startOffset||c.endOffset!==i.endOffset)return}a.removeAllRanges()}})}}}function Fe(e,t,n,r,a=null){let s,o;const c=new Promise((l,u)=>{s=l,o=u});return c.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:M()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:c},fulfil:s,reject:o}}function Me(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Ln(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function bt(e){let t;if(A.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Cn as a,Dn as g,jn as l,S as p,C as s};
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/DlSs5Yra.js";export{o as load_css,r as start};
@@ -1,2 +0,0 @@
1
- )�import{l as o,a as r}from"../chunks/DlSs5Yra.js";export{o as load_css,r as start};
2
- 
@@ -1 +0,0 @@
1
- {"version":3,"file":"_server.ts-C-W5J15L.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 { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { json } from \"@sveltejs/kit\";\nimport { homedir } from \"os\";\nconst MAX_HISTORY = 100;\nconst history = [];\nfunction addNotification(record) {\n history.unshift(record);\n if (history.length > MAX_HISTORY) {\n history.length = MAX_HISTORY;\n }\n}\nfunction getNotifications(limit = 50) {\n return history.slice(0, limit);\n}\nlet app = null;\nfunction isFCMConfigured() {\n return !!(process.env.FCM_PROJECT_ID && process.env.FCM_CLIENT_EMAIL && process.env.FCM_PRIVATE_KEY);\n}\nasync function sendFCMNotification(deviceToken, payload) {\n try {\n const fcmApp = getApp();\n const message = {\n android: {\n priority: \"high\",\n // Ensures delivery even in Doze mode\n ttl: 3e5\n // 5 minutes TTL (matches pending request expiry)\n },\n data: {\n body: payload.body || payload.message || \"\",\n category: payload.category ?? (typeof payload.data?.category === \"string\" ? payload.data.category : \"\"),\n project: typeof payload.data?.project === \"string\" ? payload.data.project : \"\",\n requestId: typeof payload.data?.requestId === \"string\" ? payload.data.requestId : \"\",\n source: typeof payload.data?.source === \"string\" ? payload.data.source : \"\",\n subtitle: payload.subtitle ?? \"\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title: payload.title,\n toolInput: payload.data?.toolInput ? JSON.stringify(payload.data.toolInput) : \"\",\n toolName: typeof payload.data?.toolName === \"string\" ? payload.data.toolName : \"\",\n type: typeof payload.data?.type === \"string\" ? payload.data.type : \"\"\n },\n token: deviceToken\n };\n const messageId = await admin.messaging(fcmApp).send(message);\n return { messageId, success: true };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(\"[FCM] Send failed:\", errorMessage);\n return { error: errorMessage, success: false };\n }\n}\nfunction getApp() {\n if (!app) {\n const projectId = process.env.FCM_PROJECT_ID;\n const clientEmail = process.env.FCM_CLIENT_EMAIL;\n const privateKey = process.env.FCM_PRIVATE_KEY?.replace(/\\\\n/g, \"\\n\");\n if (!projectId || !clientEmail || !privateKey) {\n throw new Error(\n \"FCM not configured: missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY\"\n );\n }\n app = admin.initializeApp({\n credential: admin.credential.cert({ clientEmail, privateKey, projectId })\n });\n }\n return app;\n}\nfunction readPersistedDeviceToken(platform) {\n const tokensFile = join(homedir(), \".shooter\", \"device-tokens.json\");\n if (!existsSync(tokensFile)) {\n return void 0;\n }\n try {\n const parsed = JSON.parse(readFileSync(tokensFile, \"utf-8\"));\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n const value = parsed[platform];\n return typeof value === \"string\" && value ? value : void 0;\n }\n } catch {\n }\n return void 0;\n}\nlet apnsSingleton = null;\nfunction getAPNsClient() {\n if (!apnsSingleton) {\n apnsSingleton = new LibraryAPNsService();\n }\n return apnsSingleton;\n}\nconst notificationCache = /* @__PURE__ */ new Map();\nconst DEDUP_WINDOW = 1e4;\nfunction broadcastHookEvent(body) {\n const data = body.data ?? {};\n const eventType = typeof data.eventType === \"string\" ? data.eventType : typeof body.eventType === \"string\" ? body.eventType : \"\";\n const tool = typeof data.tool === \"string\" ? data.tool : \"\";\n const terminalId = typeof data.terminalId === \"string\" ? data.terminalId : void 0;\n const sessionId = typeof data.sessionId === \"string\" ? data.sessionId : void 0;\n switch (eventType) {\n case \"error\":\n broadcastEvent({\n error: typeof data.error === \"string\" ? data.error : typeof data.message === \"string\" ? data.message : \"Unknown error\",\n terminalId,\n tool,\n type: \"tool-failed\"\n });\n break;\n case \"idle_input\":\n case \"session.idle\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-idle\"\n });\n break;\n case \"permission\":\n case \"permission_notification\":\n if (data.requestId && data.toolName) {\n broadcastEvent({\n input: typeof data.toolInput === \"object\" && data.toolInput !== null ? data.toolInput : {},\n requestId: data.requestId,\n tool: data.toolName,\n type: \"permission-requested\"\n });\n }\n break;\n case \"question\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-question\"\n });\n break;\n case \"tool.after\":\n broadcastEvent({ success: true, terminalId, tool, type: \"tool-completed\" });\n break;\n case \"tool.before\":\n broadcastEvent({\n command: typeof data.command === \"string\" ? data.command : \"\",\n filePath: typeof data.filePath === \"string\" ? data.filePath : typeof data.files === \"string\" ? data.files : \"\",\n terminalId,\n tool,\n type: \"tool-started\"\n });\n break;\n }\n}\nfunction buildNotificationRecord(id, title, message, status, data, error) {\n return {\n category: data?.category ?? null,\n data: data ?? null,\n error: error ?? null,\n id,\n message,\n project: data?.project ?? null,\n source: data?.source ?? null,\n status,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title,\n tool: data?.tool ?? null\n };\n}\nfunction intelligentNotificationFilter(title, message, data, waitForResponse = false) {\n const source = data?.source || \"unknown\";\n if (isDuplicateNotification(title, message, data, waitForResponse)) {\n return {\n reason: \"Duplicate notification within 10-second window\",\n send: false\n };\n }\n if (source === \"smart-completion-detector\" || source === \"shooter-completion-detector\") {\n return {\n reason: \"Smart completion detector - completion or intervention needed\",\n send: true\n };\n }\n if (source === \"stop-hook\") {\n return {\n reason: \"Stop hook completion notification - session finished\",\n send: true\n };\n }\n const spamPatterns = [\n /PreToolUse/i,\n // Any PreToolUse notifications\n /PostToolUse/i,\n // Any PostToolUse notifications\n /^(Read|Write|Edit|Bash)\\s+Starting\\s*\\|\\s*\\w+$/i,\n // Only basic tool starting patterns\n /^unknown\\s*\\|\\s*\\w+$/i\n // Only \"unknown | projectname\" exactly\n ];\n const isSpam = spamPatterns.some((pattern) => pattern.test(title) || pattern.test(message));\n if (isSpam) {\n return {\n reason: \"Filtered spam notification from old hook system\",\n send: false\n };\n }\n const importantPatterns = [\n /session complete/i,\n /intervention needed/i,\n /error/i,\n /failed/i,\n /blocked/i,\n /attention/i\n ];\n const isImportant = importantPatterns.some(\n (pattern) => pattern.test(title) || pattern.test(message)\n );\n if (isImportant) {\n return {\n reason: \"Important notification - completion or intervention\",\n send: true\n };\n }\n return {\n reason: \"General notification - allowing by default\",\n send: true\n };\n}\nfunction isDuplicateNotification(title, message, data, waitForResponse = false) {\n if (waitForResponse) {\n return false;\n }\n const 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 subtitle = typeof body.subtitle === \"string\" ? body.subtitle : void 0;\n const skipPush = typeof body.skipPush === \"boolean\" ? body.skipPush : false;\n const waitForResponse = typeof body.waitForResponse === \"boolean\" ? body.waitForResponse : false;\n 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 ...subtitle ? { subtitle } : {},\n title\n };\n const platform = private_env.DEVICE_PLATFORM || \"ios\";\n if (platform === \"android\") {\n if (!isFCMConfigured()) {\n return json(\n {\n details: \"Missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY environment variables\",\n error: \"FCM not configured\"\n },\n { status: 500 }\n );\n }\n const androidToken = requestDeviceToken?.trim() || private_env.ANDROID_DEVICE_TOKEN?.trim() || readPersistedDeviceToken(\"android\");\n if (!androidToken) {\n return json(\n {\n details: \"No Android device token available — set ANDROID_DEVICE_TOKEN, pass deviceToken in the request body, or open the Android app so it can auto-register its FCM token.\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n const fcmResult = await sendFCMNotification(androidToken, payload);\n if (fcmResult.success) {\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n 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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"}