@juspay/shooter 1.17.0 → 1.19.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 (342) hide show
  1. package/build/client/_app/immutable/assets/{0.B0O0vCnX.css → 0.BwNtE8TX.css} +1 -1
  2. package/build/client/_app/immutable/assets/0.BwNtE8TX.css.br +0 -0
  3. package/build/client/_app/immutable/assets/{0.B0O0vCnX.css.gz → 0.BwNtE8TX.css.gz} +0 -0
  4. package/build/client/_app/immutable/assets/8.BYgAX7hR.css +1 -0
  5. package/build/client/_app/immutable/assets/8.BYgAX7hR.css.br +0 -0
  6. package/build/client/_app/immutable/assets/8.BYgAX7hR.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/9.DV6pZunn.css +1 -0
  8. package/build/client/_app/immutable/assets/9.DV6pZunn.css.br +0 -0
  9. package/build/client/_app/immutable/assets/9.DV6pZunn.css.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{DZQMsHM5.js → 2rBV5OkJ.js} +1 -1
  11. package/build/client/_app/immutable/chunks/2rBV5OkJ.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/2rBV5OkJ.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/BB2l8o4X.js +1 -0
  14. package/build/client/_app/immutable/chunks/BB2l8o4X.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/BB2l8o4X.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{Cg3dlX05.js → BPDiEZo0.js} +2 -2
  17. package/build/client/_app/immutable/chunks/BPDiEZo0.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BPDiEZo0.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{C_9BZILB.js → BcpydfqI.js} +1 -1
  20. package/build/client/_app/immutable/chunks/BcpydfqI.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/BcpydfqI.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BcqA7eKM.js +3 -0
  23. package/build/client/_app/immutable/chunks/BcqA7eKM.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BcqA7eKM.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/BdtLzPpO.js +1 -0
  26. package/build/client/_app/immutable/chunks/BdtLzPpO.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BdtLzPpO.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/{BRqaaL5D.js → BvmdJful.js} +1 -1
  29. package/build/client/_app/immutable/chunks/BvmdJful.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/BvmdJful.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/{C5VOyQCG.js → ClIPTXf3.js} +1 -1
  32. package/build/client/_app/immutable/chunks/ClIPTXf3.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/ClIPTXf3.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/{BctvtE4d.js → DA4Zt9Me.js} +1 -1
  35. package/build/client/_app/immutable/chunks/DA4Zt9Me.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/{BctvtE4d.js.gz → DA4Zt9Me.js.gz} +0 -0
  37. package/build/client/_app/immutable/chunks/{CjfxuHdN.js → DCDL_9ys.js} +1 -1
  38. package/build/client/_app/immutable/chunks/DCDL_9ys.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/DCDL_9ys.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/{DYuMZGL5.js → DWmC0QM7.js} +1 -1
  41. package/build/client/_app/immutable/chunks/DWmC0QM7.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/DWmC0QM7.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/{DZvnhU_8.js → ZS5XYDx_.js} +2 -2
  44. package/build/client/_app/immutable/chunks/ZS5XYDx_.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/ZS5XYDx_.js.gz +0 -0
  46. package/build/client/_app/immutable/entry/app.D4TXlu7A.js +2 -0
  47. package/build/client/_app/immutable/entry/app.D4TXlu7A.js.br +0 -0
  48. package/build/client/_app/immutable/entry/app.D4TXlu7A.js.gz +0 -0
  49. package/build/client/_app/immutable/entry/start.BBQhtURO.js +1 -0
  50. package/build/client/_app/immutable/entry/start.BBQhtURO.js.br +0 -0
  51. package/build/client/_app/immutable/entry/start.BBQhtURO.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/0.1zylwAPT.js +10 -0
  53. package/build/client/_app/immutable/nodes/0.1zylwAPT.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/0.1zylwAPT.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{1.Fqso94b3.js → 1.BVnLUSs-.js} +1 -1
  56. package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/1.BVnLUSs-.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{8.BjKgvSie.js → 10.D1wl2wPX.js} +2 -2
  59. package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/10.D1wl2wPX.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{9.BRT6HOXB.js → 11.C18nMGmp.js} +1 -1
  62. package/build/client/_app/immutable/nodes/11.C18nMGmp.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/11.C18nMGmp.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{2.BusCVJWk.js → 2.D1Mm0DUX.js} +2 -2
  65. package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/2.D1Mm0DUX.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{3.DUlpocIc.js → 3.Wfz3TcJd.js} +3 -3
  68. package/build/client/_app/immutable/nodes/3.Wfz3TcJd.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/3.Wfz3TcJd.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{4.BSVqdrrD.js → 4.CBX9A3ka.js} +2 -2
  71. package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{5.Cfj35gpY.js → 5.DIVKuZc9.js} +1 -1
  74. package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{6.CG4eKRH0.js → 6.DtZAEPXb.js} +1 -1
  77. package/build/client/_app/immutable/nodes/6.DtZAEPXb.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/6.DtZAEPXb.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{7.DHilxD1o.js → 7.MfBRh32I.js} +1 -1
  80. package/build/client/_app/immutable/nodes/7.MfBRh32I.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/7.MfBRh32I.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/8.DVE6LnOC.js +1 -0
  83. package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/8.DVE6LnOC.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/9.BCel5OqI.js +2 -0
  86. package/build/client/_app/immutable/nodes/9.BCel5OqI.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/9.BCel5OqI.js.gz +0 -0
  88. package/build/client/_app/version.json +1 -1
  89. package/build/client/_app/version.json.br +0 -0
  90. package/build/client/_app/version.json.gz +0 -0
  91. package/build/server/chunks/{0-BWFSL107.js → 0-DJqyZZTr.js} +4 -4
  92. package/build/server/chunks/{0-BWFSL107.js.map → 0-DJqyZZTr.js.map} +1 -1
  93. package/build/server/chunks/1-2YUVen1F.js +9 -0
  94. package/build/server/chunks/{1-Bw5KlAjL.js.map → 1-2YUVen1F.js.map} +1 -1
  95. package/build/server/chunks/10-D1X7LB3v.js +9 -0
  96. package/build/server/chunks/10-D1X7LB3v.js.map +1 -0
  97. package/build/server/chunks/11-qXSPdF5j.js +9 -0
  98. package/build/server/chunks/11-qXSPdF5j.js.map +1 -0
  99. package/build/server/chunks/{2-CQ3yYSVK.js → 2-BD7kj1mt.js} +3 -3
  100. package/build/server/chunks/{2-CQ3yYSVK.js.map → 2-BD7kj1mt.js.map} +1 -1
  101. package/build/server/chunks/{3-DZ4H9hPs.js → 3-oNjv-BhZ.js} +3 -3
  102. package/build/server/chunks/{3-DZ4H9hPs.js.map → 3-oNjv-BhZ.js.map} +1 -1
  103. package/build/server/chunks/{4-BtYdKCVW.js → 4-Bb5VFhsO.js} +3 -3
  104. package/build/server/chunks/{4-BtYdKCVW.js.map → 4-Bb5VFhsO.js.map} +1 -1
  105. package/build/server/chunks/{5-CvJK3PiH.js → 5-oNoWuIsn.js} +3 -3
  106. package/build/server/chunks/{5-CvJK3PiH.js.map → 5-oNoWuIsn.js.map} +1 -1
  107. package/build/server/chunks/6-DRJGUqHG.js +9 -0
  108. package/build/server/chunks/{6-BZ0enR6b.js.map → 6-DRJGUqHG.js.map} +1 -1
  109. package/build/server/chunks/7-_giJiu0L.js +9 -0
  110. package/build/server/chunks/{7-Lg8imTZn.js.map → 7-_giJiu0L.js.map} +1 -1
  111. package/build/server/chunks/8-zvWAVNT5.js +9 -0
  112. package/build/server/chunks/8-zvWAVNT5.js.map +1 -0
  113. package/build/server/chunks/9-DVyDL445.js +9 -0
  114. package/build/server/chunks/9-DVyDL445.js.map +1 -0
  115. package/build/server/chunks/Banner-BgaAs1rs.js +90 -0
  116. package/build/server/chunks/Banner-BgaAs1rs.js.map +1 -0
  117. package/build/server/chunks/{Button-B5dU-ntz.js → Button-D0hZ7JYt.js} +2 -2
  118. package/build/server/chunks/Button-D0hZ7JYt.js.map +1 -0
  119. package/build/server/chunks/{Icon-C7Ml3GX6.js → Icon-D0GBnDcs.js} +3 -3
  120. package/build/server/chunks/Icon-D0GBnDcs.js.map +1 -0
  121. package/build/server/chunks/{Input-CPGO0sbS.js → Input-OmIiydSx.js} +2 -2
  122. package/build/server/chunks/Input-OmIiydSx.js.map +1 -0
  123. package/build/server/chunks/{Pill-CcrtCejm.js → Pill-4xJ-VhAA.js} +3 -3
  124. package/build/server/chunks/Pill-4xJ-VhAA.js.map +1 -0
  125. package/build/server/chunks/{Shimmer-C5jkvGr1.js → Shimmer-Dw2uvTC1.js} +2 -2
  126. package/build/server/chunks/Shimmer-Dw2uvTC1.js.map +1 -0
  127. package/build/server/chunks/{_error.svelte-CSIxs-ab.js → _error.svelte-CZnkxeLr.js} +8 -8
  128. package/build/server/chunks/{_error.svelte-CSIxs-ab.js.map → _error.svelte-CZnkxeLr.js.map} +1 -1
  129. package/build/server/chunks/{_layout.svelte-noB4j-v2.js → _layout.svelte-DfgNGGiM.js} +16 -11
  130. package/build/server/chunks/_layout.svelte-DfgNGGiM.js.map +1 -0
  131. package/build/server/chunks/{_page.svelte-DnTpPnPR.js → _page.svelte-BLo2v_8E.js} +7 -88
  132. package/build/server/chunks/_page.svelte-BLo2v_8E.js.map +1 -0
  133. package/build/server/chunks/_page.svelte-BTlfUsBp.js +43 -0
  134. package/build/server/chunks/_page.svelte-BTlfUsBp.js.map +1 -0
  135. package/build/server/chunks/{_page.svelte-C60lAagP.js → _page.svelte-BUBLUSGo.js} +8 -8
  136. package/build/server/chunks/_page.svelte-BUBLUSGo.js.map +1 -0
  137. package/build/server/chunks/{_page.svelte-BV0XyYJZ.js → _page.svelte-BX2FMgSg.js} +4 -4
  138. package/build/server/chunks/{_page.svelte-BV0XyYJZ.js.map → _page.svelte-BX2FMgSg.js.map} +1 -1
  139. package/build/server/chunks/{_page.svelte-BUkm2304.js → _page.svelte-C7B0qdrC.js} +5 -5
  140. package/build/server/chunks/{_page.svelte-BUkm2304.js.map → _page.svelte-C7B0qdrC.js.map} +1 -1
  141. package/build/server/chunks/{_page.svelte-Dmg-RFCg.js → _page.svelte-CE7COWnF.js} +7 -7
  142. package/build/server/chunks/{_page.svelte-Dmg-RFCg.js.map → _page.svelte-CE7COWnF.js.map} +1 -1
  143. package/build/server/chunks/{_page.svelte-BfB8maoc.js → _page.svelte-CWsjjd4l.js} +9 -9
  144. package/build/server/chunks/{_page.svelte-BfB8maoc.js.map → _page.svelte-CWsjjd4l.js.map} +1 -1
  145. package/build/server/chunks/_page.svelte-D5S2hkBk.js +104 -0
  146. package/build/server/chunks/_page.svelte-D5S2hkBk.js.map +1 -0
  147. package/build/server/chunks/{_page.svelte-B6qyh-K-.js → _page.svelte-D_Ey8QRG.js} +11 -11
  148. package/build/server/chunks/{_page.svelte-B6qyh-K-.js.map → _page.svelte-D_Ey8QRG.js.map} +1 -1
  149. package/build/server/chunks/{_page.svelte-DuzZr5dA.js → _page.svelte-tBuIq8Pg.js} +11 -11
  150. package/build/server/chunks/{_page.svelte-DuzZr5dA.js.map → _page.svelte-tBuIq8Pg.js.map} +1 -1
  151. package/build/server/chunks/_server.ts-BaaY7Z9D.js +77 -0
  152. package/build/server/chunks/_server.ts-BaaY7Z9D.js.map +1 -0
  153. package/build/server/chunks/{_server.ts-5wx4ZppI.js → _server.ts-Bi0Oe4PF.js} +7 -4
  154. package/build/server/chunks/_server.ts-Bi0Oe4PF.js.map +1 -0
  155. package/build/server/chunks/_server.ts-C0317RBD.js +57 -0
  156. package/build/server/chunks/_server.ts-C0317RBD.js.map +1 -0
  157. package/build/server/chunks/{_server.ts-CKXVBbwb.js → _server.ts-CRVNEOd2.js} +10 -8
  158. package/build/server/chunks/_server.ts-CRVNEOd2.js.map +1 -0
  159. package/build/server/chunks/_server.ts-CVPZOpiv.js +23 -0
  160. package/build/server/chunks/_server.ts-CVPZOpiv.js.map +1 -0
  161. package/build/server/chunks/{_server.ts-CyjDrcZN.js → _server.ts-C_OOUqsd.js} +9 -1
  162. package/build/server/chunks/_server.ts-C_OOUqsd.js.map +1 -0
  163. package/build/server/chunks/{_server.ts-BMMTS86y.js → _server.ts-D9ir7u24.js} +3 -4
  164. package/build/server/chunks/{_server.ts-BMMTS86y.js.map → _server.ts-D9ir7u24.js.map} +1 -1
  165. package/build/server/chunks/{_server.ts-DZ5naqSL.js → _server.ts-DMm0hBP4.js} +5 -1
  166. package/build/server/chunks/_server.ts-DMm0hBP4.js.map +1 -0
  167. package/build/server/chunks/{_server.ts-CgHc1Zpx.js → _server.ts-DhJx0DLr.js} +7 -4
  168. package/build/server/chunks/_server.ts-DhJx0DLr.js.map +1 -0
  169. package/build/server/chunks/_server.ts-DkZX_O9a.js +39 -0
  170. package/build/server/chunks/_server.ts-DkZX_O9a.js.map +1 -0
  171. package/build/server/chunks/{_server.ts-B1z0q6qZ.js → _server.ts-DxT9IlZF.js} +6 -5
  172. package/build/server/chunks/_server.ts-DxT9IlZF.js.map +1 -0
  173. package/build/server/chunks/{_server.ts-Bt7EAfjo.js → _server.ts-MbnroWEF.js} +25 -48
  174. package/build/server/chunks/_server.ts-MbnroWEF.js.map +1 -0
  175. package/build/server/chunks/_server.ts-Mttr0-Sl.js +48 -0
  176. package/build/server/chunks/_server.ts-Mttr0-Sl.js.map +1 -0
  177. package/build/server/chunks/_server.ts-jtqWDWcf.js +45 -0
  178. package/build/server/chunks/_server.ts-jtqWDWcf.js.map +1 -0
  179. package/build/server/chunks/{cache-Me3zUAaD.js → cache-BlMaDsHi.js} +2 -2
  180. package/build/server/chunks/{cache-Me3zUAaD.js.map → cache-BlMaDsHi.js.map} +1 -1
  181. package/build/server/chunks/{client-CfNnl32g.js → client-Ds1brw-8.js} +4 -4
  182. package/build/server/chunks/{client-CfNnl32g.js.map → client-Ds1brw-8.js.map} +1 -1
  183. package/build/server/chunks/client2-DngLdcUc.js +7 -0
  184. package/build/server/chunks/{client2-DDP30_vY.js.map → client2-DngLdcUc.js.map} +1 -1
  185. package/build/server/chunks/coordinator-DMU_ADXf.js +530 -0
  186. package/build/server/chunks/coordinator-DMU_ADXf.js.map +1 -0
  187. package/build/server/chunks/{index-CJrGuxuM.js → index-CoYB03g7.js} +2 -2
  188. package/build/server/chunks/{index-CJrGuxuM.js.map → index-CoYB03g7.js.map} +1 -1
  189. package/build/server/chunks/{index-server--49oHtA0.js → index-server-Bq3cnK69.js} +2 -2
  190. package/build/server/chunks/{index-server--49oHtA0.js.map → index-server-Bq3cnK69.js.map} +1 -1
  191. package/build/server/chunks/{index2-MY7PXeAc.js → index2-dSGQ9Eaa.js} +2 -2
  192. package/build/server/chunks/{index2-MY7PXeAc.js.map → index2-dSGQ9Eaa.js.map} +1 -1
  193. package/build/server/chunks/{pty-manager-RmhVe2Ez.js → pty-manager-41h3IK8K.js} +100 -2
  194. package/build/server/chunks/pty-manager-41h3IK8K.js.map +1 -0
  195. package/build/server/chunks/qwen-reader-DGfUbKaJ.js +2112 -0
  196. package/build/server/chunks/qwen-reader-DGfUbKaJ.js.map +1 -0
  197. package/build/server/chunks/{registry-DzJj2E6I.js → registry-D4J_CuzW.js} +56 -24
  198. package/build/server/chunks/registry-D4J_CuzW.js.map +1 -0
  199. package/build/server/chunks/{root-xvQIR1Bt.js → root-D4IoFC8F.js} +2 -2
  200. package/build/server/chunks/root-D4IoFC8F.js.map +1 -0
  201. package/build/server/chunks/{state.svelte-RCtlkrNH.js → state.svelte-CmHqngc_.js} +3 -3
  202. package/build/server/chunks/{state.svelte-RCtlkrNH.js.map → state.svelte-CmHqngc_.js.map} +1 -1
  203. package/build/server/chunks/{stores-C-LqoonT.js → stores-CRYxfF0o.js} +4 -4
  204. package/build/server/chunks/stores-CRYxfF0o.js.map +1 -0
  205. package/build/server/chunks/super-session-handler-DPyxFgmz.js +22 -0
  206. package/build/server/chunks/super-session-handler-DPyxFgmz.js.map +1 -0
  207. package/build/server/index.js +4 -4
  208. package/build/server/index.js.map +1 -1
  209. package/build/server/manifest.js +79 -21
  210. package/build/server/manifest.js.map +1 -1
  211. package/package.json +2 -2
  212. package/scripts/e2e-all-features.sh +204 -0
  213. package/scripts/e2e-cross-terminal.sh +168 -0
  214. package/server.ts +37 -0
  215. package/src/lib/modules/client/common/provider.ts +0 -2
  216. package/src/lib/modules/client/terminal/ChatView.svelte +9 -2
  217. package/src/lib/modules/client/terminal/LaunchSheet.svelte +3 -0
  218. package/src/lib/modules/server/sessions/amp-reader.ts +439 -0
  219. package/src/lib/modules/server/sessions/copilot-reader.ts +542 -0
  220. package/src/lib/modules/server/sessions/cursor-reader.ts +634 -0
  221. package/src/lib/modules/server/sessions/gemini-reader.ts +48 -25
  222. package/src/lib/modules/server/sessions/opencode-reader.ts +13 -12
  223. package/src/lib/modules/server/sessions/process-detector.ts +37 -60
  224. package/src/lib/modules/server/sessions/provider-paths.ts +173 -0
  225. package/src/lib/modules/server/sessions/qwen-reader.ts +41 -15
  226. package/src/lib/modules/server/sessions/registry.ts +55 -14
  227. package/src/lib/modules/server/sos/coordinator.ts +492 -0
  228. package/src/lib/modules/server/sos/policy-gate.ts +56 -0
  229. package/src/lib/modules/server/sos/relay-store.ts +159 -0
  230. package/src/lib/modules/server/terminal/generic-session-watcher.ts +163 -0
  231. package/src/lib/modules/server/terminal/pty-input.ts +37 -0
  232. package/src/lib/modules/server/terminal/pty-manager.ts +51 -0
  233. package/src/lib/modules/server/ws/server.ts +6 -1
  234. package/src/lib/modules/server/ws/session-handler.ts +17 -2
  235. package/src/lib/modules/server/ws/super-session-handler.ts +200 -0
  236. package/src/lib/theme.css +1 -2
  237. package/src/lib/types/generated/Sessions.ts +1 -4
  238. package/src/lib/types/index.ts +2 -1
  239. package/src/lib/types/server.ts +23 -6
  240. package/src/lib/types/sessions.ts +1 -10
  241. package/src/lib/types/sos.ts +134 -0
  242. package/src/routes/+layout.svelte +9 -2
  243. package/src/routes/api/sessions/connect/+server.ts +7 -3
  244. package/src/routes/api/sos/+server.ts +36 -0
  245. package/src/routes/api/sos/[id]/+server.ts +55 -0
  246. package/src/routes/api/sos/[id]/inject/+server.ts +44 -0
  247. package/src/routes/api/sos/[id]/members/+server.ts +47 -0
  248. package/src/routes/api/sos/[id]/members/[mid]/+server.ts +17 -0
  249. package/src/routes/api/sos/[id]/rules/+server.ts +85 -0
  250. package/src/routes/sos/+page.svelte +195 -0
  251. package/src/routes/sos/[id]/+page.svelte +677 -0
  252. package/build/client/_app/immutable/assets/0.B0O0vCnX.css.br +0 -0
  253. package/build/client/_app/immutable/chunks/BRqaaL5D.js.br +0 -0
  254. package/build/client/_app/immutable/chunks/BRqaaL5D.js.gz +0 -0
  255. package/build/client/_app/immutable/chunks/BctvtE4d.js.br +0 -0
  256. package/build/client/_app/immutable/chunks/BxFShcQO.js +0 -1
  257. package/build/client/_app/immutable/chunks/BxFShcQO.js.br +0 -0
  258. package/build/client/_app/immutable/chunks/BxFShcQO.js.gz +0 -0
  259. package/build/client/_app/immutable/chunks/ByzqAuXw.js +0 -3
  260. package/build/client/_app/immutable/chunks/ByzqAuXw.js.br +0 -0
  261. package/build/client/_app/immutable/chunks/ByzqAuXw.js.gz +0 -0
  262. package/build/client/_app/immutable/chunks/C5VOyQCG.js.br +0 -0
  263. package/build/client/_app/immutable/chunks/C5VOyQCG.js.gz +0 -0
  264. package/build/client/_app/immutable/chunks/C_9BZILB.js.br +0 -0
  265. package/build/client/_app/immutable/chunks/C_9BZILB.js.gz +0 -0
  266. package/build/client/_app/immutable/chunks/Cg3dlX05.js.br +0 -0
  267. package/build/client/_app/immutable/chunks/Cg3dlX05.js.gz +0 -0
  268. package/build/client/_app/immutable/chunks/CjfxuHdN.js.br +0 -0
  269. package/build/client/_app/immutable/chunks/CjfxuHdN.js.gz +0 -0
  270. package/build/client/_app/immutable/chunks/DYuMZGL5.js.br +0 -0
  271. package/build/client/_app/immutable/chunks/DYuMZGL5.js.gz +0 -0
  272. package/build/client/_app/immutable/chunks/DZQMsHM5.js.br +0 -0
  273. package/build/client/_app/immutable/chunks/DZQMsHM5.js.gz +0 -0
  274. package/build/client/_app/immutable/chunks/DZvnhU_8.js.br +0 -0
  275. package/build/client/_app/immutable/chunks/DZvnhU_8.js.gz +0 -0
  276. package/build/client/_app/immutable/chunks/Pw0jDB7M.js +0 -1
  277. package/build/client/_app/immutable/chunks/Pw0jDB7M.js.br +0 -0
  278. package/build/client/_app/immutable/chunks/Pw0jDB7M.js.gz +0 -0
  279. package/build/client/_app/immutable/entry/app.CNaTe-zm.js +0 -2
  280. package/build/client/_app/immutable/entry/app.CNaTe-zm.js.br +0 -0
  281. package/build/client/_app/immutable/entry/app.CNaTe-zm.js.gz +0 -0
  282. package/build/client/_app/immutable/entry/start.hxYnjcDu.js +0 -1
  283. package/build/client/_app/immutable/entry/start.hxYnjcDu.js.br +0 -0
  284. package/build/client/_app/immutable/entry/start.hxYnjcDu.js.gz +0 -0
  285. package/build/client/_app/immutable/nodes/0.C3ELOf4c.js +0 -7
  286. package/build/client/_app/immutable/nodes/0.C3ELOf4c.js.br +0 -0
  287. package/build/client/_app/immutable/nodes/0.C3ELOf4c.js.gz +0 -0
  288. package/build/client/_app/immutable/nodes/1.Fqso94b3.js.br +0 -0
  289. package/build/client/_app/immutable/nodes/1.Fqso94b3.js.gz +0 -0
  290. package/build/client/_app/immutable/nodes/2.BusCVJWk.js.br +0 -0
  291. package/build/client/_app/immutable/nodes/2.BusCVJWk.js.gz +0 -0
  292. package/build/client/_app/immutable/nodes/3.DUlpocIc.js.br +0 -0
  293. package/build/client/_app/immutable/nodes/3.DUlpocIc.js.gz +0 -0
  294. package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.br +0 -0
  295. package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.gz +0 -0
  296. package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.br +0 -0
  297. package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.gz +0 -0
  298. package/build/client/_app/immutable/nodes/6.CG4eKRH0.js.br +0 -0
  299. package/build/client/_app/immutable/nodes/6.CG4eKRH0.js.gz +0 -0
  300. package/build/client/_app/immutable/nodes/7.DHilxD1o.js.br +0 -0
  301. package/build/client/_app/immutable/nodes/7.DHilxD1o.js.gz +0 -0
  302. package/build/client/_app/immutable/nodes/8.BjKgvSie.js.br +0 -0
  303. package/build/client/_app/immutable/nodes/8.BjKgvSie.js.gz +0 -0
  304. package/build/client/_app/immutable/nodes/9.BRT6HOXB.js.br +0 -0
  305. package/build/client/_app/immutable/nodes/9.BRT6HOXB.js.gz +0 -0
  306. package/build/server/chunks/1-Bw5KlAjL.js +0 -9
  307. package/build/server/chunks/6-BZ0enR6b.js +0 -9
  308. package/build/server/chunks/7-Lg8imTZn.js +0 -9
  309. package/build/server/chunks/8-DKs4yOL7.js +0 -9
  310. package/build/server/chunks/8-DKs4yOL7.js.map +0 -1
  311. package/build/server/chunks/9-UNmpUWDY.js +0 -9
  312. package/build/server/chunks/9-UNmpUWDY.js.map +0 -1
  313. package/build/server/chunks/Button-B5dU-ntz.js.map +0 -1
  314. package/build/server/chunks/Icon-C7Ml3GX6.js.map +0 -1
  315. package/build/server/chunks/Input-CPGO0sbS.js.map +0 -1
  316. package/build/server/chunks/Pill-CcrtCejm.js.map +0 -1
  317. package/build/server/chunks/Shimmer-C5jkvGr1.js.map +0 -1
  318. package/build/server/chunks/_layout.svelte-noB4j-v2.js.map +0 -1
  319. package/build/server/chunks/_page.svelte-C60lAagP.js.map +0 -1
  320. package/build/server/chunks/_page.svelte-DnTpPnPR.js.map +0 -1
  321. package/build/server/chunks/_server.ts-5wx4ZppI.js.map +0 -1
  322. package/build/server/chunks/_server.ts-B1z0q6qZ.js.map +0 -1
  323. package/build/server/chunks/_server.ts-Bt7EAfjo.js.map +0 -1
  324. package/build/server/chunks/_server.ts-CKXVBbwb.js.map +0 -1
  325. package/build/server/chunks/_server.ts-CgHc1Zpx.js.map +0 -1
  326. package/build/server/chunks/_server.ts-CyjDrcZN.js.map +0 -1
  327. package/build/server/chunks/_server.ts-DZ5naqSL.js.map +0 -1
  328. package/build/server/chunks/client2-DDP30_vY.js +0 -7
  329. package/build/server/chunks/opencode-db-path-BwaPufWf.js +0 -411
  330. package/build/server/chunks/opencode-db-path-BwaPufWf.js.map +0 -1
  331. package/build/server/chunks/pty-manager-RmhVe2Ez.js.map +0 -1
  332. package/build/server/chunks/qwen-reader-2fTFuC_D.js +0 -622
  333. package/build/server/chunks/qwen-reader-2fTFuC_D.js.map +0 -1
  334. package/build/server/chunks/registry-DzJj2E6I.js.map +0 -1
  335. package/build/server/chunks/root-xvQIR1Bt.js.map +0 -1
  336. package/build/server/chunks/stores-C-LqoonT.js.map +0 -1
  337. /package/build/client/_app/immutable/assets/{8.BhoBXADL.css → 10.BhoBXADL.css} +0 -0
  338. /package/build/client/_app/immutable/assets/{8.BhoBXADL.css.br → 10.BhoBXADL.css.br} +0 -0
  339. /package/build/client/_app/immutable/assets/{8.BhoBXADL.css.gz → 10.BhoBXADL.css.gz} +0 -0
  340. /package/build/client/_app/immutable/assets/{9.v5KA95xm.css → 11.v5KA95xm.css} +0 -0
  341. /package/build/client/_app/immutable/assets/{9.v5KA95xm.css.br → 11.v5KA95xm.css.br} +0 -0
  342. /package/build/client/_app/immutable/assets/{9.v5KA95xm.css.gz → 11.v5KA95xm.css.gz} +0 -0
