@juspay/shooter 1.4.0 → 1.5.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 (88) hide show
  1. package/.claude/hooks/notifier.cjs +15 -1
  2. package/README.md +109 -17
  3. package/bin/shooter.cjs +30 -12
  4. package/build/client/_app/immutable/chunks/{BN1NjBrw.js → BIaXC2t9.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BIaXC2t9.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BIaXC2t9.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{CF4lQ45j.js → CRbaG9cv.js} +1 -1
  8. package/build/client/_app/immutable/chunks/CRbaG9cv.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/CRbaG9cv.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{CDVSripB.js → CiF38mQq.js} +1 -1
  11. package/build/client/_app/immutable/chunks/CiF38mQq.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/CiF38mQq.js.gz +0 -0
  13. package/build/client/_app/immutable/entry/{app.DwWiuoEC.js → app.CU7KVZja.js} +2 -2
  14. package/build/client/_app/immutable/entry/app.CU7KVZja.js.br +0 -0
  15. package/build/client/_app/immutable/entry/app.CU7KVZja.js.gz +0 -0
  16. package/build/client/_app/immutable/entry/start.RAMZY19t.js +1 -0
  17. package/build/client/_app/immutable/entry/start.RAMZY19t.js.br +2 -0
  18. package/build/client/_app/immutable/entry/start.RAMZY19t.js.gz +0 -0
  19. package/build/client/_app/immutable/nodes/{0.ejabgzDQ.js → 0.Bi3XYMSu.js} +1 -1
  20. package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js.br +0 -0
  21. package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js.gz +0 -0
  22. package/build/client/_app/immutable/nodes/{1.BFK7Ubrr.js → 1.DTmfBFmm.js} +1 -1
  23. package/build/client/_app/immutable/nodes/1.DTmfBFmm.js.br +0 -0
  24. package/build/client/_app/immutable/nodes/1.DTmfBFmm.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{2.DV3saFiY.js → 2.Cm269yzt.js} +1 -1
  26. package/build/client/_app/immutable/nodes/2.Cm269yzt.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/2.Cm269yzt.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{4.D6NIf10D.js → 4.C25c5hMg.js} +1 -1
  29. package/build/client/_app/immutable/nodes/4.C25c5hMg.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/4.C25c5hMg.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{5.g3R-QfIW.js → 5.DIkXVP4q.js} +1 -1
  32. package/build/client/_app/immutable/nodes/5.DIkXVP4q.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/5.DIkXVP4q.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{6.DSpd_nYK.js → 6.BPL-HzUX.js} +1 -1
  35. package/build/client/_app/immutable/nodes/6.BPL-HzUX.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/6.BPL-HzUX.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{7.F9WBFTz2.js → 7.IgEqce53.js} +1 -1
  38. package/build/client/_app/immutable/nodes/7.IgEqce53.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/7.IgEqce53.js.gz +0 -0
  40. package/build/client/_app/version.json +1 -1
  41. package/build/client/_app/version.json.br +0 -0
  42. package/build/client/_app/version.json.gz +0 -0
  43. package/build/server/chunks/{0-ePgrkfG9.js → 0-DiORznXb.js} +2 -2
  44. package/build/server/chunks/{0-ePgrkfG9.js.map → 0-DiORznXb.js.map} +1 -1
  45. package/build/server/chunks/{1-BV7u1xGo.js → 1-D0N7vVhH.js} +2 -2
  46. package/build/server/chunks/{1-BV7u1xGo.js.map → 1-D0N7vVhH.js.map} +1 -1
  47. package/build/server/chunks/{2-3p1kyvjQ.js → 2-DfSav7a7.js} +2 -2
  48. package/build/server/chunks/{2-3p1kyvjQ.js.map → 2-DfSav7a7.js.map} +1 -1
  49. package/build/server/chunks/{4-ChFYfo_S.js → 4-DV5MZUz_.js} +2 -2
  50. package/build/server/chunks/{4-ChFYfo_S.js.map → 4-DV5MZUz_.js.map} +1 -1
  51. package/build/server/chunks/{5-q-tQLBBu.js → 5-DJhoAjb0.js} +2 -2
  52. package/build/server/chunks/{5-q-tQLBBu.js.map → 5-DJhoAjb0.js.map} +1 -1
  53. package/build/server/chunks/{6-BIaAbm8b.js → 6-Cp8CzYbr.js} +2 -2
  54. package/build/server/chunks/{6-BIaAbm8b.js.map → 6-Cp8CzYbr.js.map} +1 -1
  55. package/build/server/chunks/{7--TmbCgrH.js → 7-BA4xzUj3.js} +2 -2
  56. package/build/server/chunks/{7--TmbCgrH.js.map → 7-BA4xzUj3.js.map} +1 -1
  57. package/build/server/index.js +1 -1
  58. package/build/server/index.js.map +1 -1
  59. package/build/server/manifest.js +8 -8
  60. package/build/server/manifest.js.map +1 -1
  61. package/package.json +5 -2
  62. package/scripts/install.sh +122 -70
  63. package/scripts/setup.cjs +242 -241
  64. package/build/client/_app/immutable/chunks/BN1NjBrw.js.br +0 -0
  65. package/build/client/_app/immutable/chunks/BN1NjBrw.js.gz +0 -0
  66. package/build/client/_app/immutable/chunks/CDVSripB.js.br +0 -0
  67. package/build/client/_app/immutable/chunks/CDVSripB.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/CF4lQ45j.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/CF4lQ45j.js.gz +0 -0
  70. package/build/client/_app/immutable/entry/app.DwWiuoEC.js.br +0 -0
  71. package/build/client/_app/immutable/entry/app.DwWiuoEC.js.gz +0 -0
  72. package/build/client/_app/immutable/entry/start.DG8BMhrh.js +0 -1
  73. package/build/client/_app/immutable/entry/start.DG8BMhrh.js.br +0 -0
  74. package/build/client/_app/immutable/entry/start.DG8BMhrh.js.gz +0 -0
  75. package/build/client/_app/immutable/nodes/0.ejabgzDQ.js.br +0 -0
  76. package/build/client/_app/immutable/nodes/0.ejabgzDQ.js.gz +0 -0
  77. package/build/client/_app/immutable/nodes/1.BFK7Ubrr.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/1.BFK7Ubrr.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/2.DV3saFiY.js.br +0 -0
  80. package/build/client/_app/immutable/nodes/2.DV3saFiY.js.gz +0 -0
  81. package/build/client/_app/immutable/nodes/4.D6NIf10D.js.br +0 -0
  82. package/build/client/_app/immutable/nodes/4.D6NIf10D.js.gz +0 -0
  83. package/build/client/_app/immutable/nodes/5.g3R-QfIW.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/5.g3R-QfIW.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/6.DSpd_nYK.js.br +0 -0
  86. package/build/client/_app/immutable/nodes/6.DSpd_nYK.js.gz +0 -0
  87. package/build/client/_app/immutable/nodes/7.F9WBFTz2.js.br +0 -0
  88. package/build/client/_app/immutable/nodes/7.F9WBFTz2.js.gz +0 -0
@@ -10,16 +10,16 @@ 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.DG8BMhrh.js",app:"_app/immutable/entry/app.DwWiuoEC.js",imports:["_app/immutable/entry/start.DG8BMhrh.js","_app/immutable/chunks/BN1NjBrw.js","_app/immutable/chunks/CZHsSL_X.js","_app/immutable/entry/app.DwWiuoEC.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/CZHsSL_X.js","_app/immutable/chunks/r0JawsZc.js","_app/immutable/chunks/B8XegpSE.js","_app/immutable/chunks/Bu1aqm5j.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.RAMZY19t.js",app:"_app/immutable/entry/app.CU7KVZja.js",imports:["_app/immutable/entry/start.RAMZY19t.js","_app/immutable/chunks/BIaXC2t9.js","_app/immutable/chunks/CZHsSL_X.js","_app/immutable/entry/app.CU7KVZja.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/CZHsSL_X.js","_app/immutable/chunks/r0JawsZc.js","_app/immutable/chunks/B8XegpSE.js","_app/immutable/chunks/Bu1aqm5j.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
- __memo(() => import('./chunks/0-ePgrkfG9.js')),
16
- __memo(() => import('./chunks/1-BV7u1xGo.js')),
17
- __memo(() => import('./chunks/2-3p1kyvjQ.js')),
15
+ __memo(() => import('./chunks/0-DiORznXb.js')),
16
+ __memo(() => import('./chunks/1-D0N7vVhH.js')),
17
+ __memo(() => import('./chunks/2-DfSav7a7.js')),
18
18
  __memo(() => import('./chunks/3-Ck7ewhOX.js')),
19
- __memo(() => import('./chunks/4-ChFYfo_S.js')),
20
- __memo(() => import('./chunks/5-q-tQLBBu.js')),
21
- __memo(() => import('./chunks/6-BIaAbm8b.js')),
22
- __memo(() => import('./chunks/7--TmbCgrH.js'))
19
+ __memo(() => import('./chunks/4-DV5MZUz_.js')),
20
+ __memo(() => import('./chunks/5-DJhoAjb0.js')),
21
+ __memo(() => import('./chunks/6-Cp8CzYbr.js')),
22
+ __memo(() => import('./chunks/7-BA4xzUj3.js'))
23
23
  ],
