@juspay/shooter 1.0.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 (327) hide show
  1. package/.claude/hooks/notifier.cjs +1431 -0
  2. package/.claude/settings.json +162 -0
  3. package/README.md +515 -0
  4. package/bin/shooter.cjs +141 -0
  5. package/build/client/_app/immutable/assets/0.CM9Hl6d-.css +1 -0
  6. package/build/client/_app/immutable/assets/0.CM9Hl6d-.css.br +0 -0
  7. package/build/client/_app/immutable/assets/0.CM9Hl6d-.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/2.CAShZ7lQ.css +1 -0
  9. package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.br +1 -0
  10. package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/3.C0uFg0IS.css +1 -0
  12. package/build/client/_app/immutable/assets/3.C0uFg0IS.css.br +0 -0
  13. package/build/client/_app/immutable/assets/3.C0uFg0IS.css.gz +0 -0
  14. package/build/client/_app/immutable/assets/4.cJuCkJKZ.css +1 -0
  15. package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.br +0 -0
  16. package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.gz +0 -0
  17. package/build/client/_app/immutable/assets/5.DRjApZQW.css +1 -0
  18. package/build/client/_app/immutable/assets/5.DRjApZQW.css.br +0 -0
  19. package/build/client/_app/immutable/assets/5.DRjApZQW.css.gz +0 -0
  20. package/build/client/_app/immutable/assets/6.AraZrY8I.css +1 -0
  21. package/build/client/_app/immutable/assets/6.AraZrY8I.css.br +0 -0
  22. package/build/client/_app/immutable/assets/6.AraZrY8I.css.gz +0 -0
  23. package/build/client/_app/immutable/assets/7.BCJ1IuMx.css +1 -0
  24. package/build/client/_app/immutable/assets/7.BCJ1IuMx.css.br +0 -0
  25. package/build/client/_app/immutable/assets/7.BCJ1IuMx.css.gz +0 -0
  26. package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css +1 -0
  27. package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.br +0 -0
  28. package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.gz +0 -0
  29. package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css +1 -0
  30. package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css.br +0 -0
  31. package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css.gz +0 -0
  32. package/build/client/_app/immutable/assets/xterm.DFuMZ0ql.css +1 -0
  33. package/build/client/_app/immutable/assets/xterm.DFuMZ0ql.css.br +0 -0
  34. package/build/client/_app/immutable/assets/xterm.DFuMZ0ql.css.gz +0 -0
  35. package/build/client/_app/immutable/chunks/BNJphC1q.js +56 -0
  36. package/build/client/_app/immutable/chunks/BNJphC1q.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/BNJphC1q.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/BTGVxaYV.js +9 -0
  39. package/build/client/_app/immutable/chunks/BTGVxaYV.js.br +0 -0
  40. package/build/client/_app/immutable/chunks/BTGVxaYV.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/BlxrFPDK.js +1 -0
  42. package/build/client/_app/immutable/chunks/BlxrFPDK.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/BlxrFPDK.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/Bvk7mfPM.js +1 -0
  45. package/build/client/_app/immutable/chunks/Bvk7mfPM.js.br +0 -0
  46. package/build/client/_app/immutable/chunks/Bvk7mfPM.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/CAokzuPQ.js +1 -0
  48. package/build/client/_app/immutable/chunks/CAokzuPQ.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/CAokzuPQ.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/CGLrx-H5.js +1 -0
  51. package/build/client/_app/immutable/chunks/CGLrx-H5.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/CGLrx-H5.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/CgCpWzEA.js +1 -0
  54. package/build/client/_app/immutable/chunks/CgCpWzEA.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/CgCpWzEA.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/Cjwk_cGO.js +6 -0
  57. package/build/client/_app/immutable/chunks/Cjwk_cGO.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/Cjwk_cGO.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/CtQ8EED1.js +11 -0
  60. package/build/client/_app/immutable/chunks/CtQ8EED1.js.br +0 -0
  61. package/build/client/_app/immutable/chunks/CtQ8EED1.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/DERQCisl.js +1 -0
  63. package/build/client/_app/immutable/chunks/DERQCisl.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/DERQCisl.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/DKrg8TQs.js +1 -0
  66. package/build/client/_app/immutable/chunks/DKrg8TQs.js.br +0 -0
  67. package/build/client/_app/immutable/chunks/DKrg8TQs.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/DLu6yJIZ.js +1 -0
  69. package/build/client/_app/immutable/chunks/DLu6yJIZ.js.br +0 -0
  70. package/build/client/_app/immutable/chunks/DLu6yJIZ.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/Dkkpz_4D.js +126 -0
  72. package/build/client/_app/immutable/chunks/Dkkpz_4D.js.br +0 -0
  73. package/build/client/_app/immutable/chunks/Dkkpz_4D.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/DoczjQhA.js +1 -0
  75. package/build/client/_app/immutable/chunks/DoczjQhA.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/DoczjQhA.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/PPVm8Dsz.js +1 -0
  78. package/build/client/_app/immutable/chunks/PPVm8Dsz.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/PPVm8Dsz.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/RpcNruLP.js +2 -0
  81. package/build/client/_app/immutable/chunks/RpcNruLP.js.br +0 -0
  82. package/build/client/_app/immutable/chunks/RpcNruLP.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/a-St0Zwo.js +1 -0
  84. package/build/client/_app/immutable/chunks/a-St0Zwo.js.br +0 -0
  85. package/build/client/_app/immutable/chunks/a-St0Zwo.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/bo70OQUZ.js +1 -0
  87. package/build/client/_app/immutable/chunks/bo70OQUZ.js.br +0 -0
  88. package/build/client/_app/immutable/chunks/bo70OQUZ.js.gz +0 -0
  89. package/build/client/_app/immutable/entry/app.QvGgdvTI.js +2 -0
  90. package/build/client/_app/immutable/entry/app.QvGgdvTI.js.br +0 -0
  91. package/build/client/_app/immutable/entry/app.QvGgdvTI.js.gz +0 -0
  92. package/build/client/_app/immutable/entry/start.BntDNRMC.js +1 -0
  93. package/build/client/_app/immutable/entry/start.BntDNRMC.js.br +0 -0
  94. package/build/client/_app/immutable/entry/start.BntDNRMC.js.gz +0 -0
  95. package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js +1 -0
  96. package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js.br +0 -0
  97. package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js.gz +0 -0
  98. package/build/client/_app/immutable/nodes/1.MG1QhfrI.js +1 -0
  99. package/build/client/_app/immutable/nodes/1.MG1QhfrI.js.br +0 -0
  100. package/build/client/_app/immutable/nodes/1.MG1QhfrI.js.gz +0 -0
  101. package/build/client/_app/immutable/nodes/2.B4MlOSh6.js +1 -0
  102. package/build/client/_app/immutable/nodes/2.B4MlOSh6.js.br +0 -0
  103. package/build/client/_app/immutable/nodes/2.B4MlOSh6.js.gz +0 -0
  104. package/build/client/_app/immutable/nodes/3.DIwYkjDn.js +3 -0
  105. package/build/client/_app/immutable/nodes/3.DIwYkjDn.js.br +0 -0
  106. package/build/client/_app/immutable/nodes/3.DIwYkjDn.js.gz +0 -0
  107. package/build/client/_app/immutable/nodes/4.D-cIe70D.js +1 -0
  108. package/build/client/_app/immutable/nodes/4.D-cIe70D.js.br +0 -0
  109. package/build/client/_app/immutable/nodes/4.D-cIe70D.js.gz +0 -0
  110. package/build/client/_app/immutable/nodes/5.D7zPRe3L.js +1 -0
  111. package/build/client/_app/immutable/nodes/5.D7zPRe3L.js.br +0 -0
  112. package/build/client/_app/immutable/nodes/5.D7zPRe3L.js.gz +0 -0
  113. package/build/client/_app/immutable/nodes/6.BB7QE48r.js +2 -0
  114. package/build/client/_app/immutable/nodes/6.BB7QE48r.js.br +0 -0
  115. package/build/client/_app/immutable/nodes/6.BB7QE48r.js.gz +0 -0
  116. package/build/client/_app/immutable/nodes/7.D8mqsrZG.js +2 -0
  117. package/build/client/_app/immutable/nodes/7.D8mqsrZG.js.br +0 -0
  118. package/build/client/_app/immutable/nodes/7.D8mqsrZG.js.gz +0 -0
  119. package/build/client/_app/version.json +1 -0
  120. package/build/client/_app/version.json.br +0 -0
  121. package/build/client/_app/version.json.gz +0 -0
  122. package/build/client/app-icon.png +0 -0
  123. package/build/client/apple-touch-icon.png +0 -0
  124. package/build/client/favicon.png +0 -0
  125. package/build/client/favicon.svg +10 -0
  126. package/build/client/favicon.svg.br +0 -0
  127. package/build/client/favicon.svg.gz +0 -0
  128. package/build/client/manifest.webmanifest +1 -0
  129. package/build/client/pwa-192x192.png +0 -0
  130. package/build/client/pwa-512x512.png +0 -0
  131. package/build/client/registerSW.js +1 -0
  132. package/build/client/registerSW.js.br +0 -0
  133. package/build/client/registerSW.js.gz +0 -0
  134. package/build/client/sw.js +222 -0
  135. package/build/client/sw.js.br +0 -0
  136. package/build/client/sw.js.gz +0 -0
  137. package/build/client/workbox-5119daf5.js +3395 -0
  138. package/build/client/workbox-5119daf5.js.br +0 -0
  139. package/build/client/workbox-5119daf5.js.gz +0 -0
  140. package/build/env.js +94 -0
  141. package/build/handler.js +1494 -0
  142. package/build/index.js +345 -0
  143. package/build/pty-holder.cjs +510 -0
  144. package/build/server/chunks/0-q2IUp76Y.js +9 -0
  145. package/build/server/chunks/0-q2IUp76Y.js.map +1 -0
  146. package/build/server/chunks/1-CU50G5wZ.js +9 -0
  147. package/build/server/chunks/1-CU50G5wZ.js.map +1 -0
  148. package/build/server/chunks/2-D01t9s8T.js +9 -0
  149. package/build/server/chunks/2-D01t9s8T.js.map +1 -0
  150. package/build/server/chunks/3-5PUQ04wC.js +9 -0
  151. package/build/server/chunks/3-5PUQ04wC.js.map +1 -0
  152. package/build/server/chunks/4-e7gywnSG.js +9 -0
  153. package/build/server/chunks/4-e7gywnSG.js.map +1 -0
  154. package/build/server/chunks/5-CA1SA6KZ.js +9 -0
  155. package/build/server/chunks/5-CA1SA6KZ.js.map +1 -0
  156. package/build/server/chunks/6-71H221sV.js +9 -0
  157. package/build/server/chunks/6-71H221sV.js.map +1 -0
  158. package/build/server/chunks/7-Bo-vmdyz.js +9 -0
  159. package/build/server/chunks/7-Bo-vmdyz.js.map +1 -0
  160. package/build/server/chunks/_layout.svelte-SFHOxs74.js +132 -0
  161. package/build/server/chunks/_layout.svelte-SFHOxs74.js.map +1 -0
  162. package/build/server/chunks/_page.svelte-B4w-2wD-.js +120 -0
  163. package/build/server/chunks/_page.svelte-B4w-2wD-.js.map +1 -0
  164. package/build/server/chunks/_page.svelte-B_qAXjkh.js +213 -0
  165. package/build/server/chunks/_page.svelte-B_qAXjkh.js.map +1 -0
  166. package/build/server/chunks/_page.svelte-CsF1_TRG.js +50 -0
  167. package/build/server/chunks/_page.svelte-CsF1_TRG.js.map +1 -0
  168. package/build/server/chunks/_page.svelte-DJC6U-P0.js +68 -0
  169. package/build/server/chunks/_page.svelte-DJC6U-P0.js.map +1 -0
  170. package/build/server/chunks/_page.svelte-DQ6HBtsz.js +407 -0
  171. package/build/server/chunks/_page.svelte-DQ6HBtsz.js.map +1 -0
  172. package/build/server/chunks/_page.svelte-LbhhjP21.js +148 -0
  173. package/build/server/chunks/_page.svelte-LbhhjP21.js.map +1 -0
  174. package/build/server/chunks/_server.ts-BL2FGb5Z.js +387 -0
  175. package/build/server/chunks/_server.ts-BL2FGb5Z.js.map +1 -0
  176. package/build/server/chunks/_server.ts-BgdjBZco.js +47 -0
  177. package/build/server/chunks/_server.ts-BgdjBZco.js.map +1 -0
  178. package/build/server/chunks/_server.ts-BihKSdj_.js +59 -0
  179. package/build/server/chunks/_server.ts-BihKSdj_.js.map +1 -0
  180. package/build/server/chunks/_server.ts-BjOJsoy4.js +63 -0
  181. package/build/server/chunks/_server.ts-BjOJsoy4.js.map +1 -0
  182. package/build/server/chunks/_server.ts-C29xzfaw.js +77 -0
  183. package/build/server/chunks/_server.ts-C29xzfaw.js.map +1 -0
  184. package/build/server/chunks/_server.ts-CPa6DgIt.js +71 -0
  185. package/build/server/chunks/_server.ts-CPa6DgIt.js.map +1 -0
  186. package/build/server/chunks/_server.ts-CbDRDIoP.js +36 -0
  187. package/build/server/chunks/_server.ts-CbDRDIoP.js.map +1 -0
  188. package/build/server/chunks/_server.ts-Cl1OEWL4.js +54 -0
  189. package/build/server/chunks/_server.ts-Cl1OEWL4.js.map +1 -0
  190. package/build/server/chunks/_server.ts-ColfDHW8.js +60 -0
  191. package/build/server/chunks/_server.ts-ColfDHW8.js.map +1 -0
  192. package/build/server/chunks/_server.ts-Cv_OrRuL.js +494 -0
  193. package/build/server/chunks/_server.ts-Cv_OrRuL.js.map +1 -0
  194. package/build/server/chunks/_server.ts-D4MNi4cD.js +25 -0
  195. package/build/server/chunks/_server.ts-D4MNi4cD.js.map +1 -0
  196. package/build/server/chunks/_server.ts-DRVbgm6k.js +125 -0
  197. package/build/server/chunks/_server.ts-DRVbgm6k.js.map +1 -0
  198. package/build/server/chunks/_server.ts-DfajWaqh.js +39 -0
  199. package/build/server/chunks/_server.ts-DfajWaqh.js.map +1 -0
  200. package/build/server/chunks/_server.ts-y9-WYDMa.js +35 -0
  201. package/build/server/chunks/_server.ts-y9-WYDMa.js.map +1 -0
  202. package/build/server/chunks/auth-CEgFis71.js +32 -0
  203. package/build/server/chunks/auth-CEgFis71.js.map +1 -0
  204. package/build/server/chunks/client-CxCatAKr.js +255 -0
  205. package/build/server/chunks/client-CxCatAKr.js.map +1 -0
  206. package/build/server/chunks/error.svelte-BqdwMWdK.js +26 -0
  207. package/build/server/chunks/error.svelte-BqdwMWdK.js.map +1 -0
  208. package/build/server/chunks/exports-CJ0Q5XmL.js +4081 -0
  209. package/build/server/chunks/exports-CJ0Q5XmL.js.map +1 -0
  210. package/build/server/chunks/index2-DAxIoAO-.js +36 -0
  211. package/build/server/chunks/index2-DAxIoAO-.js.map +1 -0
  212. package/build/server/chunks/jsonl-parser-dmZU_Hyu.js +137 -0
  213. package/build/server/chunks/jsonl-parser-dmZU_Hyu.js.map +1 -0
  214. package/build/server/chunks/library-apns-BHxLmuIx.js +104 -0
  215. package/build/server/chunks/library-apns-BHxLmuIx.js.map +1 -0
  216. package/build/server/chunks/markdown-Bxrl3cCF.js +1241 -0
  217. package/build/server/chunks/markdown-Bxrl3cCF.js.map +1 -0
  218. package/build/server/chunks/pending-requests-D8UiTw7L.js +44 -0
  219. package/build/server/chunks/pending-requests-D8UiTw7L.js.map +1 -0
  220. package/build/server/chunks/pty-manager-C0FhBiVq.js +1697 -0
  221. package/build/server/chunks/pty-manager-C0FhBiVq.js.map +1 -0
  222. package/build/server/chunks/shared-server-BDY8jh20.js +200 -0
  223. package/build/server/chunks/shared-server-BDY8jh20.js.map +1 -0
  224. package/build/server/chunks/stores-D0HorpgL.js +36 -0
  225. package/build/server/chunks/stores-D0HorpgL.js.map +1 -0
  226. package/build/server/index.js +6466 -0
  227. package/build/server/index.js.map +1 -0
  228. package/build/server/manifest.js +184 -0
  229. package/build/server/manifest.js.map +1 -0
  230. package/build/shims.js +32 -0
  231. package/package.json +94 -0
  232. package/scripts/clipboard-shims/wl-paste +48 -0
  233. package/scripts/clipboard-shims/xclip +31 -0
  234. package/scripts/install.sh +477 -0
  235. package/scripts/setup-node-pty.sh +63 -0
  236. package/scripts/setup.cjs +571 -0
  237. package/scripts/test-runner.ts +243 -0
  238. package/scripts/vercel-env-commands.sh +60 -0
  239. package/server.ts +139 -0
  240. package/src/app.css +1835 -0
  241. package/src/app.d.ts +31 -0
  242. package/src/app.html +24 -0
  243. package/src/generated/types/APN.ts +305 -0
  244. package/src/generated/types/CLI.ts +52 -0
  245. package/src/generated/types/JWT.ts +92 -0
  246. package/src/generated/types/Terminal.ts +2736 -0
  247. package/src/generated/types/index.ts +6 -0
  248. package/src/lib/assets/icons/alert-triangle.svg +5 -0
  249. package/src/lib/assets/icons/bell.svg +4 -0
  250. package/src/lib/assets/icons/check-circle.svg +4 -0
  251. package/src/lib/assets/icons/file.svg +4 -0
  252. package/src/lib/assets/icons/folder.svg +3 -0
  253. package/src/lib/assets/icons/play.svg +3 -0
  254. package/src/lib/assets/icons/refresh.svg +4 -0
  255. package/src/lib/assets/icons/settings.svg +4 -0
  256. package/src/lib/assets/icons/terminal.svg +1 -0
  257. package/src/lib/assets/icons/tool.svg +3 -0
  258. package/src/lib/assets/icons/x-circle.svg +5 -0
  259. package/src/lib/modules/client/common/Card.svelte +26 -0
  260. package/src/lib/modules/client/common/EmptyState.svelte +36 -0
  261. package/src/lib/modules/client/common/Icon.svelte +61 -0
  262. package/src/lib/modules/client/common/StatusBadge.svelte +38 -0
  263. package/src/lib/modules/client/common/cache.ts +31 -0
  264. package/src/lib/modules/client/common/config-guard.ts +18 -0
  265. package/src/lib/modules/client/common/index.ts +12 -0
  266. package/src/lib/modules/client/common/markdown.ts +23 -0
  267. package/src/lib/modules/client/common/native-bridge.ts +50 -0
  268. package/src/lib/modules/client/common/time.ts +22 -0
  269. package/src/lib/modules/client/common/tool-title.ts +28 -0
  270. package/src/lib/modules/client/terminal/ChatView.svelte +400 -0
  271. package/src/lib/modules/client/terminal/CommandPalette.svelte +60 -0
  272. package/src/lib/modules/client/terminal/ConnectionStatus.svelte +99 -0
  273. package/src/lib/modules/client/terminal/LaunchSheet.svelte +294 -0
  274. package/src/lib/modules/client/terminal/QuickKeys.svelte +71 -0
  275. package/src/lib/modules/client/terminal/ShortcutsHelp.svelte +79 -0
  276. package/src/lib/modules/client/terminal/keyboard-shortcuts.ts +70 -0
  277. package/src/lib/modules/client/terminal/xterm-wrapper.ts +243 -0
  278. package/src/lib/modules/server/apn/library-apns.ts +137 -0
  279. package/src/lib/modules/server/apn/notification-history.ts +35 -0
  280. package/src/lib/modules/server/apn/notification-sessions.ts +117 -0
  281. package/src/lib/modules/server/apn/pending-requests.ts +65 -0
  282. package/src/lib/modules/server/apn/types.ts +51 -0
  283. package/src/lib/modules/server/auth.ts +34 -0
  284. package/src/lib/modules/server/cli/index.ts +79 -0
  285. package/src/lib/modules/server/cli/runner.ts +162 -0
  286. package/src/lib/modules/server/fcm/fcm-service.ts +72 -0
  287. package/src/lib/modules/server/sessions/jsonl-parser.ts +197 -0
  288. package/src/lib/modules/server/sessions/jsonl-reader.ts +301 -0
  289. package/src/lib/modules/server/sessions/opencode-reader.ts +264 -0
  290. package/src/lib/modules/server/sessions/types.ts +53 -0
  291. package/src/lib/modules/server/terminal/holder-client.ts +273 -0
  292. package/src/lib/modules/server/terminal/opencode-watcher.ts +661 -0
  293. package/src/lib/modules/server/terminal/pty-holder.cjs +510 -0
  294. package/src/lib/modules/server/terminal/pty-manager.ts +1012 -0
  295. package/src/lib/modules/server/terminal/session-watcher.ts +320 -0
  296. package/src/lib/modules/server/terminal/terminal-store.ts +198 -0
  297. package/src/lib/modules/server/ws/events-handler.ts +73 -0
  298. package/src/lib/modules/server/ws/keepalive.ts +108 -0
  299. package/src/lib/modules/server/ws/server.ts +93 -0
  300. package/src/lib/modules/server/ws/session-handler.ts +462 -0
  301. package/src/lib/modules/server/ws/terminal-handler.ts +197 -0
  302. package/src/lib/modules/server/ws/ticket-store.ts +58 -0
  303. package/src/lib/theme.css +529 -0
  304. package/src/lib/types/config.ts +6 -0
  305. package/src/routes/+layout.svelte +218 -0
  306. package/src/routes/+page.svelte +261 -0
  307. package/src/routes/api/debug/+server.ts +33 -0
  308. package/src/routes/api/device-token/+server.ts +85 -0
  309. package/src/routes/api/health/+server.ts +100 -0
  310. package/src/routes/api/notify/+server.ts +418 -0
  311. package/src/routes/api/qr-config/+server.ts +45 -0
  312. package/src/routes/api/response/+server.ts +73 -0
  313. package/src/routes/api/sessions/+server.ts +120 -0
  314. package/src/routes/api/terminals/+server.ts +141 -0
  315. package/src/routes/api/terminals/[id]/+server.ts +75 -0
  316. package/src/routes/api/terminals/[id]/paste-image/+server.ts +61 -0
  317. package/src/routes/api/terminals/[id]/resize/+server.ts +60 -0
  318. package/src/routes/api/webhook/+server.ts +42 -0
  319. package/src/routes/api/ws-status/+server.ts +23 -0
  320. package/src/routes/api/ws-ticket/+server.ts +86 -0
  321. package/src/routes/config/+page.svelte +600 -0
  322. package/src/routes/project/+page.svelte +274 -0
  323. package/src/routes/session/[id]/+page.svelte +434 -0
  324. package/src/routes/terminals/+page.svelte +618 -0
  325. package/src/routes/terminals/[id]/+page.svelte +968 -0
  326. package/svelte.config.js +18 -0
  327. package/tsconfig.json +14 -0
