@juspay/shooter 1.19.0 → 1.21.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 (283) hide show
  1. package/build/client/_app/immutable/assets/11.F10lvwyh.css +1 -0
  2. package/build/client/_app/immutable/assets/11.F10lvwyh.css.br +0 -0
  3. package/build/client/_app/immutable/assets/11.F10lvwyh.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/2.BHi6pjT2.css +1 -0
  5. package/build/client/_app/immutable/assets/2.BHi6pjT2.css.br +0 -0
  6. package/build/client/_app/immutable/assets/2.BHi6pjT2.css.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{ZS5XYDx_.js → B1bOvemT.js} +1 -1
  8. package/build/client/_app/immutable/chunks/B1bOvemT.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/{ZS5XYDx_.js.gz → B1bOvemT.js.gz} +0 -0
  10. package/build/client/_app/immutable/chunks/{DCDL_9ys.js → BmfLecb1.js} +1 -1
  11. package/build/client/_app/immutable/chunks/BmfLecb1.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/BmfLecb1.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/C87ZRWX0.js +1 -0
  14. package/build/client/_app/immutable/chunks/C87ZRWX0.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/C87ZRWX0.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{BvmdJful.js → CJulw9ux.js} +1 -1
  17. package/build/client/_app/immutable/chunks/CJulw9ux.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/CJulw9ux.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/DOEXXmsh.js +3 -0
  20. package/build/client/_app/immutable/chunks/DOEXXmsh.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/DOEXXmsh.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{ClIPTXf3.js → DomZZqvG.js} +1 -1
  23. package/build/client/_app/immutable/chunks/DomZZqvG.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/DomZZqvG.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/{DA4Zt9Me.js → EqMAkEha.js} +1 -1
  26. package/build/client/_app/immutable/chunks/EqMAkEha.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/EqMAkEha.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/J5-Cr5oR.js +6 -0
  29. package/build/client/_app/immutable/chunks/J5-Cr5oR.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/J5-Cr5oR.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/{BB2l8o4X.js → i5iZvmIH.js} +1 -1
  32. package/build/client/_app/immutable/chunks/i5iZvmIH.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/i5iZvmIH.js.gz +0 -0
  34. package/build/client/_app/immutable/entry/{app.D4TXlu7A.js → app.CeSxgGat.js} +2 -2
  35. package/build/client/_app/immutable/entry/app.CeSxgGat.js.br +0 -0
  36. package/build/client/_app/immutable/entry/app.CeSxgGat.js.gz +0 -0
  37. package/build/client/_app/immutable/entry/start.DrnJFwxA.js +1 -0
  38. package/build/client/_app/immutable/entry/start.DrnJFwxA.js.br +2 -0
  39. package/build/client/_app/immutable/entry/start.DrnJFwxA.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/0.oaPwxh1O.js +10 -0
  41. package/build/client/_app/immutable/nodes/0.oaPwxh1O.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/0.oaPwxh1O.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{1.BVnLUSs-.js → 1.DMPyoM-M.js} +1 -1
  44. package/build/client/_app/immutable/nodes/1.DMPyoM-M.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/1.DMPyoM-M.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{10.D1wl2wPX.js → 10.Cbm7nQKK.js} +1 -1
  47. package/build/client/_app/immutable/nodes/10.Cbm7nQKK.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/10.Cbm7nQKK.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/11.CKmZjP_a.js +2 -0
  50. package/build/client/_app/immutable/nodes/11.CKmZjP_a.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/11.CKmZjP_a.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/2.zlrdNFtH.js +13 -0
  53. package/build/client/_app/immutable/nodes/2.zlrdNFtH.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/2.zlrdNFtH.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{3.Wfz3TcJd.js → 3.BgLpGnzb.js} +1 -1
  56. package/build/client/_app/immutable/nodes/3.BgLpGnzb.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/3.BgLpGnzb.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{4.CBX9A3ka.js → 4.BFYS2g9C.js} +3 -3
  59. package/build/client/_app/immutable/nodes/4.BFYS2g9C.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/4.BFYS2g9C.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{5.DIVKuZc9.js → 5.Avc1-gVb.js} +1 -1
  62. package/build/client/_app/immutable/nodes/5.Avc1-gVb.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/5.Avc1-gVb.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{6.DtZAEPXb.js → 6.Dw2wEssJ.js} +1 -1
  65. package/build/client/_app/immutable/nodes/6.Dw2wEssJ.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/6.Dw2wEssJ.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{7.MfBRh32I.js → 7.DwKZjoBg.js} +1 -1
  68. package/build/client/_app/immutable/nodes/7.DwKZjoBg.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/7.DwKZjoBg.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{8.DVE6LnOC.js → 8.ZUAI6g5E.js} +1 -1
  71. package/build/client/_app/immutable/nodes/8.ZUAI6g5E.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/8.ZUAI6g5E.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{9.BCel5OqI.js → 9.I_KGXPwB.js} +1 -1
  74. package/build/client/_app/immutable/nodes/9.I_KGXPwB.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/9.I_KGXPwB.js.gz +0 -0
  76. package/build/client/_app/version.json +1 -1
  77. package/build/client/_app/version.json.br +0 -0
  78. package/build/client/_app/version.json.gz +0 -0
  79. package/build/server/chunks/{0-DJqyZZTr.js → 0-vrTNAfZB.js} +4 -2
  80. package/build/server/chunks/0-vrTNAfZB.js.map +1 -0
  81. package/build/server/chunks/{1-2YUVen1F.js → 1-nbr-bOoF.js} +2 -2
  82. package/build/server/chunks/{1-2YUVen1F.js.map → 1-nbr-bOoF.js.map} +1 -1
  83. package/build/server/chunks/{10-D1X7LB3v.js → 10-ChyvvJ6w.js} +2 -2
  84. package/build/server/chunks/{10-D1X7LB3v.js.map → 10-ChyvvJ6w.js.map} +1 -1
  85. package/build/server/chunks/{11-qXSPdF5j.js → 11-6ZAjL3uU.js} +4 -4
  86. package/build/server/chunks/11-6ZAjL3uU.js.map +1 -0
  87. package/build/server/chunks/{2-BD7kj1mt.js → 2-DWFRVDWJ.js} +3 -3
  88. package/build/server/chunks/{2-BD7kj1mt.js.map → 2-DWFRVDWJ.js.map} +1 -1
  89. package/build/server/chunks/{3-oNjv-BhZ.js → 3-CKANM_WM.js} +2 -2
  90. package/build/server/chunks/{3-oNjv-BhZ.js.map → 3-CKANM_WM.js.map} +1 -1
  91. package/build/server/chunks/{4-Bb5VFhsO.js → 4-D92KnTmb.js} +3 -3
  92. package/build/server/chunks/{4-Bb5VFhsO.js.map → 4-D92KnTmb.js.map} +1 -1
  93. package/build/server/chunks/{5-oNoWuIsn.js → 5-BxVjs2qi.js} +2 -2
  94. package/build/server/chunks/{5-oNoWuIsn.js.map → 5-BxVjs2qi.js.map} +1 -1
  95. package/build/server/chunks/{6-DRJGUqHG.js → 6-Cbf1AAMQ.js} +2 -2
  96. package/build/server/chunks/{6-DRJGUqHG.js.map → 6-Cbf1AAMQ.js.map} +1 -1
  97. package/build/server/chunks/{7-_giJiu0L.js → 7-CMK2quEf.js} +2 -2
  98. package/build/server/chunks/{7-_giJiu0L.js.map → 7-CMK2quEf.js.map} +1 -1
  99. package/build/server/chunks/{8-zvWAVNT5.js → 8-DhdfkfDM.js} +2 -2
  100. package/build/server/chunks/{8-zvWAVNT5.js.map → 8-DhdfkfDM.js.map} +1 -1
  101. package/build/server/chunks/{9-DVyDL445.js → 9-CPpxtRM5.js} +2 -2
  102. package/build/server/chunks/{9-DVyDL445.js.map → 9-CPpxtRM5.js.map} +1 -1
  103. package/build/server/chunks/Banner-BgaAs1rs.js.map +1 -1
  104. package/build/server/chunks/Button-D0hZ7JYt.js.map +1 -1
  105. package/build/server/chunks/Icon-D0GBnDcs.js.map +1 -1
  106. package/build/server/chunks/Input-OmIiydSx.js.map +1 -1
  107. package/build/server/chunks/Pill-4xJ-VhAA.js.map +1 -1
  108. package/build/server/chunks/Shimmer-Dw2uvTC1.js.map +1 -1
  109. package/build/server/chunks/_error.svelte-CZnkxeLr.js.map +1 -1
  110. package/build/server/chunks/_layout.svelte-DfgNGGiM.js.map +1 -1
  111. package/build/server/chunks/_page.svelte-BTlfUsBp.js.map +1 -1
  112. package/build/server/chunks/_page.svelte-BX2FMgSg.js.map +1 -1
  113. package/build/server/chunks/_page.svelte-C7B0qdrC.js.map +1 -1
  114. package/build/server/chunks/_page.svelte-CE7COWnF.js.map +1 -1
  115. package/build/server/chunks/_page.svelte-CWsjjd4l.js.map +1 -1
  116. package/build/server/chunks/_page.svelte-D5S2hkBk.js.map +1 -1
  117. package/build/server/chunks/_page.svelte-D_Ey8QRG.js.map +1 -1
  118. package/build/server/chunks/{_page.svelte-BLo2v_8E.js → _page.svelte-Gv9p8nlS.js} +3 -4
  119. package/build/server/chunks/_page.svelte-Gv9p8nlS.js.map +1 -0
  120. package/build/server/chunks/{_page.svelte-BUBLUSGo.js → _page.svelte-dabsQl9c.js} +206 -5
  121. package/build/server/chunks/_page.svelte-dabsQl9c.js.map +1 -0
  122. package/build/server/chunks/_page.svelte-tBuIq8Pg.js.map +1 -1
  123. package/build/server/chunks/_server.ts-B-evHL2q.js +13 -0
  124. package/build/server/chunks/_server.ts-B-evHL2q.js.map +1 -0
  125. package/build/server/chunks/_server.ts-BB46Fbqn.js +59 -0
  126. package/build/server/chunks/_server.ts-BB46Fbqn.js.map +1 -0
  127. package/build/server/chunks/{_server.ts-DMm0hBP4.js → _server.ts-BWVlO8iV.js} +8 -5
  128. package/build/server/chunks/_server.ts-BWVlO8iV.js.map +1 -0
  129. package/build/server/chunks/{_server.ts-BRAzC6W1.js → _server.ts-BevnuePu.js} +27 -6
  130. package/build/server/chunks/_server.ts-BevnuePu.js.map +1 -0
  131. package/build/server/chunks/_server.ts-CA5KUENM.js +95 -0
  132. package/build/server/chunks/_server.ts-CA5KUENM.js.map +1 -0
  133. package/build/server/chunks/{_server.ts-DhJx0DLr.js → _server.ts-CC2K8-L2.js} +16 -7
  134. package/build/server/chunks/_server.ts-CC2K8-L2.js.map +1 -0
  135. package/build/server/chunks/{_server.ts-Bi0Oe4PF.js → _server.ts-CD7JP3fz.js} +14 -9
  136. package/build/server/chunks/_server.ts-CD7JP3fz.js.map +1 -0
  137. package/build/server/chunks/{_server.ts-C_OOUqsd.js → _server.ts-D0zRDSx0.js} +2 -2
  138. package/build/server/chunks/{_server.ts-C_OOUqsd.js.map → _server.ts-D0zRDSx0.js.map} +1 -1
  139. package/build/server/chunks/{_server.ts-DxT9IlZF.js → _server.ts-Dp-hXW_I.js} +3 -3
  140. package/build/server/chunks/{_server.ts-DxT9IlZF.js.map → _server.ts-Dp-hXW_I.js.map} +1 -1
  141. package/build/server/chunks/_server.ts-DpRr0Tfh.js +68 -0
  142. package/build/server/chunks/_server.ts-DpRr0Tfh.js.map +1 -0
  143. package/build/server/chunks/{_server.ts-Bjbr7glm.js → _server.ts-QN-Bo5ql.js} +12 -5
  144. package/build/server/chunks/_server.ts-QN-Bo5ql.js.map +1 -0
  145. package/build/server/chunks/_server.ts-VzDcFFgy.js +157 -0
  146. package/build/server/chunks/_server.ts-VzDcFFgy.js.map +1 -0
  147. package/build/server/chunks/{_server.ts-BrqaMMAa.js → _server.ts-W6i3EnGX.js} +29 -6
  148. package/build/server/chunks/_server.ts-W6i3EnGX.js.map +1 -0
  149. package/build/server/chunks/{_server.ts-CRVNEOd2.js → _server.ts-X1R7L_QI.js} +3 -3
  150. package/build/server/chunks/{_server.ts-CRVNEOd2.js.map → _server.ts-X1R7L_QI.js.map} +1 -1
  151. package/build/server/chunks/cache-BlMaDsHi.js.map +1 -1
  152. package/build/server/chunks/guest-registry-Dxvd7p-g.js +48 -0
  153. package/build/server/chunks/guest-registry-Dxvd7p-g.js.map +1 -0
  154. package/build/server/chunks/index-CoYB03g7.js.map +1 -1
  155. package/build/server/chunks/index2-dSGQ9Eaa.js.map +1 -1
  156. package/build/server/chunks/{pty-manager-41h3IK8K.js → pty-manager-ZqXqa-6A.js} +6 -2
  157. package/build/server/chunks/pty-manager-ZqXqa-6A.js.map +1 -0
  158. package/build/server/chunks/root-D4IoFC8F.js.map +1 -1
  159. package/build/server/chunks/share-auth-BS7JuiHf.js +27 -0
  160. package/build/server/chunks/share-auth-BS7JuiHf.js.map +1 -0
  161. package/build/server/chunks/share-store-B9jMpVg0.js +127 -0
  162. package/build/server/chunks/share-store-B9jMpVg0.js.map +1 -0
  163. package/build/server/chunks/state.svelte-CmHqngc_.js.map +1 -1
  164. package/build/server/chunks/stores-CRYxfF0o.js.map +1 -1
  165. package/build/server/index.js +1 -1
  166. package/build/server/index.js.map +1 -1
  167. package/build/server/manifest.js +57 -22
  168. package/build/server/manifest.js.map +1 -1
  169. package/package.json +2 -2
  170. package/server.ts +10 -3
  171. package/src/lib/modules/client/dashboard/AutopilotPanel.svelte +400 -0
  172. package/src/lib/modules/client/dashboard/index.ts +1 -0
  173. package/src/lib/modules/client/neurolink/provider-config.ts +13 -37
  174. package/src/lib/modules/client/terminal/ShareGate.svelte +96 -0
  175. package/src/lib/modules/client/terminal/ShareSheet.svelte +395 -0
  176. package/src/lib/modules/client/terminal/xterm-wrapper.ts +19 -2
  177. package/src/lib/modules/server/sessions/autopilot-engine.ts +346 -0
  178. package/src/lib/modules/server/sessions/litellm-client.ts +115 -0
  179. package/src/lib/modules/server/sessions/next-step-consensus.ts +185 -0
  180. package/src/lib/modules/server/sessions/summary-store.ts +111 -0
  181. package/src/lib/modules/server/terminal/pty-manager.ts +6 -0
  182. package/src/lib/modules/server/terminal/share-auth.ts +37 -0
  183. package/src/lib/modules/server/terminal/share-store.ts +172 -0
  184. package/src/lib/modules/server/ws/events-handler.ts +32 -0
  185. package/src/lib/modules/server/ws/guest-registry.ts +49 -0
  186. package/src/lib/modules/server/ws/server.ts +22 -3
  187. package/src/lib/modules/server/ws/session-handler.ts +18 -4
  188. package/src/lib/modules/server/ws/terminal-handler.ts +21 -2
  189. package/src/lib/modules/server/ws/ticket-store.ts +18 -10
  190. package/src/lib/types/autopilot.ts +73 -0
  191. package/src/lib/types/generated/Client.ts +25 -1
  192. package/src/lib/types/generated/Share.ts +404 -0
  193. package/src/lib/types/generated/WsProtocol.ts +73 -2
  194. package/src/lib/types/generated/index.ts +1 -0
  195. package/src/lib/types/index.ts +1 -0
  196. package/src/lib/types/terminal-client.ts +21 -2
  197. package/src/lib/types/ws.ts +1 -0
  198. package/src/routes/+layout.server.ts +2 -0
  199. package/src/routes/+layout.svelte +19 -4
  200. package/src/routes/+page.svelte +9 -1
  201. package/src/routes/api/autopilot/+server.ts +74 -0
  202. package/src/routes/api/neurolink-proxy/+server.ts +31 -6
  203. package/src/routes/api/notify/+server.ts +20 -3
  204. package/src/routes/api/summaries/+server.ts +99 -0
  205. package/src/routes/api/terminals/[id]/+server.ts +14 -3
  206. package/src/routes/api/terminals/[id]/paste-image/+server.ts +8 -4
  207. package/src/routes/api/terminals/[id]/resize/+server.ts +8 -4
  208. package/src/routes/api/terminals/[id]/share/+server.ts +98 -0
  209. package/src/routes/api/terminals/[id]/share/auth/+server.ts +81 -0
  210. package/src/routes/api/terminals/[id]/share/status/+server.ts +11 -0
  211. package/src/routes/api/ws-ticket/+server.ts +26 -5
  212. package/src/routes/terminals/[id]/+page.svelte +184 -43
  213. package/build/client/_app/immutable/assets/11.v5KA95xm.css +0 -1
  214. package/build/client/_app/immutable/assets/11.v5KA95xm.css.br +0 -0
  215. package/build/client/_app/immutable/assets/11.v5KA95xm.css.gz +0 -0
  216. package/build/client/_app/immutable/assets/2.DjiwkLqE.css +0 -1
  217. package/build/client/_app/immutable/assets/2.DjiwkLqE.css.br +0 -0
  218. package/build/client/_app/immutable/assets/2.DjiwkLqE.css.gz +0 -0
  219. package/build/client/_app/immutable/chunks/BB2l8o4X.js.br +0 -0
  220. package/build/client/_app/immutable/chunks/BB2l8o4X.js.gz +0 -0
  221. package/build/client/_app/immutable/chunks/BcqA7eKM.js +0 -3
  222. package/build/client/_app/immutable/chunks/BcqA7eKM.js.br +0 -0
  223. package/build/client/_app/immutable/chunks/BcqA7eKM.js.gz +0 -0
  224. package/build/client/_app/immutable/chunks/BvmdJful.js.br +0 -0
  225. package/build/client/_app/immutable/chunks/BvmdJful.js.gz +0 -0
  226. package/build/client/_app/immutable/chunks/CR6bkGJW.js +0 -6
  227. package/build/client/_app/immutable/chunks/CR6bkGJW.js.br +0 -0
  228. package/build/client/_app/immutable/chunks/CR6bkGJW.js.gz +0 -0
  229. package/build/client/_app/immutable/chunks/ClIPTXf3.js.br +0 -0
  230. package/build/client/_app/immutable/chunks/ClIPTXf3.js.gz +0 -0
  231. package/build/client/_app/immutable/chunks/DA4Zt9Me.js.br +0 -0
  232. package/build/client/_app/immutable/chunks/DA4Zt9Me.js.gz +0 -0
  233. package/build/client/_app/immutable/chunks/DCDL_9ys.js.br +0 -0
  234. package/build/client/_app/immutable/chunks/DCDL_9ys.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/ZS5XYDx_.js.br +0 -0
  236. package/build/client/_app/immutable/chunks/pRcLbE0d.js +0 -1
  237. package/build/client/_app/immutable/chunks/pRcLbE0d.js.br +0 -0
  238. package/build/client/_app/immutable/chunks/pRcLbE0d.js.gz +0 -0
  239. package/build/client/_app/immutable/entry/app.D4TXlu7A.js.br +0 -0
  240. package/build/client/_app/immutable/entry/app.D4TXlu7A.js.gz +0 -0
  241. package/build/client/_app/immutable/entry/start.BBQhtURO.js +0 -1
  242. package/build/client/_app/immutable/entry/start.BBQhtURO.js.br +0 -0
  243. package/build/client/_app/immutable/entry/start.BBQhtURO.js.gz +0 -0
  244. package/build/client/_app/immutable/nodes/0.1zylwAPT.js +0 -10
  245. package/build/client/_app/immutable/nodes/0.1zylwAPT.js.br +0 -0
  246. package/build/client/_app/immutable/nodes/0.1zylwAPT.js.gz +0 -0
  247. package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.br +0 -0
  248. package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.gz +0 -0
  249. package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.br +0 -0
  250. package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.gz +0 -0
  251. package/build/client/_app/immutable/nodes/11.C18nMGmp.js +0 -2
  252. package/build/client/_app/immutable/nodes/11.C18nMGmp.js.br +0 -0
  253. package/build/client/_app/immutable/nodes/11.C18nMGmp.js.gz +0 -0
  254. package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js +0 -13
  255. package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.br +0 -0
  256. package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.gz +0 -0
  257. package/build/client/_app/immutable/nodes/3.Wfz3TcJd.js.br +0 -0
  258. package/build/client/_app/immutable/nodes/3.Wfz3TcJd.js.gz +0 -0
  259. package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.br +0 -0
  260. package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.gz +0 -0
  261. package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.br +0 -0
  262. package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.gz +0 -0
  263. package/build/client/_app/immutable/nodes/6.DtZAEPXb.js.br +0 -0
  264. package/build/client/_app/immutable/nodes/6.DtZAEPXb.js.gz +0 -0
  265. package/build/client/_app/immutable/nodes/7.MfBRh32I.js.br +0 -0
  266. package/build/client/_app/immutable/nodes/7.MfBRh32I.js.gz +0 -0
  267. package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.br +0 -0
  268. package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.gz +0 -0
  269. package/build/client/_app/immutable/nodes/9.BCel5OqI.js.br +0 -0
  270. package/build/client/_app/immutable/nodes/9.BCel5OqI.js.gz +0 -0
  271. package/build/server/chunks/0-DJqyZZTr.js.map +0 -1
  272. package/build/server/chunks/11-qXSPdF5j.js.map +0 -1
  273. package/build/server/chunks/_page.svelte-BLo2v_8E.js.map +0 -1
  274. package/build/server/chunks/_page.svelte-BUBLUSGo.js.map +0 -1
  275. package/build/server/chunks/_server.ts-BRAzC6W1.js.map +0 -1
  276. package/build/server/chunks/_server.ts-Bi0Oe4PF.js.map +0 -1
  277. package/build/server/chunks/_server.ts-Bjbr7glm.js.map +0 -1
  278. package/build/server/chunks/_server.ts-BrqaMMAa.js.map +0 -1
  279. package/build/server/chunks/_server.ts-DMm0hBP4.js.map +0 -1
  280. package/build/server/chunks/_server.ts-DhJx0DLr.js.map +0 -1
  281. package/build/server/chunks/events-handler-Dm1mNPQP.js +0 -20
  282. package/build/server/chunks/events-handler-Dm1mNPQP.js.map +0 -1
  283. package/build/server/chunks/pty-manager-41h3IK8K.js.map +0 -1