24
24
  remotes: {
25
25
 
@@ -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.DG8BMhrh.js\",app:\"_app/immutable/entry/app.DwWiuoEC.js\",imports:[\"_app/immutable/entry/start.DG8BMhrh.js\",\"_app/immutable/chunks/BN1NjBrw.js\",\"_app/immutable/chunks/CZHsSL_X.js\",\"_app/immutable/entry/app.DwWiuoEC.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/CZHsSL_X.js\",\"_app/immutable/chunks/r0JawsZc.js\",\"_app/immutable/chunks/B8XegpSE.js\",\"_app/immutable/chunks/Bu1aqm5j.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],\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: \"/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/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: 3 },\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: 4 },\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: 5 },\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: 6 },\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: 7 },\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.RAMZY19t.js\",app:\"_app/immutable/entry/app.CU7KVZja.js\",imports:[\"_app/immutable/entry/start.RAMZY19t.js\",\"_app/immutable/chunks/BIaXC2t9.js\",\"_app/immutable/chunks/CZHsSL_X.js\",\"_app/immutable/entry/app.CU7KVZja.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/CZHsSL_X.js\",\"_app/immutable/chunks/r0JawsZc.js\",\"_app/immutable/chunks/B8XegpSE.js\",\"_app/immutable/chunks/Bu1aqm5j.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],\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: \"/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/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: 3 },\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: 4 },\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: 5 },\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: 6 },\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: 7 },\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":"AAAY,MAAC,QAAQ,GAAG,CAAC,MAAM;AAC/B,SAAS,MAAM,CAAC,EAAE,EAAE;AACpB,CAAC,IAAI,KAAK;AACV,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AACtC;;AAEA,OAAO;AACP,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,OAAO,EAAE,MAAM;AAChB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,sBAAsB,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACzI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAClF,CAAC,CAAC,EAAE;AACJ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,GAAG,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAC,wCAAwC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,sCAAsC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACjf,EAAE,KAAK,EAAE;AACT,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC;AACtC,GAAG;AACH,EAAE,OAAO,EAAE;AACX;AACA,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG;AACH,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,YAAY;AACpB,IAAI,OAAO,EAAE,mBAAmB;AAChC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA6C,CAAC;AAChF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,mBAAmB;AAC3B,IAAI,OAAO,EAAE,0BAA0B;AACvC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAoD,CAAC;AACvF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,OAAO,EAAE,oBAAoB;AACjC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA8C,CAAC;AACjF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,OAAO,EAAE,oBAAoB;AACjC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA8C,CAAC;AACjF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,sBAAsB;AACnC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAgD,CAAC;AACnF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,sBAAsB;AACnC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAgD,CAAC;AACnF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,uBAAuB;AAC/B,IAAI,OAAO,EAAE,+BAA+B;AAC5C,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAwD,CAAC;AAC3F,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,sBAAsB;AAC9B,IAAI,OAAO,EAAE,8BAA8B;AAC3C,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAuD,CAAC;AAC1F,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,qBAAqB;AAC7B,IAAI,OAAO,EAAE,iCAAiC;AAC9C,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAsD,CAAC;AACzF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,iCAAiC;AACzC,IAAI,OAAO,EAAE,8CAA8C;AAC3D,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAkE,CAAC;AACrG,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,4BAA4B;AACpC,IAAI,OAAO,EAAE,yCAAyC;AACtD,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA6D,CAAC;AAChG,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,cAAc;AACtB,IAAI,OAAO,EAAE,qBAAqB;AAClC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAA+C,CAAC;AAClF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,gBAAgB;AACxB,IAAI,OAAO,EAAE,uBAAuB;AACpC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAiD,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,OAAO,EAAE,eAAe;AAC5B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,UAAU;AAClB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,0BAA0B;AACvC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,YAAY;AACpB,IAAI,OAAO,EAAE,kBAAkB;AAC/B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,iBAAiB;AACzB,IAAI,OAAO,EAAE,4BAA4B;AACzC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd;AACA,GAAG;AACH,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;AACjC,EAAE,QAAQ,EAAE,YAAY;AACxB;AACA,GAAG,OAAO,IAAI;AACd,EAAE,CAAC;AACH,EAAE,aAAa,EAAE;AACjB;AACA;AACA,CAAC;;AAEW,MAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;;AAEzB,MAAC,IAAI,GAAG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juspay/shooter",
3
- "version": "1.4.0",
3
+ "version": "1.5.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",
@@ -45,8 +45,11 @@
45
45
  "engines": {
46
46
  "node": ">=20"
47
47
  },
48
+ "publishConfig": {
49
+ "access": "public"
50
+ },
48
51
  "scripts": {
49
- "postinstall": "node-gyp rebuild --directory=node_modules/node-pty --loglevel=silent > /dev/null 2>&1 || echo '⚠ node-pty build failed — terminal features will not work. Install build tools: macOS: xcode-select --install | Linux: apt install python3 make g++'",
52
+ "postinstall": "node-gyp rebuild --directory=node_modules/node-pty --loglevel=silent > /dev/null 2>&1 || echo '⚠ node-pty build failed — terminal features will not work. Install build tools: macOS: xcode-select --install | Linux: apt install python3 make g++'; node-gyp rebuild --directory=node_modules/better-sqlite3 --loglevel=silent > /dev/null 2>&1 || echo '⚠ better-sqlite3 build failed — terminal persistence will not work.'",
50
53
  "build": "vite build",
51
54
  "postbuild": "cp src/lib/modules/server/terminal/pty-holder.cjs build/pty-holder.cjs",
52
55
  "dev": "vite dev --open",
@@ -184,11 +184,12 @@ check_linux_build_tools() {
184
184
 
185
185
  if ask_yes_no " Install build tools now? ($install_cmd)" "y"; then
186
186
  info "Installing build tools..."
187
- eval "$install_cmd"
187
+ $install_cmd
188
188
  success "Build tools installed."
189
189
  else
190
- warn "Continuing without build tools. Terminal features (node-pty) and"
191
- warn "database (better-sqlite3) may not work."
190
+ error "Build tools are required for native modules (node-pty, better-sqlite3)."
191
+ error "Install them manually:$missing"
192
+ exit 1
192
193
  fi
193
194
  else
194
195
  success "Build tools available (make, g++, python3)"
@@ -250,13 +251,11 @@ find_node() {
250
251
  }
251
252
 
252
253
  check_node() {
253
- NODE_BIN="$(find_node)"
254
+ NODE_BIN="$(find_node)" || true
254
255
  if [ -n "$NODE_BIN" ]; then
255
256
  node_version="$("$NODE_BIN" --version)"
256
257
  success "Node.js $node_version ($NODE_BIN)"
257
- local dir_path
258
- dir_path="$(dirname "$NODE_BIN")"
259
- export PATH="$dir_path:$PATH"
258
+ export PATH="$(dirname "$NODE_BIN"):$PATH"
260
259
  return 0
261
260
  fi
262
261
 
@@ -283,8 +282,12 @@ bootstrap_pnpm() {
283
282
  # Try corepack first
284
283
  if command -v corepack >/dev/null 2>&1; then
285
284
  if corepack enable 2>/dev/null; then
286
- success "pnpm enabled via corepack"
287
- return 0
285
+ # Pre-download pnpm to avoid interactive prompt during install
286
+ COREPACK_ENABLE_AUTO_PIN=0 corepack prepare pnpm@10.28.2 --activate 2>/dev/null
287
+ if command -v pnpm >/dev/null 2>&1; then
288
+ success "pnpm $(pnpm --version) (via corepack)"
289
+ return 0
290
+ fi
288
291
  fi
289
292
  fi
290
293
 
@@ -330,7 +333,7 @@ handle_existing() {
330
333
  1)
331
334
  step "Updating existing installation"
332
335
  cd "$SHOOTER_REPO"
333
- git pull --rebase origin "$REPO_BRANCH"
336
+ git fetch origin "$REPO_BRANCH" && git reset --hard "origin/$REPO_BRANCH"
334
337
  success "Repository updated."
335
338
  return 0
336
339
  ;;
@@ -340,12 +343,16 @@ handle_existing() {
340
343
  success "Removed $SHOOTER_REPO"
341
344
  return 1
342
345
  ;;
343
- *)
346
+ 3|abort)
344
347
  info "Aborted. No changes made."
345
348
  # Disable cleanup trap since nothing was cloned
346
349
  CLEANUP_CLONED=0
347
350
  exit 0
348
351
  ;;
352
+ *)
353
+ error "Invalid choice: $choice"
354
+ exit 1
355
+ ;;
349
356
  esac
350
357
  fi
351
358
  return 1
@@ -407,35 +414,6 @@ run_setup_wizard() {
407
414
  fi
408
415
  }
409
416
 
410
- # ── Global command ────────────────────────────────────────────────────
411
-
412
- offer_global_command() {
413
- step "Global command"
414
- BIN_DIR="$HOME/.local/bin"
415
- SHOOTER_BIN="$BIN_DIR/shooter"
416
-
417
- if [ -x "$SHOOTER_BIN" ]; then
418
- success "'shooter' command already linked."
419
- return
420
- fi
421
-
422
- if ask_yes_no " Install 'shooter' as a global command?" "y"; then
423
- mkdir -p "$BIN_DIR"
424
- ln -sf "$SHOOTER_REPO/bin/shooter.cjs" "$SHOOTER_BIN"
425
- chmod +x "$SHOOTER_BIN"
426
- success "'shooter' linked to $SHOOTER_BIN"
427
-
428
- # Check if ~/.local/bin is in PATH
429
- case ":$PATH:" in
430
- *":$BIN_DIR:"*) ;;
431
- *)
432
- warn "$BIN_DIR is not in your PATH."
433
- info "Add to your shell profile: export PATH=\"\$HOME/.local/bin:\$PATH\""
434
- ;;
435
- esac
436
- fi
437
- }
438
-
439
417
  # ── Cloudflare Tunnel ─────────────────────────────────────────────────
440
418
 
441
419
  install_cloudflared() {
@@ -515,46 +493,55 @@ start_server_and_tunnel() {
515
493
  step "Starting Shooter"
516
494
 
517
495
  cd "$SHOOTER_REPO"
496
+ port="$DEFAULT_PORT"
518
497
 
519
- # Start the server
520
- SHOOTER_HOME="$SHOOTER_HOME" "$NODE_BIN" bin/shooter.cjs start &
521
- SERVER_BG_PID=$!
522
- sleep 3
498
+ # Check if port is already in use
499
+ if command -v lsof >/dev/null 2>&1; then
500
+ if lsof -i ":${port}" -sTCP:LISTEN >/dev/null 2>&1; then
501
+ warn "Port ${port} is already in use."
502
+ info "Stop the existing process or set a different PORT in ~/.shooter/.env"
503
+ return 1
504
+ fi
505
+ fi
506
+
507
+ # Start server in daemon mode (detaches from terminal, auto-starts tunnel if cloudflared available)
508
+ SHOOTER_HOME="$SHOOTER_HOME" "$NODE_BIN" bin/shooter.cjs start -d
509
+
510
+ # Wait for server to be ready (up to 15s)
511
+ waited=0
512
+ while [ "$waited" -lt 15 ]; do
513
+ if curl -sf "http://localhost:${port}/api/health" >/dev/null 2>&1; then
514
+ break
515
+ fi
516
+ sleep 1
517
+ waited=$((waited + 1))
518
+ done
523
519
 
524
520
  # Verify server is up
525
- port="$DEFAULT_PORT"
526
521
  if curl -sf "http://localhost:${port}/api/health" >/dev/null 2>&1; then
527
522
  success "Server running on http://localhost:${port}"
528
523
  else
529
524
  warn "Server may still be starting. Check with: shooter status"
530
525
  fi
531
526
 
532
- # Start cloudflare quick tunnel if available
533
- if command -v cloudflared >/dev/null 2>&1; then
534
- info "Starting Cloudflare Tunnel..."
535
-
536
- # Quick tunnel run in background, capture URL from log file
537
- tunnel_log="$SHOOTER_HOME/logs/tunnel.log"
538
- mkdir -p "$(dirname "$tunnel_log")"
539
- cloudflared tunnel --url "http://localhost:${port}" > "$tunnel_log" 2>&1 &
540
- TUNNEL_PID=$!
541
-
542
- # Wait up to 10s for the tunnel URL to appear in logs
527
+ # Check for tunnel URL (daemon mode starts tunnel automatically)
528
+ if [ -f "$SHOOTER_HOME/.tunnel_url" ]; then
529
+ TUNNEL_URL="$(cat "$SHOOTER_HOME/.tunnel_url")"
530
+ success "Tunnel active: $TUNNEL_URL"
531
+ elif command -v cloudflared >/dev/null 2>&1; then
532
+ # Tunnel may still be starting — wait a few more seconds
543
533
  waited=0
544
534
  while [ "$waited" -lt 10 ]; do
545
- if grep -qo 'https://[^ ]*trycloudflare\.com' "$tunnel_log" 2>/dev/null; then
546
- grep -o 'https://[^ ]*trycloudflare\.com' "$tunnel_log" | head -1 > "$SHOOTER_HOME/.tunnel_url"
535
+ if [ -f "$SHOOTER_HOME/.tunnel_url" ]; then
536
+ TUNNEL_URL="$(cat "$SHOOTER_HOME/.tunnel_url")"
537
+ success "Tunnel active: $TUNNEL_URL"
547
538
  break
548
539
  fi
549
540
  sleep 1
550
541
  waited=$((waited + 1))
551
542
  done
552
-
553
- if [ -f "$SHOOTER_HOME/.tunnel_url" ]; then
554
- TUNNEL_URL="$(cat "$SHOOTER_HOME/.tunnel_url")"
555
- success "Tunnel active: $TUNNEL_URL"
556
- else
557
- warn "Tunnel is starting in the background. Check 'shooter status' shortly."
543
+ if [ -z "$TUNNEL_URL" ]; then
544
+ info "Tunnel is starting in the background. Check 'shooter status' shortly."
558
545
  fi
559
546
  else
560
547
  info "No cloudflared found — server accessible on local network only."
@@ -622,14 +609,79 @@ main() {
622
609
  install_deps
623
610
  run_setup_wizard
624
611
 
625
- # Optional extras
626
- offer_global_command
612
+ # Optional extras — single prompt instead of 3 separate ones
613
+ step "Optional extras"
614
+ printf '\n'
615
+ printf ' The following are recommended:\n'
616
+ printf ' %s1.%s Global %sshooter%s command (run from anywhere)\n' "$BOLD" "$RESET" "$CYAN" "$RESET"
617
+ printf ' %s2.%s Cloudflare Tunnel (remote access from phone)\n' "$BOLD" "$RESET"
618
+ printf ' %s3.%s Autostart on login\n' "$BOLD" "$RESET"
619
+ printf '\n'
620
+
621
+ if ask_yes_no " Install all recommended extras?" "y"; then
622
+ # Global command
623
+ BIN_DIR="$HOME/.local/bin"
624
+ SHOOTER_BIN="$BIN_DIR/shooter"
625
+ if [ ! -x "$SHOOTER_BIN" ]; then
626
+ mkdir -p "$BIN_DIR"
627
+ if [ -d "$SHOOTER_BIN" ]; then
628
+ error "$SHOOTER_BIN exists as a directory. Remove it and re-run."
629
+ exit 1
630
+ fi
631
+ ln -sf "$SHOOTER_REPO/bin/shooter.cjs" "$SHOOTER_BIN"
632
+ chmod +x "$SHOOTER_BIN"
633
+ success "'shooter' command linked to $SHOOTER_BIN"
634
+ case ":$PATH:" in
635
+ *":$BIN_DIR:"*) ;;
636
+ *)
637
+ warn "$BIN_DIR is not in your PATH."
638
+ info "Add this to your shell profile (~/.bashrc, ~/.zshrc, etc.):"
639
+ info " export PATH=\"\$HOME/.local/bin:\$PATH\""
640
+
641
+ # Attempt to auto-configure PATH in shell profile
642
+ SHELL_NAME=$(basename "$SHELL")
643
+ case "$SHELL_NAME" in
644
+ bash)
645
+ RC_FILE="$HOME/.bashrc"
646
+ [ -f "$HOME/.bash_profile" ] && RC_FILE="$HOME/.bash_profile"
647
+ ;;
648
+ zsh)
649
+ RC_FILE="$HOME/.zshrc"
650
+ ;;
651
+ fish)
652
+ RC_FILE="$HOME/.config/fish/config.fish"
653
+ ;;
654
+ *)
655
+ RC_FILE=""
656
+ ;;
657
+ esac
658
+
659
+ if [ -n "$RC_FILE" ] && [ -f "$RC_FILE" ]; then
660
+ if ! grep -q '\.local/bin' "$RC_FILE" 2>/dev/null; then
661
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$RC_FILE"
662
+ success "Added ~/.local/bin to $RC_FILE"
663
+ info "Run 'source $RC_FILE' or start a new terminal to use the 'shooter' command."
664
+ fi
665
+ fi
666
+ ;;
667
+ esac
668
+ else
669
+ success "'shooter' command already linked."
670
+ fi
671
+
672
+ # Cloudflare Tunnel
673
+ install_cloudflared
627
674
 
628
- # Cloudflare Tunnel
629
- install_cloudflared
675
+ # Autostart
676
+ enable_autostart
677
+ else
678
+ info "Skipped extras. You can add them later:"
679
+ info " Global command: ln -sf $SHOOTER_REPO/bin/shooter.cjs ~/.local/bin/shooter"
680
+ info " Cloudflare: brew install cloudflared (or see docs)"
681
+ info " Autostart: shooter autostart on"
682
+ fi
630
683
 
631
- # Autostart + launch
632
- enable_autostart
684
+ # Start server + tunnel
633
685
  start_server_and_tunnel
634
686
 
635
687
  # Done