@@ -0,0 +1,23 @@
1
+ import { v as validateAuth } from './auth-DuunT7Cg.js';
2
+ import { s as sosCoordinator } from './coordinator-DMU_ADXf.js';
3
+ import { j as json } from './index-CoD1IJuy.js';
4
+ import './shared-server-DaWdgxVh.js';
5
+ import 'crypto';
6
+ import 'better-sqlite3';
7
+ import 'fs';
8
+ import 'os';
9
+ import 'path';
10
+
11
+ const DELETE = ({ params, request }) => {
12
+ const authError = validateAuth(request);
13
+ if (authError) {
14
+ return authError;
15
+ }
16
+ if (!sosCoordinator.removeMember(params.id ?? "", params.mid ?? "")) {
17
+ return json({ error: "Super-session or member not found" }, { status: 404 });
18
+ }
19
+ return json({ removed: true });
20
+ };
21
+
22
+ export { DELETE };
23
+ //# sourceMappingURL=_server.ts-CVPZOpiv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CVPZOpiv.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sos/_id_/members/_mid_/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../../../chunks/auth.js\";\nimport { s as sosCoordinator } from \"../../../../../../../chunks/coordinator.js\";\nimport { json } from \"@sveltejs/kit\";\nconst DELETE = ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n if (!sosCoordinator.removeMember(params.id ?? \"\", params.mid ?? \"\")) {\n return json({ error: \"Super-session or member not found\" }, { status: 404 });\n }\n return json({ removed: true });\n};\nexport {\n DELETE\n};\n"],"names":[],"mappings":";;;;;;;;;;AAGK,MAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;AACvE,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChF,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChC;;;;"}
@@ -1,8 +1,16 @@
1
1
  import { v as validateAuth } from './auth-DuunT7Cg.js';