@@ -0,0 +1,529 @@
1
+ /*
2
+ * Theme: Geist Dark → @juspay/svelte-ui-components
3
+ *
4
+ * Maps the project's Geist Design System dark-mode tokens
5
+ * to the CSS custom properties consumed by library components.
6
+ *
7
+ * This is the initial skeleton. Each component migration story
8
+ * will refine and extend the variables relevant to that component.
9
+ */
10
+
11
+ :root {
12
+ /* ===== Button ===== */
13
+ --button-font-family: var(--font-sans);
14
+ --button-font-size: var(--text-sm);
15
+ --button-font-weight: 500;
16
+ --button-color: var(--ds-blue-700);
17
+ --button-text-color: #fff;
18
+ --button-padding: 8px 16px;
19
+ --button-border-radius: var(--radius-md);
20
+ --button-border: 1px solid transparent;
21
+ --button-hover-color: var(--ds-blue-900);
22
+ --button-hover-text-color: #fff;
23
+ --button-content-gap: 8px;
24
+
25
+ /* ===== Input ===== */
26
+ --input-background: var(--ds-gray-100);
27
+ --input-font-family: var(--font-sans);
28
+ --input-font-size: var(--text-base);
29
+ --input-font-weight: 400;
30
+ --input-radius: var(--radius-md);
31
+ --input-padding: 10px 12px;
32
+ --input-height: 40px;
33
+ --input-width: 100%;
34
+ --input-margin: 0;
35
+ --input-box-shadow: none;
36
+ --input-border: 1px solid var(--border);
37
+ --input-focus-border: 1px solid var(--ds-blue-700);
38
+ --input-text-color: var(--text-primary);
39
+ --input-placeholder-color: var(--text-tertiary);
40
+ --input-label-msg-text-color: var(--text-secondary);
41
+ --input-label-msg-text-size: var(--text-sm);
42
+ --input-label-msg-text-weight: 400;
43
+ --input-label-msg-margin: 0 0 var(--space-2) 0;
44
+ --input-error-msg-text-color: var(--ds-red-700);
45
+ --input-error-msg-text-size: var(--text-xs);
46
+ --input-info-msg-text-color: var(--text-tertiary);
47
+ --input-info-msg-text-size: var(--text-xs);
48
+ --input-info-msg-margin: var(--space-2) 0 0 0;
49
+ --input-container-margin: 0 0 var(--space-5) 0;
50
+
51
+ /* ===== Banner (replaces Alert) ===== */
52
+ --banner-background: var(--ds-gray-100);
53
+ --banner-color: var(--text-secondary);
54
+ --banner-font-family: var(--font-sans);
55
+ --banner-font-size: var(--text-sm);
56
+ --banner-font-weight: 500;
57
+ --banner-padding: 12px 16px;
58
+ --banner-gap: 10px;
59
+ --banner-justify-content: flex-start;
60
+ --banner-icon-size: 16px;
61
+ --banner-link-color: var(--ds-blue-900);
62
+ --banner-cursor: default;
63
+ --banner-position: relative;
64
+ --banner-z-index: auto;
65
+ --banner-dismiss-hover-background: var(--ds-gray-alpha-200);
66
+ --banner-dismiss-color: var(--text-tertiary);
67
+
68
+ /* ===== Pill (replaces Tag) ===== */
69
+ --pill-background: var(--ds-gray-300);
70
+ --pill-color: var(--text-secondary);
71
+ --pill-font-family: var(--font-sans);
72
+ --pill-font-size: var(--text-xs);
73
+ --pill-font-weight: 500;
74
+ --pill-padding: 4px 10px;
75
+ --pill-border-radius: var(--radius-full);
76
+ --pill-border: none;
77
+ --pill-hover-background: var(--ds-gray-400);
78
+ --pill-hover-color: var(--text-primary);
79
+
80
+ /* ===== Badge ===== */
81
+ --badge-background: var(--ds-gray-500);
82
+ --badge-color: #fff;
83
+ --badge-font-family: var(--font-sans);
84
+ --badge-font-size: var(--text-xs);
85
+ --badge-padding: 2px 6px;
86
+ --badge-border-radius: var(--radius-full);
87
+ --badge-border: none;
88
+ --badge-wrap-margin: 0;
89
+ --badge-wrap-padding: 0;
90
+ --badge-img-width: 24px;
91
+ --badge-img-height: 24px;
92
+ --badge-img-border-radius: var(--radius-sm);
93
+ --badge-img-icon-shadow: none;
94
+ --badge-min-width: 6px;
95
+ --badge-min-height: 6px;
96
+
97
+ /* ===== Tabs ===== */
98
+ --tabs-bar-background: transparent;
99
+ --tabs-bar-padding: 0;
100
+ --tabs-bar-gap: 0;
101
+ --tabs-bar-border-bottom: 1px solid var(--border);
102
+ --tabs-item-padding: 10px 16px;
103
+ --tabs-item-font-size: var(--text-sm);
104
+ --tabs-item-font-weight: 500;
105
+ --tabs-item-font-family: var(--font-sans);
106
+ --tabs-item-color: var(--text-tertiary);
107
+ --tabs-item-background: transparent;
108
+ --tabs-active-color: var(--text-primary);
109
+ --tabs-active-font-weight: 600;
110
+ --tabs-indicator-color: var(--ds-blue-700);
111
+ --tabs-indicator-height: 2px;
112
+ --tabs-hover-color: var(--text-secondary);
113
+ --tabs-hover-background: var(--ds-gray-alpha-100);
114
+ --tabs-transition: color 150ms ease, background 150ms ease;
115
+
116
+ /* ===== Sheet ===== */
117
+ --sheet-overlay-background: rgba(0, 0, 0, 0.6);
118
+ --sheet-background: var(--ds-gray-100);
119
+ --sheet-box-shadow: -4px 0 16px rgba(0, 0, 0, 0.3);
120
+ --sheet-border: none;
121
+ --sheet-header-padding: 16px 20px;
122
+ --sheet-header-background: var(--ds-gray-100);
123
+ --sheet-header-border-bottom: 1px solid var(--border);
124
+ --sheet-title-font-size: var(--text-lg);
125
+ --sheet-title-font-weight: 600;
126
+ --sheet-title-font-family: var(--font-sans);
127
+ --sheet-title-color: var(--text-primary);
128
+ --sheet-close-button-color: var(--text-tertiary);
129
+ --sheet-close-button-hover-background: var(--ds-gray-300);
130
+ --sheet-content-padding: 20px;
131
+ --sheet-footer-padding: 16px 20px;
132
+ --sheet-footer-background: var(--ds-gray-100);
133
+ --sheet-footer-border-top: 1px solid var(--border);
134
+
135
+ /* ===== Select ===== */
136
+ --select-bgcolor: var(--ds-gray-100);
137
+ --select-font-family: var(--font-sans);
138
+ --select-font-size: var(--text-base);
139
+ --select-radius: var(--radius-md);
140
+ --select-box-shadow: none;
141
+ --select-border: 1px solid var(--border);
142
+ --select-color: var(--text-primary);
143
+ --select-hover-color: var(--text-primary);
144
+ --select-hover-bgcolor: var(--ds-gray-200);
145
+ --item-padding: 10px 12px;
146
+ --item-background-color: var(--ds-gray-100);
147
+ --non-selected-hover-bg: var(--ds-gray-200);
148
+ --non-selected-hover-color: var(--text-primary);
149
+ --non-selected-item-bgcolor: var(--ds-gray-100);
150
+ --non-selected-item-color: var(--text-secondary);
151
+ --non-selected-items-border-radius: var(--radius-md);
152
+ --selected-item-background-color: var(--ds-gray-200);
153
+ --selected-item-padding: 10px 12px;
154
+ --selected-color: var(--text-primary);
155
+ --selected-hover-bg: var(--ds-gray-200);
156
+ --label-text-color: var(--text-secondary);
157
+ --label-text-size: var(--text-xs);
158
+ --label-text-weight: 500;
159
+
160
+ /* ===== Shimmer ===== */
161
+ --shimmer-background: var(--ds-gray-200);
162
+ --shimmer-highlight: rgba(255, 255, 255, 0.04);
163
+ --shimmer-border-radius: var(--radius-md);
164
+ --shimmer-duration: 1.5s;
165
+
166
+ /* ===== Avatar ===== */
167
+ --avatar-background: var(--ds-gray-300);
168
+ --avatar-text-color: var(--text-secondary);
169
+ --avatar-font-family: var(--font-sans);
170
+ --avatar-border: none;
171
+ --avatar-small-width: 28px;
172
+ --avatar-small-height: 28px;
173
+ --avatar-medium-width: 36px;
174
+ --avatar-medium-height: 36px;
175
+ --avatar-large-width: 48px;
176
+ --avatar-large-height: 48px;
177
+ --avatar-small-font-size: 11px;
178
+ --avatar-medium-font-size: 13px;
179
+ --avatar-large-font-size: 18px;
180
+
181
+ /* ===== Choicebox ===== */
182
+ --choicebox-background: var(--ds-gray-100);
183
+ --choicebox-border: 2px solid var(--border);
184
+ --choicebox-border-radius: var(--radius-lg);
185
+ --choicebox-padding: 16px;
186
+ --choicebox-gap: 12px;
187
+ --choicebox-hover-border-color: var(--border-hover);
188
+ --choicebox-hover-background: var(--ds-gray-200);
189
+ --choicebox-selected-border-color: var(--ds-blue-700);
190
+ --choicebox-selected-background: var(--ds-blue-100);
191
+ --choicebox-title-color: var(--text-primary);
192
+ --choicebox-title-font-size: var(--text-base);
193
+ --choicebox-title-font-weight: 500;
194
+ --choicebox-title-font-family: var(--font-sans);
195
+ --choicebox-description-color: var(--text-tertiary);
196
+ --choicebox-description-font-size: var(--text-sm);
197
+ --choicebox-indicator-border: 2px solid var(--ds-gray-500);
198
+ --choicebox-indicator-selected-color: var(--ds-blue-700);
199
+ --choicebox-focus-ring: 0 0 0 3px rgba(0, 112, 243, 0.2);
200
+
201
+ /* ===== Toast ===== */
202
+ --toast-font-family: var(--font-sans);
203
+ --toast-font-size: var(--text-sm);
204
+ --toast-border-radius: var(--radius-lg);
205
+ --toast-padding: 12px 16px;
206
+ --toast-background-color: var(--ds-gray-200);
207
+ --toast-z-index: 1000;
208
+ --toast-success-background-color: var(--ds-green-100);
209
+ --toast-success-text: var(--ds-green-900);
210
+ --toast-error-background-color: var(--ds-red-100);
211
+ --toast-error-text: var(--ds-red-900);
212
+ --toast-info-background-color: var(--ds-blue-100);
213
+ --toast-info-text: var(--ds-blue-900);
214
+ --toast-warn-background-color: var(--ds-amber-100);
215
+ --toast-warn-text: var(--ds-amber-900);
216
+
217
+ /* ===== Modal ===== */
218
+ --background-color: rgba(0, 0, 0, 0.6);
219
+ --modal-content-background-color: var(--ds-gray-100);
220
+ --modal-border-radius: var(--radius-xl);
221
+ --modal-scrollbar-width: none;
222
+ --modal-header-background-color: var(--ds-gray-100);
223
+ --modal-header-padding: 16px 20px;
224
+ --modal-header-border-bottom: 1px solid var(--border);
225
+ --modal-footer-background-color: var(--ds-gray-100);
226
+ --modal-footer-padding: 16px 20px;
227
+ --modal-footer-border-top: 1px solid var(--border);
228
+
229
+ /* ===== Avatar Variant Overrides ===== */
230
+ /* Defined here so library Avatar picks up dark-mode colors */
231
+
232
+ /* ===== Accordion ===== */
233
+ /* Accordion has minimal CSS vars — just expand + classes.
234
+ Theming is done on the wrapper you build around it. */
235
+ }
236
+
237
+ /* ===== Button Variant Classes ===== */
238
+ /* Library Button has NO variant/size props. Use classes prop + CSS vars. */
239
+
240
+ .btn-primary {
241
+ --button-color: var(--ds-gray-1000);
242
+ --button-text-color: var(--ds-background-100);
243
+ --button-border: 1px solid var(--ds-gray-1000);
244
+ --button-hover-color: #fff;
245
+ --button-hover-text-color: var(--ds-background-100);
246
+ --button-hover-border: 1px solid #fff;
247
+ }
248
+
249
+ .btn-secondary {
250
+ --button-color: var(--ds-background-100);
251
+ --button-text-color: var(--ds-gray-1000);
252
+ --button-border: 1px solid var(--ds-gray-400);
253
+ --button-hover-color: var(--ds-gray-100);
254
+ --button-hover-text-color: var(--ds-gray-1000);
255
+ --button-hover-border: 1px solid var(--ds-gray-400);
256
+ }
257
+
258
+ .btn-ghost {
259
+ --button-color: transparent;
260
+ --button-text-color: var(--ds-gray-1000);
261
+ --button-hover-color: var(--ds-gray-alpha-100);
262
+ --button-hover-text-color: var(--ds-gray-1000);
263
+ }
264
+
265
+ .btn-danger {
266
+ --button-color: #d93036;
267
+ --button-text-color: #fff;
268
+ --button-hover-color: #ff6166;
269
+ --button-hover-text-color: #fff;
270
+ }
271
+
272
+ .btn-warning {
273
+ --button-color: #ff990a;
274
+ --button-text-color: var(--ds-background-100);
275
+ --button-hover-color: #ffb224;
276
+ --button-hover-text-color: var(--ds-background-100);
277
+ }
278
+
279
+ .btn-sm {
280
+ --button-height: 32px;
281
+ --button-padding: 0 10px;
282
+ --button-font-size: var(--text-base);
283
+ }
284
+
285
+ .btn-lg {
286
+ --button-height: 48px;
287
+ --button-padding: 0 20px;
288
+ --button-font-size: var(--text-lg);
289
+ --button-border-radius: var(--radius-lg);
290
+ }
291
+
292
+ /* ===== Banner Variant Classes ===== */
293
+ /* Library Banner has no variant prop. Use classes prop + CSS vars for type-specific styling. */
294
+
295
+ .banner-alert {
296
+ border-radius: var(--radius-md);
297
+ }
298
+
299
+ .banner-success {
300
+ --banner-background: var(--ds-green-100);
301
+ --banner-color: var(--ds-green-900);
302
+ --banner-icon-color: var(--ds-green-900);
303
+
304
+ border-radius: var(--radius-md);
305
+ }
306
+
307
+ .banner-error {
308
+ --banner-background: var(--ds-red-100);
309
+ --banner-color: var(--ds-red-900);
310
+ --banner-icon-color: var(--ds-red-900);
311
+
312
+ border-radius: var(--radius-md);
313
+ }
314
+
315
+ .banner-warning {
316
+ --banner-background: var(--ds-amber-100);
317
+ --banner-color: var(--ds-amber-900);
318
+ --banner-icon-color: var(--ds-amber-900);
319
+
320
+ border-radius: var(--radius-md);
321
+ }
322
+
323
+ .banner-info {
324
+ --banner-background: var(--ds-blue-100);
325
+ --banner-color: var(--ds-blue-900);
326
+ --banner-icon-color: var(--ds-blue-900);
327
+
328
+ border-radius: var(--radius-md);
329
+ }
330
+
331
+ /* ===== Input Variant Classes ===== */
332
+
333
+ .input-mono {
334
+ --input-font-family: var(--font-mono);
335
+ --input-font-size: var(--text-sm);
336
+ }
337
+
338
+ /* ===== Avatar Variant Classes ===== */
339
+
340
+ .avatar-user {
341
+ --avatar-background: var(--ds-blue-100);
342
+ --avatar-text-color: var(--ds-blue-900);
343
+ }
344
+
345
+ .avatar-assistant {
346
+ --avatar-background: var(--ds-green-100);
347
+ --avatar-text-color: var(--ds-green-900);
348
+ }
349
+
350
+ .btn-remove {
351
+ --button-height: 24px;
352
+ --button-width: 24px;
353
+ --button-padding: 0;
354
+ --button-font-size: 16px;
355
+ --button-border-radius: var(--radius-sm);
356
+ }
357
+
358
+ /* ===== Pill Variant Classes ===== */
359
+
360
+ .pill-session-time {
361
+ --pill-background: var(--ds-green-100);
362
+ --pill-color: var(--ds-green-900);
363
+ --pill-font-size: var(--text-xs);
364
+ --pill-padding: 4px 10px;
365
+ --pill-hover-background: var(--ds-green-100);
366
+ --pill-hover-color: var(--ds-green-900);
367
+ --pill-cursor: inherit;
368
+ }
369
+
370
+ .pill-tool-name {
371
+ --pill-background: var(--ds-gray-300);
372
+ --pill-color: var(--text-primary);
373
+ --pill-font-size: var(--text-xs);
374
+ --pill-font-family: var(--font-mono);
375
+ --pill-padding: 2px 8px;
376
+ --pill-hover-background: var(--ds-gray-300);
377
+ --pill-cursor: inherit;
378
+ }
379
+
380
+ .pill-tool-success {
381
+ --pill-background: var(--ds-green-100);
382
+ --pill-color: var(--ds-green-900);
383
+ --pill-font-size: var(--text-xs);
384
+ --pill-padding: 2px 8px;
385
+ --pill-hover-background: var(--ds-green-100);
386
+ --pill-cursor: inherit;
387
+ }
388
+
389
+ .pill-tool-error {
390
+ --pill-background: var(--ds-red-100);
391
+ --pill-color: var(--ds-red-900);
392
+ --pill-font-size: var(--text-xs);
393
+ --pill-padding: 2px 8px;
394
+ --pill-hover-background: var(--ds-red-100);
395
+ --pill-cursor: inherit;
396
+ }
397
+
398
+ .pill-live {
399
+ --pill-background: rgba(34, 197, 94, 0.15);
400
+ --pill-color: #22c55e;
401
+ --pill-border: 1px solid rgba(34, 197, 94, 0.3);
402
+ --pill-font-size: 0.7rem;
403
+ --pill-padding: 2px 10px;
404
+ --pill-hover-background: rgba(34, 197, 94, 0.15);
405
+ --pill-hover-color: #22c55e;
406
+ --pill-cursor: default;
407
+ font-weight: 700;
408
+ letter-spacing: 0.05em;
409
+ }
410
+
411
+ .pill-badge-ai {
412
+ --pill-background: var(--ds-blue-100);
413
+ --pill-color: var(--ds-blue-900);
414
+ --pill-font-size: 9px;
415
+ --pill-padding: 2px 6px;
416
+ --pill-hover-background: var(--ds-blue-100);
417
+ --pill-cursor: inherit;
418
+ font-weight: 700;
419
+ letter-spacing: 0.05em;
420
+ }
421
+
422
+ .pill-badge-shell {
423
+ --pill-background: var(--ds-gray-300);
424
+ --pill-color: var(--text-secondary);
425
+ --pill-font-size: 9px;
426
+ --pill-padding: 2px 6px;
427
+ --pill-hover-background: var(--ds-gray-300);
428
+ --pill-cursor: inherit;
429
+ font-weight: 700;
430
+ letter-spacing: 0.05em;
431
+ }
432
+
433
+ .pill-badge-ended {
434
+ --pill-background: var(--ds-gray-alpha-200);
435
+ --pill-color: var(--text-tertiary);
436
+ --pill-font-size: 9px;
437
+ --pill-padding: 2px 6px;
438
+ --pill-hover-background: var(--ds-gray-alpha-200);
439
+ --pill-cursor: inherit;
440
+ font-weight: 700;
441
+ letter-spacing: 0.05em;
442
+ }
443
+
444
+ .pill-exit-ok {
445
+ --pill-background: var(--ds-green-100);
446
+ --pill-color: var(--ds-green-900);
447
+ --pill-font-size: 10px;
448
+ --pill-font-family: var(--font-mono);
449
+ --pill-padding: 2px 6px;
450
+ --pill-hover-background: var(--ds-green-100);
451
+ --pill-cursor: inherit;
452
+ }
453
+
454
+ .pill-exit-error {
455
+ --pill-background: var(--ds-red-100);
456
+ --pill-color: var(--ds-red-900);
457
+ --pill-font-size: 10px;
458
+ --pill-font-family: var(--font-mono);
459
+ --pill-padding: 2px 6px;
460
+ --pill-hover-background: var(--ds-red-100);
461
+ --pill-cursor: inherit;
462
+ }
463
+
464
+ .pill-source-claude {
465
+ --pill-background: var(--ds-blue-100);
466
+ --pill-color: var(--ds-blue-900);
467
+ --pill-font-size: 10px;
468
+ --pill-padding: 2px 8px;
469
+ --pill-hover-background: var(--ds-blue-100);
470
+ --pill-hover-color: var(--ds-blue-900);
471
+ --pill-cursor: inherit;
472
+ }
473
+
474
+ .pill-source-opencode {
475
+ --pill-background: var(--ds-amber-100);
476
+ --pill-color: var(--ds-amber-900);
477
+ --pill-font-size: 10px;
478
+ --pill-padding: 2px 8px;
479
+ --pill-hover-background: var(--ds-amber-100);
480
+ --pill-hover-color: var(--ds-amber-900);
481
+ --pill-cursor: inherit;
482
+ }
483
+
484
+ /* ===== Shimmer Variant Classes ===== */
485
+
486
+ .shimmer-header {
487
+ --shimmer-height: 80px;
488
+ --shimmer-border-radius: var(--radius-lg);
489
+ margin-bottom: 1rem;
490
+ }
491
+
492
+ .shimmer-card {
493
+ --shimmer-height: 120px;
494
+ --shimmer-border-radius: var(--radius-lg);
495
+ }
496
+
497
+ .shimmer-bubble {
498
+ --shimmer-height: 60px;
499
+ --shimmer-border-radius: var(--radius-lg);
500
+ margin-bottom: var(--space-3);
501
+ }
502
+
503
+ .shimmer-bubble-user {
504
+ --shimmer-width: 60%;
505
+ margin-left: auto;
506
+ }
507
+
508
+ .shimmer-bubble-assistant {
509
+ --shimmer-width: 75%;
510
+ }
511
+
512
+ .shimmer-bubble-user-short {
513
+ --shimmer-width: 50%;
514
+ margin-left: auto;
515
+ }
516
+
517
+ .shimmer-bubble-assistant-wide {
518
+ --shimmer-width: 80%;
519
+ }
520
+
521
+ .shimmer-bubble-assistant-short {
522
+ --shimmer-width: 40%;
523
+ }
524
+
525
+ @media (max-width: 768px) {
526
+ .shimmer-card {
527
+ --shimmer-height: 90px;
528
+ }
529
+ }
@@ -0,0 +1,6 @@
1
+ export interface ShooterConfig {
2
+ apiKey: string;
3
+ deviceToken: string;
4
+ lastUpdated?: number;
5
+ serverUrl?: string;
6
+ }