@@ -0,0 +1,400 @@
1
+ <script lang="ts">
2
+ import type { NextStep, SessionSummaryRecord } from '$lib/types';
3
+
4
+ import { formatRelativeTime, getApiKey } from '$lib/modules/client/common';
5
+ import { onMount } from 'svelte';
6
+
7
+ // Read-only view of the always-on SERVER autopilot engine: fetches persisted
8
+ // summaries from /api/summaries and toggles the engine via /api/autopilot.
9
+ // No engine runs in the browser — the panel just reflects server state.
10
+
11
+ let enabled = $state(false);
12
+ let summaries = $state<SessionSummaryRecord[]>([]);
13
+
14
+ /** Latest summary per session, newest first. */
15
+ const latest = $derived.by(() => {
16
+ // eslint-disable-next-line svelte/prefer-svelte-reactivity -- transient local dedup, not reactive state
17
+ const seen = new Set<string>();
18
+ const out: SessionSummaryRecord[] = [];
19
+ for (const s of summaries) {
20
+ const key = s.sessionId ?? s.terminalId ?? s.id;
21
+ if (!seen.has(key)) {
22
+ seen.add(key);
23
+ out.push(s);
24
+ }
25
+ }
26
+ return out;
27
+ });
28
+
29
+ function authHeaders(): Record<string, string> {
30
+ const key = getApiKey();
31
+ return key ? { Authorization: `Bearer ${key}` } : {};
32
+ }
33
+
34
+ async function refreshState(): Promise<void> {
35
+ try {
36
+ const res = await fetch('/api/autopilot', { headers: authHeaders() });
37
+ if (res.ok) {
38
+ enabled = Boolean(((await res.json()) as { enabled?: boolean }).enabled);
39
+ }
40
+ } catch {
41
+ // ignore transient errors
42
+ }
43
+ }
44
+
45
+ async function refreshSummaries(): Promise<void> {
46
+ try {
47
+ const res = await fetch('/api/summaries?limit=30', { headers: authHeaders() });
48
+ if (res.ok) {
49
+ summaries = ((await res.json()) as { summaries?: SessionSummaryRecord[] }).summaries ?? [];
50
+ }
51
+ } catch {
52
+ // ignore transient errors
53
+ }
54
+ }
55
+
56
+ async function toggle(): Promise<void> {
57
+ const next = !enabled;
58
+ enabled = next;
59
+ try {
60
+ const res = await fetch('/api/autopilot', {
61
+ body: JSON.stringify({ enabled: next }),
62
+ headers: { ...authHeaders(), 'Content-Type': 'application/json' },
63
+ method: 'POST',
64
+ });
65
+ if (res.ok) {
66
+ enabled = Boolean(((await res.json()) as { enabled?: boolean }).enabled);
67
+ }
68
+ } catch {
69
+ enabled = !next;
70
+ }
71
+ }
72
+
73
+ function parseSteps(raw: string): NextStep[] {
74
+ try {
75
+ const value: unknown = JSON.parse(raw);
76
+ return Array.isArray(value) ? (value as NextStep[]) : [];
77
+ } catch {
78
+ return [];
79
+ }
80
+ }
81
+
82
+ function stepBadgeClass(step: NextStep): string {
83
+ if (step.tentative) {
84
+ return 'step-badge step-badge--tentative';
85
+ }
86
+ const v = step.votes ?? 1;
87
+ if (v >= 4) {
88
+ return 'step-badge step-badge--strong';
89
+ }
90
+ if (v >= 3) {
91
+ return 'step-badge step-badge--medium';
92
+ }
93
+ return 'step-badge step-badge--weak';
94
+ }
95
+
96
+ function voteLabel(step: NextStep): string {
97
+ return step.tentative ? '~' : `${step.votes ?? 1}`;
98
+ }
99
+
100
+ onMount(() => {
101
+ void refreshState();
102
+ void refreshSummaries();
103
+ const timer = setInterval(() => {
104
+ void refreshSummaries();
105
+ void refreshState();
106
+ }, 8000);
107
+ return (): void => {
108
+ clearInterval(timer);
109
+ };
110
+ });
111
+ </script>
112
+
113
+ <div class="autopilot-panel">
114
+ <div class="panel-header">
115
+ <div class="panel-title-row">
116
+ <span class="panel-title">Auto-pilot</span>
117
+ {#if enabled}
118
+ <span class="status-dot-active" aria-hidden="true"></span>
119
+ {/if}
120
+ </div>
121
+ <button
122
+ class={enabled ? 'toggle-btn toggle-btn--on' : 'toggle-btn toggle-btn--off'}
123
+ onclick={toggle}
124
+ aria-label={enabled ? 'Stop Auto-pilot' : 'Start Auto-pilot'}
125
+ aria-pressed={enabled}
126
+ >
127
+ {enabled ? 'Stop' : 'Start'}
128
+ </button>
129
+ </div>
130
+
131
+ {#if latest.length > 0}
132
+ <div class="sessions-list">
133
+ {#each latest as s (s.id)}
134
+ {@const steps = parseSteps(s.nextSteps)}
135
+ <div class="session-card">
136
+ <div class="session-header">
137
+ <span class="session-name">{s.projectName ?? s.terminalId}</span>
138
+ <span class="session-status session-status--idle">{s.trigger}</span>
139
+ </div>
140
+
141
+ {#if s.summary}
142
+ <p class="session-summary">{s.summary}</p>
143
+ {/if}
144
+
145
+ {#if steps.length > 0}
146
+ <div class="next-steps">
147
+ <span class="next-steps-label">Next steps</span>
148
+ <ul class="steps-list">
149
+ {#each steps as step (step.text)}
150
+ <li class="step-item">
151
+ <span class={stepBadgeClass(step)} title="{step.votes ?? 1} vote(s)">
152
+ {voteLabel(step)}
153
+ </span>
154
+ <span class="step-text">{step.text}</span>
155
+ </li>
156
+ {/each}
157
+ </ul>
158
+ </div>
159
+ {/if}
160
+
161
+ <span class="last-updated">Updated {formatRelativeTime(s.createdAt)}</span>
162
+ </div>
163
+ {/each}
164
+ </div>
165
+ {:else}
166
+ <p class="panel-empty">
167
+ {enabled
168
+ ? 'Watching all active sessions…'
169
+ : 'Start Auto-pilot for AI summaries + next steps across all sessions — runs on the server, even with this page closed.'}
170
+ </p>
171
+ {/if}
172
+ </div>
173
+
174
+ <style>
175
+ .autopilot-panel {
176
+ background: var(--component-bg, #1a1a1a);
177
+ border: 1px solid var(--border, #2e2e2e);
178
+ border-radius: var(--radius-lg, 8px);
179
+ padding: var(--space-4, 16px);
180
+ margin-bottom: var(--space-4, 16px);
181
+ }
182
+
183
+ .panel-header {
184
+ display: flex;
185
+ align-items: center;
186
+ justify-content: space-between;
187
+ margin-bottom: var(--space-3, 12px);
188
+ }
189
+
190
+ .panel-title-row {
191
+ display: flex;
192
+ align-items: center;
193
+ gap: var(--space-2, 8px);
194
+ }
195
+
196
+ .panel-title {
197
+ color: var(--text-primary, #ededed);
198
+ font-size: var(--text-sm, 13px);
199
+ font-weight: 600;
200
+ letter-spacing: 0.04em;
201
+ text-transform: uppercase;
202
+ }
203
+
204
+ @keyframes pulse {
205
+ 0%,
206
+ 100% {
207
+ opacity: 1;
208
+ }
209
+ 50% {
210
+ opacity: 0.4;
211
+ }
212
+ }
213
+
214
+ .status-dot-active {
215
+ animation: pulse 2s ease-in-out infinite;
216
+ background: var(--ds-green-700, #16a34a);
217
+ border-radius: 50%;
218
+ display: inline-block;
219
+ flex-shrink: 0;
220
+ height: 7px;
221
+ width: 7px;
222
+ }
223
+
224
+ .toggle-btn {
225
+ border: 1px solid transparent;
226
+ border-radius: var(--radius-full, 9999px);
227
+ cursor: pointer;
228
+ font-size: var(--text-xs, 12px);
229
+ font-weight: 600;
230
+ padding: 4px 14px;
231
+ transition:
232
+ background var(--transition-fast, 150ms ease),
233
+ color var(--transition-fast, 150ms ease);
234
+ }
235
+
236
+ .toggle-btn--off {
237
+ background: var(--ds-green-alpha-200, rgba(22, 163, 74, 0.12));
238
+ border-color: var(--ds-green-alpha-400, rgba(22, 163, 74, 0.3));
239
+ color: var(--ds-green-700, #16a34a);
240
+ }
241
+
242
+ .toggle-btn--off:hover {
243
+ background: var(--ds-green-alpha-400, rgba(22, 163, 74, 0.2));
244
+ }
245
+
246
+ .toggle-btn--on {
247
+ background: var(--ds-gray-alpha-200, rgba(255, 255, 255, 0.06));
248
+ border-color: var(--border, #2e2e2e);
249
+ color: var(--text-secondary, #a1a1a1);
250
+ }
251
+
252
+ .toggle-btn--on:hover {
253
+ background: var(--ds-gray-alpha-300, rgba(255, 255, 255, 0.1));
254
+ color: var(--text-primary, #ededed);
255
+ }
256
+
257
+ .toggle-btn:focus-visible {
258
+ outline: 2px solid var(--ds-blue-700, #0070f3);
259
+ outline-offset: 2px;
260
+ }
261
+
262
+ .panel-empty {
263
+ color: var(--text-tertiary, #7d7d7d);
264
+ font-size: var(--text-xs, 12px);
265
+ font-style: italic;
266
+ margin: 0;
267
+ }
268
+
269
+ .sessions-list {
270
+ display: flex;
271
+ flex-direction: column;
272
+ gap: var(--space-3, 12px);
273
+ }
274
+
275
+ .session-card {
276
+ background: var(--bg-subtle, rgba(255, 255, 255, 0.02));
277
+ border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.06));
278
+ border-radius: var(--radius-md, 6px);
279
+ display: flex;
280
+ flex-direction: column;
281
+ gap: var(--space-2, 8px);
282
+ padding: var(--space-3, 12px);
283
+ }
284
+
285
+ .session-header {
286
+ align-items: center;
287
+ display: flex;
288
+ gap: var(--space-2, 8px);
289
+ justify-content: space-between;
290
+ }
291
+
292
+ .session-name {
293
+ color: var(--text-primary, #ededed);
294
+ flex: 1;
295
+ font-size: var(--text-sm, 13px);
296
+ font-weight: 600;
297
+ min-width: 0;
298
+ overflow: hidden;
299
+ text-overflow: ellipsis;
300
+ white-space: nowrap;
301
+ }
302
+
303
+ .session-status {
304
+ flex-shrink: 0;
305
+ font-size: var(--text-xs, 12px);
306
+ font-weight: 500;
307
+ }
308
+
309
+ .session-status--idle {
310
+ color: var(--text-tertiary, #7d7d7d);
311
+ }
312
+
313
+ .session-summary {
314
+ -webkit-box-orient: vertical;
315
+ -webkit-line-clamp: 2;
316
+ color: var(--text-secondary, #a1a1a1);
317
+ display: -webkit-box;
318
+ font-size: var(--text-xs, 12px);
319
+ line-clamp: 2;
320
+ line-height: var(--leading-normal, 1.5);
321
+ margin: 0;
322
+ overflow: hidden;
323
+ }
324
+
325
+ .next-steps {
326
+ display: flex;
327
+ flex-direction: column;
328
+ gap: 6px;
329
+ }
330
+
331
+ .next-steps-label {
332
+ color: var(--text-tertiary, #7d7d7d);
333
+ font-size: var(--text-xs, 12px);
334
+ font-weight: 600;
335
+ letter-spacing: 0.06em;
336
+ text-transform: uppercase;
337
+ }
338
+
339
+ .steps-list {
340
+ display: flex;
341
+ flex-direction: column;
342
+ gap: 5px;
343
+ list-style: none;
344
+ margin: 0;
345
+ padding: 0;
346
+ }
347
+
348
+ .step-item {
349
+ align-items: baseline;
350
+ display: flex;
351
+ gap: 8px;
352
+ }
353
+
354
+ .step-badge {
355
+ align-items: center;
356
+ border-radius: var(--radius-full, 9999px);
357
+ cursor: default;
358
+ display: inline-flex;
359
+ flex-shrink: 0;
360
+ font-size: 10px;
361
+ font-weight: 700;
362
+ height: 18px;
363
+ justify-content: center;
364
+ min-width: 20px;
365
+ padding: 0 5px;
366
+ }
367
+
368
+ .step-badge--strong {
369
+ background: var(--ds-green-alpha-200, rgba(22, 163, 74, 0.12));
370
+ color: var(--ds-green-700, #16a34a);
371
+ }
372
+
373
+ .step-badge--medium {
374
+ background: var(--ds-blue-alpha-200, rgba(0, 112, 243, 0.12));
375
+ color: var(--ds-blue-700, #0070f3);
376
+ }
377
+
378
+ .step-badge--weak {
379
+ background: var(--ds-gray-alpha-200, rgba(255, 255, 255, 0.06));
380
+ color: var(--text-tertiary, #7d7d7d);
381
+ }
382
+
383
+ .step-badge--tentative {
384
+ background: var(--ds-amber-alpha-200, rgba(217, 119, 6, 0.12));
385
+ color: var(--ds-amber-700, #d97706);
386
+ font-style: italic;
387
+ }
388
+
389
+ .step-text {
390
+ color: var(--text-secondary, #a1a1a1);
391
+ font-size: var(--text-xs, 12px);
392
+ line-height: var(--leading-normal, 1.5);
393
+ }
394
+
395
+ .last-updated {
396
+ color: var(--text-tertiary, #7d7d7d);
397
+ font-size: 10px;
398
+ margin-top: 2px;
399
+ }
400
+ </style>
@@ -1,3 +1,4 @@
1
+ export { default as AutopilotPanel } from './AutopilotPanel.svelte';
1
2
  export { default as DashboardCard } from './DashboardCard.svelte';
2
3
  export { default as DashboardView } from './DashboardView.svelte';
3
4
  export {
@@ -33,9 +33,8 @@ export const PROVIDERS = [
33
33
  model: 'mistral-small-2506',
34
34
  },
35
35
  {
36
- cors: 'direct' as const,
37
- envKeys: ['LITELLM_API_KEY', 'LITELLM_BASE_URL'],
38
- extraEnvKeys: ['LITELLM_MODEL'],
36
+ cors: 'proxy' as const,
37
+ envKeys: ['LITELLM_BASE_URL'],
39
38
  id: 'litellm' as const,
40
39
  label: 'LiteLLM',
41
40
  model: 'open-large',
@@ -46,8 +45,9 @@ export const PROVIDERS = [
46
45
 
47
46
  /**
48
47
  * Detect which provider to use based on available env vars.
49
- * Checks window.process.env for browser-side keys (litellm)
50
- * and trusts server-passed flags for proxy providers (google-ai, anthropic, openai, mistral).
48
+ * Trusts server-passed flags for all proxy providers (including litellm).
49
+ * The `cors: 'direct'` branch (window.process.env check) is reserved for
50
+ * future providers that expose keys browser-side directly.
51
51
  *
52
52
  * @param serverFlags - Per-provider availability from +page.server.ts
53
53
  * @param preferredProvider - Optional override (from NEUROLINK_PROVIDER env var)
@@ -57,44 +57,20 @@ export function detectActiveProvider(
57
57
  preferredProvider?: string
58
58
  ): null | { model: string; provider: ProviderId } {
59
59
  // If user explicitly set a preferred provider, try it first — but only if
60
- // credentials are actually available (serverFlags for proxy providers,
61
- // browser env for direct providers). Without this gate a misconfigured
62
- // NEUROLINK_PROVIDER would bypass the fallback loop and silently fail.
60
+ // credentials are actually available (serverFlags). Without this gate a
61
+ // misconfigured NEUROLINK_PROVIDER would bypass the fallback loop and
62
+ // silently fail.
63
63
  if (preferredProvider) {
64
64
  const prov = PROVIDERS.find((p) => p.id === preferredProvider);
65
- if (prov) {
66
- if (prov.cors === 'direct') {
67
- const env =
68
- typeof window !== 'undefined'
69
- ? ((window as unknown as { process?: { env?: Record<string, string> } }).process?.env ??
70
- {})
71
- : {};
72
- if (prov.envKeys.every((k) => Boolean(env[k]))) {
73
- return { model: prov.model, provider: prov.id };
74
- }
75
- } else if (serverFlags?.[prov.id]) {
76
- return { model: prov.model, provider: prov.id };
77
- }
65
+ if (prov && serverFlags?.[prov.id]) {
66
+ return { model: prov.model, provider: prov.id };
78
67
  }
79
68
  }
80
69
 
81
- const env =
82
- typeof window !== 'undefined'
83
- ? ((window as unknown as { process?: { env?: Record<string, string> } }).process?.env ?? {})
84
- : {};
85
-
86
70
  for (const prov of PROVIDERS) {
87
- if (prov.cors === 'direct') {
88
- // Check browser env vars
89
- const hasKey = prov.envKeys.every((k) => Boolean(env[k]));
90
- if (hasKey) {
91
- return { model: prov.model, provider: prov.id };
92
- }
93
- } else {
94
- // Check server-passed flags
95
- if (serverFlags?.[prov.id]) {
96
- return { model: prov.model, provider: prov.id };
97
- }
71
+ // All current providers are proxy-based — check server-passed flags.
72
+ if (serverFlags?.[prov.id]) {
73
+ return { model: prov.model, provider: prov.id };
98
74
  }
99
75
  }
100
76
 
@@ -0,0 +1,96 @@
1
+ <script lang="ts">
2
+ import type { ShareGateProps } from '$lib/types';
3
+
4
+ import { Button, Input } from '@juspay/svelte-ui-components';
5
+
6
+ const { onSubmit }: ShareGateProps = $props();
7
+
8
+ let password = $state('');
9
+ let errorMsg = $state<null | string>(null);
10
+ let submitting = $state(false);
11
+
12
+ async function submit(): Promise<void> {
13
+ if (!password || submitting) {
14
+ return;
15
+ }
16
+ submitting = true;
17
+ errorMsg = null;
18
+ errorMsg = await onSubmit(password);
19
+ submitting = false;
20
+ }
21
+
22
+ function onKeydown(e: KeyboardEvent): void {
23
+ if (e.key === 'Enter') {
24
+ e.preventDefault();
25
+ void submit();
26
+ }
27
+ }
28
+ </script>
29
+
30
+ <div class="share-gate">
31
+ <div class="share-gate-card">
32
+ <h2 class="share-gate-title">Shared terminal</h2>
33
+ <p class="share-gate-sub">
34
+ This terminal is password protected. Enter the password to view it.
35
+ </p>
36
+ <Input
37
+ bind:value={password}
38
+ dataType="password"
39
+ placeholder="Password"
40
+ classes="share-gate-input"
41
+ onKeyDown={onKeydown}
42
+ />
43
+ {#if errorMsg}
44
+ <p class="share-gate-error">{errorMsg}</p>
45
+ {/if}
46
+ <Button
47
+ classes="btn-primary share-gate-btn"
48
+ onclick={(): void => {
49
+ void submit();
50
+ }}
51
+ disabled={!password || submitting}
52
+ showLoader={submitting}
53
+ text="Unlock"
54
+ />
55
+ </div>
56
+ </div>
57
+
58
+ <style>
59
+ .share-gate {
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ min-height: 60vh;
64
+ padding: var(--space-4);
65
+ }
66
+
67
+ .share-gate-card {
68
+ display: flex;
69
+ flex-direction: column;
70
+ gap: var(--space-3);
71
+ width: 100%;
72
+ max-width: 360px;
73
+ padding: var(--space-5);
74
+ background: var(--ds-background-100);
75
+ border: 1px solid var(--border);
76
+ border-radius: var(--radius-lg);
77
+ }
78
+
79
+ .share-gate-title {
80
+ margin: 0;
81
+ font-size: var(--text-lg);
82
+ color: var(--text-primary);
83
+ }
84
+
85
+ .share-gate-sub {
86
+ margin: 0;
87
+ font-size: var(--text-sm);
88
+ color: var(--text-tertiary);
89
+ }
90
+
91
+ .share-gate-error {
92
+ margin: 0;
93
+ font-size: var(--text-sm);
94
+ color: var(--ds-red-700, #ef4444);
95
+ }
96
+ </style>