2
2
  import { g as getEventsClientCount } from './events-handler-Dm1mNPQP.js';
3
+ import './super-session-handler-DPyxFgmz.js';
3
4
  import { j as json } from './index-CoD1IJuy.js';
4
5
  import './shared-server-DaWdgxVh.js';
5
6
  import 'crypto';
7
+ import 'path';
8
+ import './registry-D4J_CuzW.js';
9
+ import './qwen-reader-DGfUbKaJ.js';
10
+ import 'fs';
11
+ import 'os';
12
+ import 'better-sqlite3';
13
+ import './coordinator-DMU_ADXf.js';
6
14
 
7
15
  function getConnectedClientCount() {
8
16
  return getEventsClientCount();
@@ -18,4 +26,4 @@ const GET = ({ request }) => {
18
26
  };
19
27
 
20
28
  export { GET };
21
- //# sourceMappingURL=_server.ts-CyjDrcZN.js.map
29
+ //# sourceMappingURL=_server.ts-C_OOUqsd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-C_OOUqsd.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/ws-status/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { g as getEventsClientCount } from \"../../../../chunks/events-handler.js\";\nimport \"../../../../chunks/super-session-handler.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction getConnectedClientCount() {\n return getEventsClientCount();\n}\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n return json({\n connectedClients: getConnectedClientCount()\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,SAAS,uBAAuB,GAAG;AACnC,EAAE,OAAO,oBAAoB,EAAE;AAC/B;AACK,MAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK;AAC7B,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,OAAO,IAAI,CAAC;AACd,IAAI,gBAAgB,EAAE,uBAAuB;AAC7C,GAAG,CAAC;AACJ;;;;"}
@@ -1,13 +1,12 @@
1
1
  import { v as validateAuth } from './auth-DuunT7Cg.js';
2
- import { g as getProviderConversation, l as listAllProviderProjects } from './registry-DzJj2E6I.js';
2
+ import { g as getProviderConversation, l as listAllProviderProjects } from './registry-D4J_CuzW.js';
3
3
  import { j as json } from './index-CoD1IJuy.js';
4
4
  import './shared-server-DaWdgxVh.js';
5
5
  import 'crypto';
6
- import './opencode-db-path-BwaPufWf.js';
6
+ import './qwen-reader-DGfUbKaJ.js';
7
7
  import 'fs';
8
8
  import 'os';
9
9
  import 'path';
10
- import './qwen-reader-2fTFuC_D.js';
11
10
  import 'better-sqlite3';
12
11
 
13
12
  let cachedProjects = null;
@@ -79,4 +78,4 @@ const GET = ({ request, url }) => {
79
78
  };
80
79
 
81
80
  export { GET };
82
- //# sourceMappingURL=_server.ts-BMMTS86y.js.map
81
+ //# sourceMappingURL=_server.ts-D9ir7u24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-BMMTS86y.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { g as getProviderConversation, l as listAllProviderProjects } from \"../../../../chunks/registry.js\";\nimport { json } from \"@sveltejs/kit\";\nlet cachedProjects = null;\nlet cacheTimestamp = 0;\nconst CACHE_TTL_MS = 5e3;\nfunction getMergedProjects() {\n const now = Date.now();\n if (cachedProjects && now - cacheTimestamp < CACHE_TTL_MS) {\n return cachedProjects;\n }\n cachedProjects = listAllProviderProjects();\n cacheTimestamp = now;\n return cachedProjects;\n}\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n if (url.searchParams.get(\"refresh\") === \"true\") {\n cachedProjects = null;\n cacheTimestamp = 0;\n }\n const sessionId = url.searchParams.get(\"id\");\n if (sessionId) {\n const projectId = url.searchParams.get(\"project\") || \"\";\n const rawOffset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const rawLimit = parseInt(url.searchParams.get(\"limit\") || \"200\");\n const offset2 = Number.isFinite(rawOffset) && rawOffset >= 0 ? rawOffset : 0;\n const limit2 = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, 500) : 200;\n const allProjects2 = getMergedProjects();\n const matchesProject = (p) => p.id === projectId || p.fullPath === projectId;\n const matchedProject = projectId ? allProjects2.find(matchesProject) : void 0;\n const claudeProjectDir = matchedProject ? matchedProject.fullPath.replace(/\\//g, \"-\") : void 0;\n const messages = getProviderConversation(sessionId, offset2, limit2, claudeProjectDir);\n let sessionInfo = matchedProject?.sessions.find((s) => s.id === sessionId) ?? null;\n if (!sessionInfo) {\n for (const project of allProjects2) {\n if (projectId && !matchesProject(project)) {\n continue;\n }\n const found = project.sessions.find((s) => s.id === sessionId);\n if (found) {\n sessionInfo = found;\n break;\n }\n }\n }\n if (!sessionInfo) {\n return json({ error: \"Session not found\" }, { status: 404 });\n }\n return json({\n messages,\n session: sessionInfo,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const allProjects = getMergedProjects();\n const limit = parseInt(url.searchParams.get(\"limit\") || \"0\");\n const offset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const total = allProjects.length;\n const paginatedProjects = limit > 0 ? allProjects.slice(offset, offset + limit) : allProjects;\n return json({\n count: allProjects.reduce((sum, p) => sum + p.sessionCount, 0),\n projects: paginatedProjects,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n total\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-D9ir7u24.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { g as getProviderConversation, l as listAllProviderProjects } from \"../../../../chunks/registry.js\";\nimport { json } from \"@sveltejs/kit\";\nlet cachedProjects = null;\nlet cacheTimestamp = 0;\nconst CACHE_TTL_MS = 5e3;\nfunction getMergedProjects() {\n const now = Date.now();\n if (cachedProjects && now - cacheTimestamp < CACHE_TTL_MS) {\n return cachedProjects;\n }\n cachedProjects = listAllProviderProjects();\n cacheTimestamp = now;\n return cachedProjects;\n}\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n if (url.searchParams.get(\"refresh\") === \"true\") {\n cachedProjects = null;\n cacheTimestamp = 0;\n }\n const sessionId = url.searchParams.get(\"id\");\n if (sessionId) {\n const projectId = url.searchParams.get(\"project\") || \"\";\n const rawOffset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const rawLimit = parseInt(url.searchParams.get(\"limit\") || \"200\");\n const offset2 = Number.isFinite(rawOffset) && rawOffset >= 0 ? rawOffset : 0;\n const limit2 = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, 500) : 200;\n const allProjects2 = getMergedProjects();\n const matchesProject = (p) => p.id === projectId || p.fullPath === projectId;\n const matchedProject = projectId ? allProjects2.find(matchesProject) : void 0;\n const claudeProjectDir = matchedProject ? matchedProject.fullPath.replace(/\\//g, \"-\") : void 0;\n const messages = getProviderConversation(sessionId, offset2, limit2, claudeProjectDir);\n let sessionInfo = matchedProject?.sessions.find((s) => s.id === sessionId) ?? null;\n if (!sessionInfo) {\n for (const project of allProjects2) {\n if (projectId && !matchesProject(project)) {\n continue;\n }\n const found = project.sessions.find((s) => s.id === sessionId);\n if (found) {\n sessionInfo = found;\n break;\n }\n }\n }\n if (!sessionInfo) {\n return json({ error: \"Session not found\" }, { status: 404 });\n }\n return json({\n messages,\n session: sessionInfo,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const allProjects = getMergedProjects();\n const limit = parseInt(url.searchParams.get(\"limit\") || \"0\");\n const offset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const total = allProjects.length;\n const paginatedProjects = limit > 0 ? allProjects.slice(offset, offset + limit) : allProjects;\n return json({\n count: allProjects.reduce((sum, p) => sum + p.sessionCount, 0),\n projects: paginatedProjects,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n total\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":"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"}
@@ -8,12 +8,16 @@ import { b as broadcastEvent } from './events-handler-Dm1mNPQP.js';
8
8
  import { existsSync, readFileSync } from 'fs';
9
9
  import { join } from 'path';
10
10
  import { homedir } from 'os';
11
+ import './super-session-handler-DPyxFgmz.js';
11
12
  import { j as json } from './index-CoD1IJuy.js';
12
13
  import 'child_process';
13
14
  import 'jsonwebtoken';
14
15
  import 'util';
15
16
  import 'better-sqlite3';
16
17
  import 'crypto';
18
+ import './registry-D4J_CuzW.js';
19
+ import './qwen-reader-DGfUbKaJ.js';
20
+ import './coordinator-DMU_ADXf.js';
17
21
 
18
22
  const MAX_HISTORY = 100;
19
23
  const history = [];
@@ -506,4 +510,4 @@ const GET = ({ request, url }) => {
506
510
  };
507
511
 
508
512
  export { GET, POST };
509
- //# sourceMappingURL=_server.ts-DZ5naqSL.js.map
513
+ //# sourceMappingURL=_server.ts-DMm0hBP4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DMm0hBP4.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/notify/_server.ts.js"],"sourcesContent":["import { b as private_env } from \"../../../../chunks/shared-server.js\";\nimport { L as LibraryAPNsService } from \"../../../../chunks/library-apns.js\";\nimport { c as createPendingRequest } from \"../../../../chunks/pending-requests.js\";\nimport { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport admin from \"firebase-admin\";\nimport { t as toErrorMessage } from \"../../../../chunks/error.js\";\nimport { b as broadcastEvent } from \"../../../../chunks/events-handler.js\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport \"../../../../chunks/super-session-handler.js\";\nimport { json } from \"@sveltejs/kit\";\nconst MAX_HISTORY = 100;\nconst history = [];\nfunction addNotification(record) {\n history.unshift(record);\n if (history.length > MAX_HISTORY) {\n history.length = MAX_HISTORY;\n }\n}\nfunction getNotifications(limit = 50) {\n return history.slice(0, limit);\n}\nlet app = null;\nfunction isFCMConfigured() {\n return !!(process.env.FCM_PROJECT_ID && process.env.FCM_CLIENT_EMAIL && process.env.FCM_PRIVATE_KEY);\n}\nasync function sendFCMNotification(deviceToken, payload) {\n try {\n const fcmApp = getApp();\n const message = {\n android: {\n priority: \"high\",\n // Ensures delivery even in Doze mode\n ttl: 3e5\n // 5 minutes TTL (matches pending request expiry)\n },\n data: {\n body: payload.body || payload.message || \"\",\n category: payload.category ?? (typeof payload.data?.category === \"string\" ? payload.data.category : \"\"),\n project: typeof payload.data?.project === \"string\" ? payload.data.project : \"\",\n requestId: typeof payload.data?.requestId === \"string\" ? payload.data.requestId : \"\",\n source: typeof payload.data?.source === \"string\" ? payload.data.source : \"\",\n subtitle: payload.subtitle ?? \"\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title: payload.title,\n toolInput: payload.data?.toolInput ? JSON.stringify(payload.data.toolInput) : \"\",\n toolName: typeof payload.data?.toolName === \"string\" ? payload.data.toolName : \"\",\n type: typeof payload.data?.type === \"string\" ? payload.data.type : \"\"\n },\n token: deviceToken\n };\n const messageId = await admin.messaging(fcmApp).send(message);\n return { messageId, success: true };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(\"[FCM] Send failed:\", errorMessage);\n return { error: errorMessage, success: false };\n }\n}\nfunction getApp() {\n if (!app) {\n const projectId = process.env.FCM_PROJECT_ID;\n const clientEmail = process.env.FCM_CLIENT_EMAIL;\n const privateKey = process.env.FCM_PRIVATE_KEY?.replace(/\\\\n/g, \"\\n\");\n if (!projectId || !clientEmail || !privateKey) {\n throw new Error(\n \"FCM not configured: missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY\"\n );\n }\n app = admin.initializeApp({\n credential: admin.credential.cert({ clientEmail, privateKey, projectId })\n });\n }\n return app;\n}\nfunction readPersistedDeviceToken(platform) {\n const tokensFile = join(homedir(), \".shooter\", \"device-tokens.json\");\n if (!existsSync(tokensFile)) {\n return void 0;\n }\n try {\n const parsed = JSON.parse(readFileSync(tokensFile, \"utf-8\"));\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n const value = parsed[platform];\n return typeof value === \"string\" && value ? value : void 0;\n }\n } catch {\n }\n return void 0;\n}\nlet apnsSingleton = null;\nfunction getAPNsClient() {\n if (!apnsSingleton) {\n apnsSingleton = new LibraryAPNsService();\n }\n return apnsSingleton;\n}\nconst notificationCache = /* @__PURE__ */ new Map();\nconst DEDUP_WINDOW = 1e4;\nfunction broadcastHookEvent(body) {\n const data = body.data ?? {};\n const eventType = typeof data.eventType === \"string\" ? data.eventType : typeof body.eventType === \"string\" ? body.eventType : \"\";\n const tool = typeof data.tool === \"string\" ? data.tool : \"\";\n const terminalId = typeof data.terminalId === \"string\" ? data.terminalId : void 0;\n const sessionId = typeof data.sessionId === \"string\" ? data.sessionId : void 0;\n switch (eventType) {\n case \"error\":\n broadcastEvent({\n error: typeof data.error === \"string\" ? data.error : typeof data.message === \"string\" ? data.message : \"Unknown error\",\n terminalId,\n tool,\n type: \"tool-failed\"\n });\n break;\n case \"idle_input\":\n case \"session.idle\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-idle\"\n });\n break;\n case \"permission\":\n case \"permission_notification\":\n if (data.requestId && data.toolName) {\n broadcastEvent({\n input: typeof data.toolInput === \"object\" && data.toolInput !== null ? data.toolInput : {},\n requestId: data.requestId,\n tool: data.toolName,\n type: \"permission-requested\"\n });\n }\n break;\n case \"question\":\n broadcastEvent({\n message: typeof data.message === \"string\" ? data.message : \"\",\n sessionId,\n terminalId,\n type: \"agent-question\"\n });\n break;\n case \"tool.after\":\n broadcastEvent({ success: true, terminalId, tool, type: \"tool-completed\" });\n break;\n case \"tool.before\":\n broadcastEvent({\n command: typeof data.command === \"string\" ? data.command : \"\",\n filePath: typeof data.filePath === \"string\" ? data.filePath : typeof data.files === \"string\" ? data.files : \"\",\n terminalId,\n tool,\n type: \"tool-started\"\n });\n break;\n }\n}\nfunction buildNotificationRecord(id, title, message, status, data, error) {\n return {\n category: data?.category ?? null,\n data: data ?? null,\n error: error ?? null,\n id,\n message,\n project: data?.project ?? null,\n source: data?.source ?? null,\n status,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n title,\n tool: data?.tool ?? null\n };\n}\nfunction intelligentNotificationFilter(title, message, data, waitForResponse = false) {\n const source = data?.source || \"unknown\";\n if (isDuplicateNotification(title, message, data, waitForResponse)) {\n return {\n reason: \"Duplicate notification within 10-second window\",\n send: false\n };\n }\n if (source === \"smart-completion-detector\" || source === \"shooter-completion-detector\") {\n return {\n reason: \"Smart completion detector - completion or intervention needed\",\n send: true\n };\n }\n if (source === \"stop-hook\") {\n return {\n reason: \"Stop hook completion notification - session finished\",\n send: true\n };\n }\n const spamPatterns = [\n /PreToolUse/i,\n // Any PreToolUse notifications\n /PostToolUse/i,\n // Any PostToolUse notifications\n /^(Read|Write|Edit|Bash)\\s+Starting\\s*\\|\\s*\\w+$/i,\n // Only basic tool starting patterns\n /^unknown\\s*\\|\\s*\\w+$/i\n // Only \"unknown | projectname\" exactly\n ];\n const isSpam = spamPatterns.some((pattern) => pattern.test(title) || pattern.test(message));\n if (isSpam) {\n return {\n reason: \"Filtered spam notification from old hook system\",\n send: false\n };\n }\n const importantPatterns = [\n /session complete/i,\n /intervention needed/i,\n /error/i,\n /failed/i,\n /blocked/i,\n /attention/i\n ];\n const isImportant = importantPatterns.some(\n (pattern) => pattern.test(title) || pattern.test(message)\n );\n if (isImportant) {\n return {\n reason: \"Important notification - completion or intervention\",\n send: true\n };\n }\n return {\n reason: \"General notification - allowing by default\",\n send: true\n };\n}\nfunction isDuplicateNotification(title, message, data, waitForResponse = false) {\n if (waitForResponse) {\n return false;\n }\n const key = `${title}|${message}|${data?.category || \"unknown\"}`;\n const now = Date.now();\n if (notificationCache.has(key)) {\n const lastSent = notificationCache.get(key) ?? 0;\n if (now - lastSent < DEDUP_WINDOW) {\n return true;\n }\n }\n for (const [k, v] of notificationCache.entries()) {\n if (now - v > DEDUP_WINDOW) {\n notificationCache.delete(k);\n }\n }\n return false;\n}\nfunction recordNotification(title, message, data) {\n const key = `${title}|${message}|${data?.category || \"unknown\"}`;\n notificationCache.set(key, Date.now());\n}\nconst POST = async ({ request }) => {\n try {\n const apnsClient = getAPNsClient();\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const rawBody = await request.json();\n if (!rawBody || typeof rawBody !== \"object\" || Array.isArray(rawBody)) {\n return json({ error: \"Request body must be a JSON object\" }, { status: 400 });\n }\n const body = rawBody;\n const data = body.data;\n const requestDeviceToken = body.deviceToken;\n const message = body.message;\n const title = body.title;\n const subtitle = typeof body.subtitle === \"string\" ? body.subtitle : void 0;\n const skipPush = typeof body.skipPush === \"boolean\" ? body.skipPush : false;\n const waitForResponse = typeof body.waitForResponse === \"boolean\" ? body.waitForResponse : false;\n const notificationCategory = typeof body.notificationCategory === \"string\" && body.notificationCategory.length > 0 ? body.notificationCategory : void 0;\n const question = typeof body.question === \"string\" ? body.question : void 0;\n const options = Array.isArray(body.options) && body.options.every((o) => o && typeof o === \"object\") ? body.options : void 0;\n const responseKindRaw = body.responseKind;\n const responseKind = responseKindRaw === \"hook\" || responseKindRaw === \"pty\" || responseKindRaw === \"info\" ? responseKindRaw : void 0;\n try {\n broadcastHookEvent(body);\n } catch {\n }\n if (!title || typeof title !== \"string\" || !message || typeof message !== \"string\") {\n return json({ error: \"Title and message are required and must be strings\" }, { status: 400 });\n }\n if (requestDeviceToken !== void 0 && typeof requestDeviceToken !== \"string\") {\n return json({ error: \"deviceToken must be a string\" }, { status: 400 });\n }\n const requestId = Math.random().toString(36).substring(2, 15);\n const dataRequestId = typeof data?.requestId === \"string\" ? data.requestId : void 0;\n const canonicalRequestId = dataRequestId || requestId;\n const shouldSendNotification = intelligentNotificationFilter(\n title,\n message,\n data,\n waitForResponse\n );\n if (!shouldSendNotification.send) {\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"filtered\",\n data,\n shouldSendNotification.reason\n )\n );\n return json({\n message: \"Notification filtered (not sent)\",\n reason: shouldSendNotification.reason,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n if (skipPush) {\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"skipped\", data));\n return json({\n message: \"Push skipped (WebSocket clients connected)\",\n requestId: canonicalRequestId,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const payload = {\n badge: 1,\n body: message,\n // notificationCategory wins when explicitly set so plan-mode /\n // elicitation flows can pick CLAUDE_PLAN_APPROVAL / CHOICE_2..4.\n // Falls back to CLAUDE_PERMISSION for the legacy bidirectional\n // permission flow when only waitForResponse is provided.\n category: notificationCategory ?? (waitForResponse ? \"CLAUDE_PERMISSION\" : void 0),\n data: {\n ...data,\n requestId: canonicalRequestId,\n source: \"modern-apns-api\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n waitForResponse: waitForResponse || false\n },\n message: null,\n sound: \"default\",\n ...subtitle ? { subtitle } : {},\n title\n };\n const platform = private_env.DEVICE_PLATFORM || \"ios\";\n if (platform === \"android\") {\n if (!isFCMConfigured()) {\n return json(\n {\n details: \"Missing FCM_PROJECT_ID, FCM_CLIENT_EMAIL, or FCM_PRIVATE_KEY environment variables\",\n error: \"FCM not configured\"\n },\n { status: 500 }\n );\n }\n const androidToken = requestDeviceToken?.trim() || private_env.ANDROID_DEVICE_TOKEN?.trim() || readPersistedDeviceToken(\"android\");\n if (!androidToken) {\n return json(\n {\n details: \"No Android device token available — set ANDROID_DEVICE_TOKEN, pass deviceToken in the request body, or open the Android app so it can auto-register its FCM token.\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n const fcmResult = await sendFCMNotification(androidToken, payload);\n if (fcmResult.success) {\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result: { messageId: fcmResult.messageId },\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } else {\n console.error(`[notify] FCM delivery failed: ${fcmResult.error}`);\n addNotification(\n buildNotificationRecord(\n canonicalRequestId,\n title,\n message,\n \"failed\",\n data,\n fcmResult.error\n )\n );\n return json(\n {\n details: fcmResult.error,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n } else {\n if (!apnsClient.isConfigured()) {\n return json(\n {\n details: \"Missing APNS_KEY, APNS_KEY_ID, or APNS_TEAM_ID environment variables\",\n error: \"APNs client not configured\"\n },\n { status: 500 }\n );\n }\n const deviceToken = requestDeviceToken?.trim() || private_env.DEVICE_TOKEN?.trim();\n if (!deviceToken) {\n return json(\n {\n details: \"DEVICE_TOKEN environment variable is missing and no deviceToken in request body\",\n error: \"No device token configured\"\n },\n { status: 500 }\n );\n }\n try {\n const result = await apnsClient.sendNotification(deviceToken, payload);\n recordNotification(title, message, data);\n if (waitForResponse) {\n createPendingRequest(canonicalRequestId, {\n options,\n question: question ?? null,\n responseKind: responseKind ?? \"hook\",\n sessionId: data?.sessionId || \"\",\n toolInput: data?.toolInput || {},\n toolName: data?.toolName || \"\"\n });\n }\n addNotification(buildNotificationRecord(canonicalRequestId, title, message, \"sent\", data));\n return json({\n message: \"Notification sent successfully\",\n requestId: canonicalRequestId,\n result,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (notificationError) {\n const notifErrMsg = toErrorMessage(notificationError);\n console.error(`[notify] APNs delivery failed: ${notifErrMsg}`);\n addNotification(\n buildNotificationRecord(canonicalRequestId, title, message, \"failed\", data, notifErrMsg)\n );\n return json(\n {\n details: notifErrMsg,\n error: \"Failed to send notification\",\n requestId: canonicalRequestId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n }\n } catch (error) {\n console.error(\"Notification error:\", error);\n return json(\n {\n details: toErrorMessage(error),\n error: \"Failed to send notification\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n { status: 500 }\n );\n }\n};\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n const limit = parseInt(url.searchParams.get(\"limit\") || \"50\");\n const notifications = getNotifications(limit);\n return json({\n count: notifications.length,\n notifications,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { v as validateAuth } from './auth-DuunT7Cg.js';
2
- import { p as ptyManager } from './pty-manager-RmhVe2Ez.js';
2
+ import { p as ptyManager } from './pty-manager-41h3IK8K.js';
3
3
  import { t as toErrorMessage } from './error-DDXB3duW.js';
4
4
  import { j as json } from './index-CoD1IJuy.js';
5
5
  import './shared-server-DaWdgxVh.js';
@@ -8,11 +8,14 @@ import 'child_process';
8
8
  import 'fs';
9
9
  import 'path';
10
10
  import 'url';
11
- import './opencode-db-path-BwaPufWf.js';
11
+ import './qwen-reader-DGfUbKaJ.js';
12
12
  import 'os';
13
13
  import './events-handler-Dm1mNPQP.js';
14
- import 'net';
14
+ import './super-session-handler-DPyxFgmz.js';
15
+ import './registry-D4J_CuzW.js';
15
16
  import 'better-sqlite3';
17
+ import './coordinator-DMU_ADXf.js';
18
+ import 'net';
16
19
 
17
20
  function lastScrollbackLine(scrollback) {
18
21
  if (!scrollback) {
@@ -90,4 +93,4 @@ const DELETE = ({ params, request }) => {
90
93
  };
91
94
 
92
95
  export { DELETE, GET };
93
- //# sourceMappingURL=_server.ts-CgHc1Zpx.js.map
96
+ //# sourceMappingURL=_server.ts-DhJx0DLr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DhJx0DLr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/terminals/_id_/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../chunks/auth.js\";\nimport { p as ptyManager } from \"../../../../../chunks/pty-manager.js\";\nimport { t as toErrorMessage } from \"../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction lastScrollbackLine(scrollback) {\n if (!scrollback) {\n return null;\n }\n const lines = scrollback.trimEnd().split(\"\\n\");\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i].trim();\n if (line) {\n return line.slice(0, 200);\n }\n }\n return null;\n}\nconst GET = ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n try {\n const terminal = ptyManager.get(params.id);\n if (!terminal) {\n return json({ error: \"Terminal not found\" }, { status: 404 });\n }\n return json({\n args: terminal.args,\n clientCount: terminal.clients.size,\n command: terminal.command,\n createdAt: terminal.createdAt.toISOString(),\n cwd: terminal.cwd,\n exitCode: terminal.exitCode,\n exitedAt: terminal.exitedAt?.toISOString() ?? null,\n id: terminal.id,\n lastOutput: lastScrollbackLine(terminal.scrollback),\n pid: terminal.pid,\n sessionWs: `/ws/session/${terminal.id}`,\n status: terminal.status,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n ws: `/ws/terminal/${terminal.id}`\n });\n } catch (error) {\n console.error(\"[terminals] Failed to get terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to get terminal\" }, { status: 500 });\n }\n};\nconst DELETE = ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n try {\n const terminal = ptyManager.get(params.id);\n if (!terminal) {\n return json({ error: \"Terminal not found\" }, { status: 404 });\n }\n if (terminal.status === \"exited\") {\n ptyManager.remove(params.id);\n console.log(`[terminals] Removed exited terminal ${params.id}`);\n return json({\n removed: true,\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n ptyManager.kill(params.id);\n console.log(`[terminals] Killed terminal ${params.id} (pid=${terminal.pid})`);\n return json({\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"[terminals] Failed to kill terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to kill terminal\" }, { status: 500 });\n }\n};\nexport {\n DELETE,\n GET\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { v as validateAuth } from './auth-DuunT7Cg.js';
2
+ import { s as sosCoordinator } from './coordinator-DMU_ADXf.js';
3
+ import { j as json } from './index-CoD1IJuy.js';
4
+ import './shared-server-DaWdgxVh.js';
5
+ import 'crypto';
6
+ import 'better-sqlite3';
7
+ import 'fs';
8
+ import 'os';
9
+ import 'path';
10
+
11
+ const GET = ({ request }) => {
12
+ const authError = validateAuth(request);
13
+ if (authError) {
14
+ return authError;
15
+ }
16
+ return json({ superSessions: sosCoordinator.listSuperSessions() });
17
+ };
18
+ const POST = async ({ request }) => {
19
+ const authError = validateAuth(request);
20
+ if (authError) {
21
+ return authError;
22
+ }
23
+ let body;
24
+ try {
25
+ body = await request.json();
26
+ } catch {
27
+ return json({ error: "Invalid JSON in request body" }, { status: 400 });
28
+ }
29
+ if (typeof body !== "object" || body === null) {
30
+ return json({ error: "Invalid JSON in request body" }, { status: 400 });
31
+ }
32
+ const payload = body;
33
+ const label = typeof payload.label === "string" && payload.label.trim() ? payload.label.trim() : "Untitled";
34
+ const session = sosCoordinator.createSuperSession(label);
35
+ return json(session, { status: 201 });
36
+ };
37
+
38
+ export { GET, POST };
39
+ //# sourceMappingURL=_server.ts-DkZX_O9a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DkZX_O9a.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sos/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { s as sosCoordinator } from \"../../../../chunks/coordinator.js\";\nimport { json } from \"@sveltejs/kit\";\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n return json({ superSessions: sosCoordinator.listSuperSessions() });\n};\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n if (typeof body !== \"object\" || body === null) {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n const payload = body;\n const label = typeof payload.label === \"string\" && payload.label.trim() ? payload.label.trim() : \"Untitled\";\n const session = sosCoordinator.createSuperSession(label);\n return json(session, { status: 201 });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;AAGK,MAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK;AAC7B,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,iBAAiB,EAAE,EAAE,CAAC;AACpE;AACK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AACpC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,IAAI;AACtB,EAAE,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,UAAU;AAC7G,EAAE,MAAM,OAAO,GAAG,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1D,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACvC;;;;"}
@@ -1,19 +1,20 @@
1
1
  import { v as validateAuth } from './auth-DuunT7Cg.js';
2
- import { P as PROVIDER_COMMANDS } from './registry-DzJj2E6I.js';
3
- import { p as ptyManager } from './pty-manager-RmhVe2Ez.js';
2
+ import { P as PROVIDER_COMMANDS } from './registry-D4J_CuzW.js';
3
+ import { p as ptyManager } from './pty-manager-41h3IK8K.js';
4
4
  import { t as toErrorMessage } from './error-DDXB3duW.js';
5
5
  import { j as json } from './index-CoD1IJuy.js';
6
6
  import { realpathSync, statSync } from 'fs';
7
7
  import { relative, isAbsolute } from 'path';
8
8
  import './shared-server-DaWdgxVh.js';
9
9
  import 'crypto';
10
- import './opencode-db-path-BwaPufWf.js';
10
+ import './qwen-reader-DGfUbKaJ.js';
11
11
  import 'os';
12
- import './qwen-reader-2fTFuC_D.js';
13
12
  import 'better-sqlite3';
14
13
  import 'child_process';
15
14
  import 'url';
16
15
  import './events-handler-Dm1mNPQP.js';
16
+ import './super-session-handler-DPyxFgmz.js';
17
+ import './coordinator-DMU_ADXf.js';
17
18
  import 'net';
18
19
 
19
20
  const ALLOWED_COMMANDS = ["zsh", "bash", "sh", "fish", ...PROVIDER_COMMANDS];
@@ -137,4 +138,4 @@ const POST = async ({ request }) => {
137
138
  };
138
139
 
139
140
  export { GET, POST };
140
- //# sourceMappingURL=_server.ts-B1z0q6qZ.js.map
141
+ //# sourceMappingURL=_server.ts-DxT9IlZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DxT9IlZF.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/terminals/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { P as PROVIDER_COMMANDS } from \"../../../../chunks/registry.js\";\nimport { p as ptyManager } from \"../../../../chunks/pty-manager.js\";\nimport { t as toErrorMessage } from \"../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { realpathSync, statSync } from \"fs\";\nimport { relative, isAbsolute } from \"path\";\nconst ALLOWED_COMMANDS = [\"zsh\", \"bash\", \"sh\", \"fish\", ...PROVIDER_COMMANDS];\nfunction lastScrollbackLine(scrollback) {\n if (!scrollback) {\n return null;\n }\n const lines = scrollback.trimEnd().split(\"\\n\");\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i].trim();\n if (line) {\n return line.slice(0, 200);\n }\n }\n return null;\n}\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n try {\n const terminals = ptyManager.list().map((t) => ({\n args: t.args,\n clientCount: t.clients.size,\n command: t.command,\n createdAt: t.createdAt.toISOString(),\n currentCwd: t.currentCwd,\n cwd: t.cwd,\n exitCode: t.exitCode,\n exitedAt: t.exitedAt?.toISOString() ?? null,\n id: t.id,\n isActive: t.isActive,\n lastOutput: lastScrollbackLine(t.scrollback),\n pid: t.pid,\n status: t.status\n }));\n return json({\n count: terminals.length,\n terminals,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"[terminals] Failed to list terminals:\", toErrorMessage(error));\n return json({ error: \"Failed to list terminals\" }, { status: 500 });\n }\n};\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n try {\n const { args, cols, command, cwd, rows } = body;\n if (!command) {\n return json({ error: \"command is required\" }, { status: 400 });\n }\n if (command.includes(\"/\") || command.includes(\"\\\\\") || !ALLOWED_COMMANDS.includes(command)) {\n return json(\n { error: `Command not allowed. Allowed: ${ALLOWED_COMMANDS.join(\", \")}` },\n { status: 400 }\n );\n }\n if (!cwd) {\n return json({ error: \"cwd is required\" }, { status: 400 });\n }\n let realCwd;\n try {\n realCwd = realpathSync(cwd);\n if (!statSync(realCwd).isDirectory()) {\n return json({ error: \"cwd must be a directory\" }, { status: 400 });\n }\n } catch {\n return json({ error: \"cwd must be a directory\" }, { status: 400 });\n }\n const home = process.env.HOME || \"\";\n if (home) {\n const rel = relative(home, realCwd);\n if (rel.startsWith(\"..\") || isAbsolute(rel)) {\n return json({ error: \"Working directory must be under home directory\" }, { status: 400 });\n }\n }\n if (args !== void 0 && !Array.isArray(args)) {\n return json({ error: \"args must be an array of strings\" }, { status: 400 });\n }\n if (args && !args.every((a) => typeof a === \"string\")) {\n return json({ error: \"All args must be strings\" }, { status: 400 });\n }\n if (cols !== void 0 && (typeof cols !== \"number\" || cols < 1)) {\n return json({ error: \"cols must be a positive number\" }, { status: 400 });\n }\n if (rows !== void 0 && (typeof rows !== \"number\" || rows < 1)) {\n return json({ error: \"rows must be a positive number\" }, { status: 400 });\n }\n const terminal = await ptyManager.create(command, args ?? [], realCwd, cols ?? 80, rows ?? 24);\n console.log(\n `[terminals] Created terminal ${terminal.id} (pid=${terminal.pid}, command=${command})`\n );\n return json(\n {\n command: terminal.command,\n createdAt: terminal.createdAt instanceof Date ? terminal.createdAt.toISOString() : terminal.createdAt,\n cwd: terminal.cwd,\n id: terminal.id,\n pid: terminal.pid,\n sessionWs: `/ws/session/${terminal.id}`,\n ws: `/ws/terminal/${terminal.id}`\n },\n { status: 201 }\n );\n } catch (error) {\n console.error(\"[terminals] Failed to create terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to create terminal\" }, { status: 500 });\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { v as validateAuth } from './auth-DuunT7Cg.js';
2
- import { r as resolveOpenCodeDbPath, d as detectActiveCodexSessions } from './opencode-db-path-BwaPufWf.js';
3
- import { d as detectActiveGeminiSessions, a as detectActiveQwenSessions } from './qwen-reader-2fTFuC_D.js';
2
+ import { r as resolveOpenCodeDbPath, d as detectActiveCodexSessions, a as detectActiveGeminiSessions, b as detectActiveQwenSessions, c as detectActiveCursorSessions, e as detectActiveCopilotSessions, f as detectActiveAmpSessions } from './qwen-reader-DGfUbKaJ.js';
4
3
  import Database from 'better-sqlite3';
5
4
  import { execSync } from 'child_process';
6
5
  import { readdirSync, readFileSync, existsSync } from 'fs';
@@ -32,9 +31,15 @@ function isProcessAlive(pid) {
32
31
  }
33
32
  const CLAUDE_SESSIONS_DIR = join(homedir(), ".claude", "sessions");
34
33
  const OPENCODE_ACTIVE_THRESHOLD_MS = 3 * 6e4;
35
- const CODEX_ACTIVE_THRESHOLD_MS = 3 * 6e4;
36
- const GEMINI_ACTIVE_THRESHOLD_MS = 3 * 6e4;
37
- const QWEN_ACTIVE_THRESHOLD_MS = 3 * 6e4;
34
+ const FILE_PROVIDER_ACTIVE_THRESHOLD_MS = 3 * 6e4;
35
+ const FILE_PROVIDER_DETECTORS = [
36
+ { command: "codex", detect: detectActiveCodexSessions },
37
+ { command: "gemini", detect: detectActiveGeminiSessions },
38
+ { command: "qwen", detect: detectActiveQwenSessions },
39
+ { command: "cursor-agent", detect: detectActiveCursorSessions },
40
+ { command: "copilot", detect: detectActiveCopilotSessions },
41
+ { command: "amp", detect: detectActiveAmpSessions }
42
+ ];
38
43
  function detectRunningAISessions() {
39
44
  const results = [];
40
45
  try {
@@ -102,49 +107,21 @@ function detectRunningAISessions() {
102
107
  } catch {
103
108
  }
104
109
  }
105
- try {
106
- for (const s of detectActiveCodexSessions(CODEX_ACTIVE_THRESHOLD_MS)) {
107
- results.push({
108
- command: "codex",
109
- cwd: s.cwd,
110
- kind: "interactive",
111
- pid: 0,
112
- // Codex doesn't expose a per-session PID
113
- projectPath: cwdToProjectPath(s.cwd),
114
- sessionId: s.id,
115
- startedAt: s.startedAt
116
- });
117
- }
118
- } catch {
119
- }
120
- try {
121
- for (const s of detectActiveGeminiSessions(GEMINI_ACTIVE_THRESHOLD_MS)) {
122
- results.push({
123
- command: "gemini",
124
- cwd: s.cwd,
125
- kind: "interactive",
126
- pid: 0,
127
- // Gemini doesn't expose a per-session PID
128
- projectPath: cwdToProjectPath(s.cwd),
129
- sessionId: s.id,
130
- startedAt: s.startedAt
131
- });
132
- }
133
- } catch {
134
- }
135
- try {
136
- for (const s of detectActiveQwenSessions(QWEN_ACTIVE_THRESHOLD_MS)) {
137
- results.push({
138
- command: "qwen",
139
- cwd: s.cwd,
140
- kind: "interactive",
141
- pid: 0,
142
- projectPath: cwdToProjectPath(s.cwd),
143
- sessionId: s.id,
144
- startedAt: s.startedAt
145
- });
110
+ for (const { command, detect } of FILE_PROVIDER_DETECTORS) {
111
+ try {
112
+ for (const s of detect(FILE_PROVIDER_ACTIVE_THRESHOLD_MS)) {
113
+ results.push({
114
+ command,
115
+ cwd: s.cwd,
116
+ kind: "interactive",
117
+ pid: 0,
118
+ projectPath: cwdToProjectPath(s.cwd),
119
+ sessionId: s.id,
120
+ startedAt: s.startedAt
121
+ });
122
+ }
123
+ } catch {
146
124
  }
147
- } catch {
148
125
  }
149
126
  results.sort((a, b) => b.startedAt - a.startedAt);
150
127
  return results;
@@ -168,4 +145,4 @@ const GET = ({ request }) => {
168
145
  };
169
146
 
170
147
  export { GET };
171
- //# sourceMappingURL=_server.ts-Bt7EAfjo.js.map
148
+ //# sourceMappingURL=_server.ts-MbnroWEF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-MbnroWEF.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/detect/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../chunks/auth.js\";\nimport { r as resolveOpenCodeDbPath, d as detectActiveCodexSessions, a as detectActiveGeminiSessions, b as detectActiveQwenSessions, c as detectActiveCursorSessions, e as detectActiveCopilotSessions, f as detectActiveAmpSessions } from \"../../../../../chunks/qwen-reader.js\";\nimport Database from \"better-sqlite3\";\nimport { execSync } from \"child_process\";\nimport { readdirSync, readFileSync, existsSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\nimport { t as toErrorMessage } from \"../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction cwdToProjectPath(cwd) {\n return cwd.replace(/\\//g, \"-\");\n}\nfunction isOpenCodeRunning() {\n try {\n execSync(\"pgrep -x opencode\", { stdio: \"ignore\" });\n return true;\n } catch {\n return false;\n }\n}\nfunction isProcessAlive(pid) {\n try {\n process.kill(pid, 0);\n return true;\n } catch {\n return false;\n }\n}\nconst CLAUDE_SESSIONS_DIR = join(homedir(), \".claude\", \"sessions\");\nconst OPENCODE_ACTIVE_THRESHOLD_MS = 3 * 6e4;\nconst FILE_PROVIDER_ACTIVE_THRESHOLD_MS = 3 * 6e4;\nconst FILE_PROVIDER_DETECTORS = [\n { command: \"codex\", detect: detectActiveCodexSessions },\n { command: \"gemini\", detect: detectActiveGeminiSessions },\n { command: \"qwen\", detect: detectActiveQwenSessions },\n { command: \"cursor-agent\", detect: detectActiveCursorSessions },\n { command: \"copilot\", detect: detectActiveCopilotSessions },\n { command: \"amp\", detect: detectActiveAmpSessions }\n];\nfunction detectRunningAISessions() {\n const results = [];\n try {\n const files = readdirSync(CLAUDE_SESSIONS_DIR).filter((f) => f.endsWith(\".json\"));\n for (const file of files) {\n try {\n const raw = readFileSync(join(CLAUDE_SESSIONS_DIR, file), \"utf-8\");\n const data = JSON.parse(raw);\n if (!data.pid || !data.sessionId || !data.cwd) {\n continue;\n }\n if (!isProcessAlive(data.pid)) {\n continue;\n }\n results.push({\n command: \"claude\",\n cwd: data.cwd,\n kind: data.kind || \"interactive\",\n pid: data.pid,\n projectPath: cwdToProjectPath(data.cwd),\n sessionId: data.sessionId,\n startedAt: data.startedAt || 0\n });\n } catch {\n }\n }\n } catch {\n }\n if (isOpenCodeRunning()) {\n try {\n const dbPath = resolveOpenCodeDbPath();\n if (existsSync(dbPath)) {\n const db = new Database(dbPath, { readonly: true });\n try {\n const cutoff = Date.now() - OPENCODE_ACTIVE_THRESHOLD_MS;\n const cutoffSec = Math.floor(cutoff / 1e3);\n const rows = db.prepare(\n `SELECT id, directory, time_created, time_updated\n FROM session\n WHERE (time_archived IS NULL OR time_archived = 0)\n AND (\n (time_updated >= 1e12 AND time_updated > ?)\n OR (time_updated < 1e12 AND time_updated > ?)\n )\n ORDER BY time_updated DESC\n LIMIT 20`\n ).all(cutoff, cutoffSec);\n for (const row of rows) {\n const startMs = row.time_created >= 1e12 ? row.time_created : row.time_created * 1e3;\n results.push({\n command: \"opencode\",\n cwd: row.directory || \"\",\n kind: \"interactive\",\n pid: 0,\n // OpenCode doesn't expose per-session PIDs\n projectPath: cwdToProjectPath(row.directory || \"\"),\n sessionId: row.id,\n startedAt: startMs\n });\n }\n } finally {\n db.close();\n }\n }\n } catch {\n }\n }\n for (const { command, detect } of FILE_PROVIDER_DETECTORS) {\n try {\n for (const s of detect(FILE_PROVIDER_ACTIVE_THRESHOLD_MS)) {\n results.push({\n command,\n cwd: s.cwd,\n kind: \"interactive\",\n pid: 0,\n projectPath: cwdToProjectPath(s.cwd),\n sessionId: s.id,\n startedAt: s.startedAt\n });\n }\n } catch {\n }\n }\n results.sort((a, b) => b.startedAt - a.startedAt);\n return results;\n}\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n try {\n const processes = detectRunningAISessions();\n return json({\n count: processes.length,\n processes,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"[sessions/detect] Failed to detect running sessions:\", toErrorMessage(error));\n return json({ error: \"Failed to detect running sessions\" }, { status: 500 });\n }\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AASA,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAChC;AACA,SAAS,iBAAiB,GAAG;AAC7B,EAAE,IAAI;AACN,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtD,IAAI,OAAO,IAAI;AACf,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,IAAI;AACN,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACxB,IAAI,OAAO,IAAI;AACf,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;AAClE,MAAM,4BAA4B,GAAG,CAAC,GAAG,GAAG;AAC5C,MAAM,iCAAiC,GAAG,CAAC,GAAG,GAAG;AACjD,MAAM,uBAAuB,GAAG;AAChC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE;AACzD,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE;AAC3D,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE;AACvD,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,0BAA0B,EAAE;AACjE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,2BAA2B,EAAE;AAC7D,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB;AACnD,CAAC;AACD,SAAS,uBAAuB,GAAG;AACnC,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrF,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,MAAM,IAAI;AACV,QAAQ,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC;AAC1E,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACvD,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACvC,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,UAAU,OAAO,EAAE,QAAQ;AAC3B,UAAU,GAAG,EAAE,IAAI,CAAC,GAAG;AACvB,UAAU,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAC1C,UAAU,GAAG,EAAE,IAAI,CAAC,GAAG;AACvB,UAAU,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,UAAU,SAAS,EAAE,IAAI,CAAC,SAAS;AACnC,UAAU,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI;AACvC,SAAS,CAAC;AACV,MAAM,CAAC,CAAC,MAAM;AACd,MAAM;AACN,IAAI;AACJ,EAAE,CAAC,CAAC,MAAM;AACV,EAAE;AACF,EAAE,IAAI,iBAAiB,EAAE,EAAE;AAC3B,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,qBAAqB,EAAE;AAC5C,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAQ,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3D,QAAQ,IAAI;AACZ,UAAU,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,4BAA4B;AAClE,UAAU,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AACpD,UAAU,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO;AACjC,YAAY,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;AAClC,UAAU,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAClC,YAAY,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,IAAI,IAAI,GAAG,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,GAAG,GAAG;AAChG,YAAY,OAAO,CAAC,IAAI,CAAC;AACzB,cAAc,OAAO,EAAE,UAAU;AACjC,cAAc,GAAG,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;AACtC,cAAc,IAAI,EAAE,aAAa;AACjC,cAAc,GAAG,EAAE,CAAC;AACpB;AACA,cAAc,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;AAChE,cAAc,SAAS,EAAE,GAAG,CAAC,EAAE;AAC/B,cAAc,SAAS,EAAE;AACzB,aAAa,CAAC;AACd,UAAU;AACV,QAAQ,CAAC,SAAS;AAClB,UAAU,EAAE,CAAC,KAAK,EAAE;AACpB,QAAQ;AACR,MAAM;AACN,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,EAAE;AACF,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,uBAAuB,EAAE;AAC7D,IAAI,IAAI;AACR,MAAM,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,iCAAiC,CAAC,EAAE;AACjE,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,UAAU,OAAO;AACjB,UAAU,GAAG,EAAE,CAAC,CAAC,GAAG;AACpB,UAAU,IAAI,EAAE,aAAa;AAC7B,UAAU,GAAG,EAAE,CAAC;AAChB,UAAU,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9C,UAAU,SAAS,EAAE,CAAC,CAAC,EAAE;AACzB,UAAU,SAAS,EAAE,CAAC,CAAC;AACvB,SAAS,CAAC;AACV,MAAM;AACN,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;AACnD,EAAE,OAAO,OAAO;AAChB;AACK,MAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK;AAC7B,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,uBAAuB,EAAE;AAC/C,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM;AAC7B,MAAM,SAAS;AACf,MAAM,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACzD,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAChG,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChF,EAAE;AACF;;;;"}
@@ -0,0 +1,48 @@
1
+ import { v as validateAuth } from './auth-DuunT7Cg.js';
2
+ import { s as sosCoordinator } from './coordinator-DMU_ADXf.js';
3
+ import { i as isValidSessionKey, a as isValidProvider } from './super-session-handler-DPyxFgmz.js';
4
+ import { j as json } from './index-CoD1IJuy.js';
5
+ import './shared-server-DaWdgxVh.js';
6
+ import 'crypto';
7
+ import 'better-sqlite3';
8
+ import 'fs';
9
+ import 'os';
10
+ import 'path';
11
+ import './registry-D4J_CuzW.js';
12
+ import './qwen-reader-DGfUbKaJ.js';
13
+
14
+ const POST = async ({ params, request }) => {
15
+ const authError = validateAuth(request);
16
+ if (authError) {
17
+ return authError;
18
+ }
19
+ let body;
20
+ try {
21
+ body = await request.json();
22
+ } catch {
23
+ return json({ error: "Invalid JSON in request body" }, { status: 400 });
24
+ }
25
+ if (typeof body !== "object" || body === null) {
26
+ return json({ error: "Invalid JSON in request body" }, { status: 400 });
27
+ }
28
+ const payload = body;
29
+ if (typeof payload.sessionKey !== "string" || !isValidSessionKey(payload.sessionKey)) {
30
+ return json({ error: "sessionKey must be a session id or a path under home" }, { status: 400 });
31
+ }
32
+ if (typeof payload.provider !== "string" || !isValidProvider(payload.provider)) {
33
+ return json({ error: "provider must be a known session source" }, { status: 400 });
34
+ }
35
+ const member = sosCoordinator.addMember(params.id ?? "", {
36
+ capability: typeof payload.capability === "string" ? payload.capability : void 0,
37
+ provider: payload.provider,
38
+ sessionKey: payload.sessionKey,
39
+ terminalId: typeof payload.terminalId === "string" ? payload.terminalId : null
40
+ });
41
+ if (!member) {
42
+ return json({ error: "Super-session not found" }, { status: 404 });
43
+ }
44
+ return json(member, { status: 201 });
45
+ };
46
+
47
+ export { POST };
48
+ //# sourceMappingURL=_server.ts-Mttr0-Sl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-Mttr0-Sl.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sos/_id_/members/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../../chunks/auth.js\";\nimport { s as sosCoordinator } from \"../../../../../../chunks/coordinator.js\";\nimport { i as isValidSessionKey, a as isValidProvider } from \"../../../../../../chunks/super-session-handler.js\";\nimport { json } from \"@sveltejs/kit\";\nconst POST = async ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n if (typeof body !== \"object\" || body === null) {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n const payload = body;\n if (typeof payload.sessionKey !== \"string\" || !isValidSessionKey(payload.sessionKey)) {\n return json({ error: \"sessionKey must be a session id or a path under home\" }, { status: 400 });\n }\n if (typeof payload.provider !== \"string\" || !isValidProvider(payload.provider)) {\n return json({ error: \"provider must be a known session source\" }, { status: 400 });\n }\n const member = sosCoordinator.addMember(params.id ?? \"\", {\n capability: typeof payload.capability === \"string\" ? payload.capability : void 0,\n provider: payload.provider,\n sessionKey: payload.sessionKey,\n terminalId: typeof payload.terminalId === \"string\" ? payload.terminalId : null\n });\n if (!member) {\n return json({ error: \"Super-session not found\" }, { status: 404 });\n }\n return json(member, { status: 201 });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAIK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC5C,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,IAAI;AACtB,EAAE,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACxF,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,sDAAsD,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnG,EAAE;AACF,EAAE,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAClF,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACtF,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;AAC3D,IAAI,UAAU,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,MAAM;AACpF,IAAI,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC9B,IAAI,UAAU,EAAE,OAAO,CAAC,UAAU;AAClC,IAAI,UAAU,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG;AAC9E,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACtE,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACtC;;;;"}
@@ -0,0 +1,45 @@
1
+ import { v as validateAuth } from './auth-DuunT7Cg.js';
2
+ import { s as sosCoordinator } from './coordinator-DMU_ADXf.js';
3
+ import { j as json } from './index-CoD1IJuy.js';
4
+ import './shared-server-DaWdgxVh.js';
5
+ import 'crypto';
6
+ import 'better-sqlite3';
7
+ import 'fs';
8
+ import 'os';
9
+ import 'path';
10
+
11
+ const MAX_RELAY_TEXT = 10240;
12
+ const POST = async ({ params, request }) => {
13
+ const authError = validateAuth(request);
14
+ if (authError) {
15
+ return authError;
16
+ }
17
+ let body;
18
+ try {
19
+ body = await request.json();
20
+ } catch {
21
+ return json({ error: "Invalid JSON in request body" }, { status: 400 });
22
+ }
23
+ if (typeof body !== "object" || body === null) {
24
+ return json({ error: "Invalid JSON in request body" }, { status: 400 });
25
+ }
26
+ const payload = body;
27
+ if (typeof payload.toMemberId !== "string" || payload.toMemberId.length === 0) {
28
+ return json({ error: "toMemberId is required (string)" }, { status: 400 });
29
+ }
30
+ if (typeof payload.text !== "string" || payload.text.length === 0) {
31
+ return json({ error: "text is required (string)" }, { status: 400 });
32
+ }
33
+ if (Buffer.byteLength(payload.text, "utf8") > MAX_RELAY_TEXT) {
34
+ return json({ error: `text exceeds ${MAX_RELAY_TEXT} bytes` }, { status: 413 });
35
+ }
36
+ const error = sosCoordinator.relayForward(params.id ?? "", payload.toMemberId, payload.text);
37
+ if (error) {
38
+ const status = error.includes("not found") ? 404 : 400;
39
+ return json({ error }, { status });
40
+ }
41
+ return json({ ok: true });
42
+ };
43
+
44
+ export { POST };
45
+ //# sourceMappingURL=_server.ts-jtqWDWcf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-jtqWDWcf.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sos/_id_/inject/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../../chunks/auth.js\";\nimport { s as sosCoordinator } from \"../../../../../../chunks/coordinator.js\";\nimport { json } from \"@sveltejs/kit\";\nconst MAX_RELAY_TEXT = 10240;\nconst POST = async ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n if (typeof body !== \"object\" || body === null) {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n const payload = body;\n if (typeof payload.toMemberId !== \"string\" || payload.toMemberId.length === 0) {\n return json({ error: \"toMemberId is required (string)\" }, { status: 400 });\n }\n if (typeof payload.text !== \"string\" || payload.text.length === 0) {\n return json({ error: \"text is required (string)\" }, { status: 400 });\n }\n if (Buffer.byteLength(payload.text, \"utf8\") > MAX_RELAY_TEXT) {\n return json({ error: `text exceeds ${MAX_RELAY_TEXT} bytes` }, { status: 413 });\n }\n const error = sosCoordinator.relayForward(params.id ?? \"\", payload.toMemberId, payload.text);\n if (error) {\n const status = error.includes(\"not found\") ? 404 : 400;\n return json({ error }, { status });\n }\n return json({ ok: true });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;AAGA,MAAM,cAAc,GAAG,KAAK;AACvB,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC5C,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,IAAI;AACtB,EAAE,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACjF,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC9E,EAAE;AACF,EAAE,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrE,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxE,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,cAAc,EAAE;AAChE,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnF,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC;AAC9F,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG;AAC1D,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACtC,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3B;;;;"}
@@ -1,4 +1,4 @@
1
- import { m as attr_class, k as stringify, p as escape_html } from './index-CJrGuxuM.js';
1
+ import { ap as attr_class, an as stringify, au as escape_html } from './index-CoYB03g7.js';
2
2
 
3
3
  /* empty css */
4
4
  function EmptyState($$renderer, $$props) {
@@ -32,4 +32,4 @@ function clearCache(key) {
32
32
  }
33
33
 
34
34
  export { EmptyState as E, RefreshSvg as R, clearCache as c };
35
- //# sourceMappingURL=cache-Me3zUAaD.js.map
35
+ //# sourceMappingURL=cache-BlMaDsHi.js.map