@juspay/shooter 1.5.0 → 1.6.1

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 (478) hide show
  1. package/README.md +24 -20
  2. package/bin/shooter.cjs +68 -17
  3. package/build/client/_app/immutable/assets/2.Dk9NfqnS.css +1 -0
  4. package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.br +0 -0
  5. package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.gz +0 -0
  6. package/build/client/_app/immutable/assets/3.DHxQoulp.css +1 -0
  7. package/build/client/_app/immutable/assets/3.DHxQoulp.css.br +0 -0
  8. package/build/client/_app/immutable/assets/3.DHxQoulp.css.gz +0 -0
  9. package/build/client/_app/immutable/assets/{3.DGDHCVnW.css → 4.D5l1JxgO.css} +1 -1
  10. package/build/client/_app/immutable/assets/4.D5l1JxgO.css.br +0 -0
  11. package/build/client/_app/immutable/assets/4.D5l1JxgO.css.gz +0 -0
  12. package/build/client/_app/immutable/assets/5.C5qz-NeI.css +1 -0
  13. package/build/client/_app/immutable/assets/5.C5qz-NeI.css.br +0 -0
  14. package/build/client/_app/immutable/assets/5.C5qz-NeI.css.gz +0 -0
  15. package/build/client/_app/immutable/chunks/1mEchsPO.js +1 -0
  16. package/build/client/_app/immutable/chunks/1mEchsPO.js.br +0 -0
  17. package/build/client/_app/immutable/chunks/1mEchsPO.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/B7X-vhXI.js +1 -0
  19. package/build/client/_app/immutable/chunks/B7X-vhXI.js.br +0 -0
  20. package/build/client/_app/immutable/chunks/B7X-vhXI.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/BRkqKgVG.js +1 -0
  22. package/build/client/_app/immutable/chunks/BRkqKgVG.js.br +0 -0
  23. package/build/client/_app/immutable/chunks/BRkqKgVG.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/BfJ-f-Tu.js +1 -0
  25. package/build/client/_app/immutable/chunks/BfJ-f-Tu.js.br +2 -0
  26. package/build/client/_app/immutable/chunks/BfJ-f-Tu.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/CGMJxf7r.js +1 -0
  28. package/build/client/_app/immutable/chunks/CGMJxf7r.js.br +0 -0
  29. package/build/client/_app/immutable/chunks/CGMJxf7r.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/{CZHsSL_X.js → CJFjKwJ7.js} +1 -1
  31. package/build/client/_app/immutable/chunks/CJFjKwJ7.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/CJFjKwJ7.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/CNH2HlKj.js +20 -0
  34. package/build/client/_app/immutable/chunks/CNH2HlKj.js.br +0 -0
  35. package/build/client/_app/immutable/chunks/CNH2HlKj.js.gz +0 -0
  36. package/build/client/_app/immutable/chunks/CR6bkGJW.js +6 -0
  37. package/build/client/_app/immutable/chunks/CR6bkGJW.js.br +0 -0
  38. package/build/client/_app/immutable/chunks/CR6bkGJW.js.gz +0 -0
  39. package/build/client/_app/immutable/chunks/CVtJ6yRM.js +1 -0
  40. package/build/client/_app/immutable/chunks/CVtJ6yRM.js.br +0 -0
  41. package/build/client/_app/immutable/chunks/CVtJ6yRM.js.gz +0 -0
  42. package/build/client/_app/immutable/chunks/{CSoRdFvv.js → CaiJSUi3.js} +1 -1
  43. package/build/client/_app/immutable/chunks/CaiJSUi3.js.br +0 -0
  44. package/build/client/_app/immutable/chunks/CaiJSUi3.js.gz +0 -0
  45. package/build/client/_app/immutable/chunks/{DjsDGxCa.js → CmczWE_d.js} +4 -4
  46. package/build/client/_app/immutable/chunks/CmczWE_d.js.br +0 -0
  47. package/build/client/_app/immutable/chunks/CmczWE_d.js.gz +0 -0
  48. package/build/client/_app/immutable/chunks/CsgHjHGZ.js +1 -0
  49. package/build/client/_app/immutable/chunks/CsgHjHGZ.js.br +0 -0
  50. package/build/client/_app/immutable/chunks/CsgHjHGZ.js.gz +0 -0
  51. package/build/client/_app/immutable/chunks/{UJOiqIYE.js → CtrCjGZT.js} +1 -1
  52. package/build/client/_app/immutable/chunks/CtrCjGZT.js.br +0 -0
  53. package/build/client/_app/immutable/chunks/CtrCjGZT.js.gz +0 -0
  54. package/build/client/_app/immutable/chunks/DDiOVAd8.js +61 -0
  55. package/build/client/_app/immutable/chunks/DDiOVAd8.js.br +0 -0
  56. package/build/client/_app/immutable/chunks/DDiOVAd8.js.gz +0 -0
  57. package/build/client/_app/immutable/chunks/DVl0sebP.js +2 -0
  58. package/build/client/_app/immutable/chunks/DVl0sebP.js.br +0 -0
  59. package/build/client/_app/immutable/chunks/DVl0sebP.js.gz +0 -0
  60. package/build/client/_app/immutable/chunks/{CiF38mQq.js → Dc_Gg2H6.js} +1 -1
  61. package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.br +0 -0
  62. package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.gz +0 -0
  63. package/build/client/_app/immutable/chunks/{CRbaG9cv.js → DlnAjkg1.js} +1 -1
  64. package/build/client/_app/immutable/chunks/DlnAjkg1.js.br +0 -0
  65. package/build/client/_app/immutable/chunks/{CRbaG9cv.js.gz → DlnAjkg1.js.gz} +0 -0
  66. package/build/client/_app/immutable/chunks/YKoRJzXZ.js +3 -0
  67. package/build/client/_app/immutable/chunks/YKoRJzXZ.js.br +0 -0
  68. package/build/client/_app/immutable/chunks/YKoRJzXZ.js.gz +0 -0
  69. package/build/client/_app/immutable/chunks/gQJcRhou.js +1 -0
  70. package/build/client/_app/immutable/chunks/gQJcRhou.js.br +0 -0
  71. package/build/client/_app/immutable/chunks/gQJcRhou.js.gz +0 -0
  72. package/build/client/_app/immutable/chunks/pRcLbE0d.js +1 -0
  73. package/build/client/_app/immutable/chunks/pRcLbE0d.js.br +0 -0
  74. package/build/client/_app/immutable/chunks/pRcLbE0d.js.gz +0 -0
  75. package/build/client/_app/immutable/entry/app.CFPgQOa8.js +2 -0
  76. package/build/client/_app/immutable/entry/app.CFPgQOa8.js.br +0 -0
  77. package/build/client/_app/immutable/entry/app.CFPgQOa8.js.gz +0 -0
  78. package/build/client/_app/immutable/entry/start.BnJOVqhI.js +1 -0
  79. package/build/client/_app/immutable/entry/start.BnJOVqhI.js.br +2 -0
  80. package/build/client/_app/immutable/entry/start.BnJOVqhI.js.gz +0 -0
  81. package/build/client/_app/immutable/nodes/0.DR-BBF5r.js +1 -0
  82. package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.br +0 -0
  83. package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.gz +0 -0
  84. package/build/client/_app/immutable/nodes/1.CNm6rAwf.js +1 -0
  85. package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.br +0 -0
  86. package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.gz +0 -0
  87. package/build/client/_app/immutable/nodes/2.B08usYzr.js +13 -0
  88. package/build/client/_app/immutable/nodes/2.B08usYzr.js.br +0 -0
  89. package/build/client/_app/immutable/nodes/2.B08usYzr.js.gz +0 -0
  90. package/build/client/_app/immutable/nodes/3.CsY6J5HS.js +9 -0
  91. package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.br +0 -0
  92. package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.gz +0 -0
  93. package/build/client/_app/immutable/nodes/4.B_pbOZoD.js +4 -0
  94. package/build/client/_app/immutable/nodes/4.B_pbOZoD.js.br +0 -0
  95. package/build/client/_app/immutable/nodes/4.B_pbOZoD.js.gz +0 -0
  96. package/build/client/_app/immutable/nodes/5.CdLPNo5-.js +1 -0
  97. package/build/client/_app/immutable/nodes/5.CdLPNo5-.js.br +0 -0
  98. package/build/client/_app/immutable/nodes/5.CdLPNo5-.js.gz +0 -0
  99. package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js +1 -0
  100. package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.br +0 -0
  101. package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.gz +0 -0
  102. package/build/client/_app/immutable/nodes/{5.DIkXVP4q.js → 7.CCKgiNNk.js} +3 -3
  103. package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.br +0 -0
  104. package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.gz +0 -0
  105. package/build/client/_app/immutable/nodes/8.C7AaheUD.js +2 -0
  106. package/build/client/_app/immutable/nodes/8.C7AaheUD.js.br +0 -0
  107. package/build/client/_app/immutable/nodes/8.C7AaheUD.js.gz +0 -0
  108. package/build/client/_app/immutable/nodes/9.DfL9kMC4.js +2 -0
  109. package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.br +0 -0
  110. package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.gz +0 -0
  111. package/build/client/_app/version.json +1 -1
  112. package/build/client/_app/version.json.br +0 -0
  113. package/build/client/_app/version.json.gz +0 -0
  114. package/build/server/chunks/0-DC2VLooL.js +23 -0
  115. package/build/server/chunks/0-DC2VLooL.js.map +1 -0
  116. package/build/server/chunks/1-XJaf8Jvf.js +9 -0
  117. package/build/server/chunks/{1-D0N7vVhH.js.map → 1-XJaf8Jvf.js.map} +1 -1
  118. package/build/server/chunks/2-D4Cx-1QL.js +21 -0
  119. package/build/server/chunks/2-D4Cx-1QL.js.map +1 -0
  120. package/build/server/chunks/3-CVhIEP-u.js +21 -0
  121. package/build/server/chunks/3-CVhIEP-u.js.map +1 -0
  122. package/build/server/chunks/4-0UE_6Ep-.js +23 -0
  123. package/build/server/chunks/4-0UE_6Ep-.js.map +1 -0
  124. package/build/server/chunks/5-BBIP1PzX.js +24 -0
  125. package/build/server/chunks/5-BBIP1PzX.js.map +1 -0
  126. package/build/server/chunks/6-QFSbzRMP.js +9 -0
  127. package/build/server/chunks/6-QFSbzRMP.js.map +1 -0
  128. package/build/server/chunks/7-CZ_YGjMV.js +9 -0
  129. package/build/server/chunks/7-CZ_YGjMV.js.map +1 -0
  130. package/build/server/chunks/8-Xe2Rugb4.js +9 -0
  131. package/build/server/chunks/8-Xe2Rugb4.js.map +1 -0
  132. package/build/server/chunks/9-IwHpC4SO.js +9 -0
  133. package/build/server/chunks/9-IwHpC4SO.js.map +1 -0
  134. package/build/server/chunks/{Button-Cs1aE6ka.js → Button-WKgiLWZI.js} +4 -9
  135. package/build/server/chunks/Button-WKgiLWZI.js.map +1 -0
  136. package/build/server/chunks/{EmptyState-DDFH1K8g.js → EmptyState-BUBqASsp.js} +3 -3
  137. package/build/server/chunks/{EmptyState-DDFH1K8g.js.map → EmptyState-BUBqASsp.js.map} +1 -1
  138. package/build/server/chunks/{Icon-CEUrotA6.js → Icon-BNBAg85a.js} +3 -3
  139. package/build/server/chunks/Icon-BNBAg85a.js.map +1 -0
  140. package/build/server/chunks/{Shimmer-DB8W1zt6.js → Shimmer-C4uBVwxz.js} +2 -2
  141. package/build/server/chunks/{Shimmer-DB8W1zt6.js.map → Shimmer-C4uBVwxz.js.map} +1 -1
  142. package/build/server/chunks/{_error.svelte-uCOJNxvr.js → _error.svelte-DkIwmECt.js} +5 -5
  143. package/build/server/chunks/{_error.svelte-uCOJNxvr.js.map → _error.svelte-DkIwmECt.js.map} +1 -1
  144. package/build/server/chunks/{_layout.svelte-CtWmEJwe.js → _layout.svelte-DllETxmJ.js} +13 -7
  145. package/build/server/chunks/_layout.svelte-DllETxmJ.js.map +1 -0
  146. package/build/server/chunks/_page.svelte-BZSdLKE_.js +118 -0
  147. package/build/server/chunks/_page.svelte-BZSdLKE_.js.map +1 -0
  148. package/build/server/chunks/{_page.svelte-CxWcQ0Am.js → _page.svelte-Cmuco1mC.js} +84 -199
  149. package/build/server/chunks/_page.svelte-Cmuco1mC.js.map +1 -0
  150. package/build/server/chunks/{_page.svelte-BgevQjq1.js → _page.svelte-Co5sF7W-.js} +12 -11
  151. package/build/server/chunks/{_page.svelte-BgevQjq1.js.map → _page.svelte-Co5sF7W-.js.map} +1 -1
  152. package/build/server/chunks/{_page.svelte-DO4oa_LY.js → _page.svelte-CpL3R-VI.js} +8 -8
  153. package/build/server/chunks/{_page.svelte-DO4oa_LY.js.map → _page.svelte-CpL3R-VI.js.map} +1 -1
  154. package/build/server/chunks/_page.svelte-DDSzYLUs.js +137 -0
  155. package/build/server/chunks/_page.svelte-DDSzYLUs.js.map +1 -0
  156. package/build/server/chunks/_page.svelte-JIkgFUFf.js +26 -0
  157. package/build/server/chunks/_page.svelte-JIkgFUFf.js.map +1 -0
  158. package/build/server/chunks/{_page.svelte-CVq6tRb3.js → _page.svelte-Y9-O5a5w.js} +10 -9
  159. package/build/server/chunks/_page.svelte-Y9-O5a5w.js.map +1 -0
  160. package/build/server/chunks/{_page.svelte-BcZaKdX9.js → _page.svelte-fcX09N4d.js} +9 -9
  161. package/build/server/chunks/{_page.svelte-BcZaKdX9.js.map → _page.svelte-fcX09N4d.js.map} +1 -1
  162. package/build/server/chunks/{_server.ts-DYpJImqd.js → _server.ts-0Xr2fWaq.js} +9 -5
  163. package/build/server/chunks/_server.ts-0Xr2fWaq.js.map +1 -0
  164. package/build/server/chunks/{_server.ts-CTpcLUH8.js → _server.ts-2ixC-X3K.js} +20 -5
  165. package/build/server/chunks/_server.ts-2ixC-X3K.js.map +1 -0
  166. package/build/server/chunks/{_server.ts-CAxsWKvS.js → _server.ts-40c_epk8.js} +20 -4
  167. package/build/server/chunks/_server.ts-40c_epk8.js.map +1 -0
  168. package/build/server/chunks/{_server.ts-WhTJBEJy.js → _server.ts-A9_tRR-K.js} +5 -4
  169. package/build/server/chunks/{_server.ts-WhTJBEJy.js.map → _server.ts-A9_tRR-K.js.map} +1 -1
  170. package/build/server/chunks/_server.ts-BRAzC6W1.js +98 -0
  171. package/build/server/chunks/_server.ts-BRAzC6W1.js.map +1 -0
  172. package/build/server/chunks/{_server.ts-DB_Kg97c.js → _server.ts-BScvgttw.js} +24 -4
  173. package/build/server/chunks/_server.ts-BScvgttw.js.map +1 -0
  174. package/build/server/chunks/{_server.ts-tSpgyl1D.js → _server.ts-Bjbr7glm.js} +4 -3
  175. package/build/server/chunks/_server.ts-Bjbr7glm.js.map +1 -0
  176. package/build/server/chunks/{_server.ts-COu0vNpd.js → _server.ts-BrqaMMAa.js} +7 -6
  177. package/build/server/chunks/_server.ts-BrqaMMAa.js.map +1 -0
  178. package/build/server/chunks/{_server.ts-vekTmWAx.js → _server.ts-BuYyCrnF.js} +6 -4
  179. package/build/server/chunks/_server.ts-BuYyCrnF.js.map +1 -0
  180. package/build/server/chunks/{_server.ts-DYvb9ijZ.js → _server.ts-ByPExYfO.js} +4 -3
  181. package/build/server/chunks/{_server.ts-DYvb9ijZ.js.map → _server.ts-ByPExYfO.js.map} +1 -1
  182. package/build/server/chunks/_server.ts-CjpQ10xh.js +123 -0
  183. package/build/server/chunks/_server.ts-CjpQ10xh.js.map +1 -0
  184. package/build/server/chunks/_server.ts-CyjDrcZN.js +21 -0
  185. package/build/server/chunks/_server.ts-CyjDrcZN.js.map +1 -0
  186. package/build/server/chunks/{_server.ts-DV8zTCF9.js → _server.ts-DOGUMzPx.js} +4 -3
  187. package/build/server/chunks/{_server.ts-DV8zTCF9.js.map → _server.ts-DOGUMzPx.js.map} +1 -1
  188. package/build/server/chunks/_server.ts-DZvfyuNj.js +15 -0
  189. package/build/server/chunks/_server.ts-DZvfyuNj.js.map +1 -0
  190. package/build/server/chunks/{_server.ts-XzT2UHM1.js → _server.ts-DkPPTUPo.js} +4 -3
  191. package/build/server/chunks/{_server.ts-XzT2UHM1.js.map → _server.ts-DkPPTUPo.js.map} +1 -1
  192. package/build/server/chunks/{_server.ts-Deok2y88.js → _server.ts-Ds_SUGC3.js} +184 -90
  193. package/build/server/chunks/_server.ts-Ds_SUGC3.js.map +1 -0
  194. package/build/server/chunks/{_server.ts-Ch-6iOHp.js → _server.ts-G8OeADGj.js} +141 -89
  195. package/build/server/chunks/_server.ts-G8OeADGj.js.map +1 -0
  196. package/build/server/chunks/{auth-DeCdZ83n.js → auth-DuunT7Cg.js} +2 -2
  197. package/build/server/chunks/{auth-DeCdZ83n.js.map → auth-DuunT7Cg.js.map} +1 -1
  198. package/build/server/chunks/{client-BdGHe_hY.js → client-DRtPDkMh.js} +4 -4
  199. package/build/server/chunks/{client-BdGHe_hY.js.map → client-DRtPDkMh.js.map} +1 -1
  200. package/build/server/chunks/client2-bqqmu0b7.js +7 -0
  201. package/build/server/chunks/{client2-CCBGA-2V.js.map → client2-bqqmu0b7.js.map} +1 -1
  202. package/build/server/chunks/close-BGlLztTb.js +192 -0
  203. package/build/server/chunks/close-BGlLztTb.js.map +1 -0
  204. package/build/server/chunks/events-handler-Dm1mNPQP.js +20 -0
  205. package/build/server/chunks/events-handler-Dm1mNPQP.js.map +1 -0
  206. package/build/server/chunks/html-FW6Ia4bL.js +8 -0
  207. package/build/server/chunks/html-FW6Ia4bL.js.map +1 -0
  208. package/build/server/chunks/{shared-server-sSGG17Df.js → index-CoD1IJuy.js} +2 -11
  209. package/build/server/chunks/index-CoD1IJuy.js.map +1 -0
  210. package/build/server/chunks/{index-DwaY1cAm.js → index-DP9bWJrR.js} +2 -2
  211. package/build/server/chunks/{index-DwaY1cAm.js.map → index-DP9bWJrR.js.map} +1 -1
  212. package/build/server/chunks/{index-server-CrDaL06Y.js → index-server-BUmV4MIG.js} +2 -2
  213. package/build/server/chunks/index-server-BUmV4MIG.js.map +1 -0
  214. package/build/server/chunks/index-server2-BJrT0wnA.js +5 -0
  215. package/build/server/chunks/index-server2-BJrT0wnA.js.map +1 -0
  216. package/build/server/chunks/{index2-CgclKpUj.js → index2-D5Y19GKR.js} +2 -2
  217. package/build/server/chunks/index2-D5Y19GKR.js.map +1 -0
  218. package/build/server/chunks/{library-apns-BqJbvSKh.js → library-apns-Cf-E-DhM.js} +5 -2
  219. package/build/server/chunks/library-apns-Cf-E-DhM.js.map +1 -0
  220. package/build/server/chunks/providers-DtstoHQ0.js +17 -0
  221. package/build/server/chunks/providers-DtstoHQ0.js.map +1 -0
  222. package/build/server/chunks/{pty-manager-BQVB7IVj.js → pty-manager-TyMUpDA9.js} +41 -9
  223. package/build/server/chunks/pty-manager-TyMUpDA9.js.map +1 -0
  224. package/build/server/chunks/{root-DDSnEAZv.js → root-CATOR_0t.js} +2 -2
  225. package/build/server/chunks/root-CATOR_0t.js.map +1 -0
  226. package/build/server/chunks/shared-server-DaWdgxVh.js +11 -0
  227. package/build/server/chunks/shared-server-DaWdgxVh.js.map +1 -0
  228. package/build/server/chunks/{state.svelte-hBbXlUak.js → state.svelte-CftllyvC.js} +3 -3
  229. package/build/server/chunks/state.svelte-CftllyvC.js.map +1 -0
  230. package/build/server/chunks/{stores-DHNzYNpX.js → stores-BjL57aOK.js} +4 -4
  231. package/build/server/chunks/{stores-DHNzYNpX.js.map → stores-BjL57aOK.js.map} +1 -1
  232. package/build/server/index.js +173 -6
  233. package/build/server/index.js.map +1 -1
  234. package/build/server/manifest.js +53 -30
  235. package/build/server/manifest.js.map +1 -1
  236. package/package.json +24 -6
  237. package/scripts/dev.mjs +361 -0
  238. package/scripts/install.sh +11 -3
  239. package/scripts/{fix-generated-types.sh → postgen-types.sh} +2 -2
  240. package/scripts/setup.cjs +219 -24
  241. package/scripts/vercel-env-commands.sh +3 -3
  242. package/server.ts +3 -3
  243. package/src/app.html +163 -0
  244. package/src/lib/modules/client/activity/ActivityFeed.svelte +279 -0
  245. package/src/lib/modules/client/activity/index.ts +8 -0
  246. package/src/lib/modules/client/activity/store.svelte.ts +478 -0
  247. package/src/lib/modules/client/activity/summarizer.ts +224 -0
  248. package/src/lib/modules/client/common/Card.svelte +2 -9
  249. package/src/lib/modules/client/common/EmptyState.svelte +2 -20
  250. package/src/lib/modules/client/common/Icon.svelte +3 -7
  251. package/src/lib/modules/client/common/StatusBadge.svelte +2 -4
  252. package/src/lib/modules/client/common/config-guard.ts +22 -2
  253. package/src/lib/modules/client/common/index.ts +1 -1
  254. package/src/lib/modules/client/common/time.ts +27 -9
  255. package/src/lib/modules/client/dashboard/DashboardCard.svelte +374 -0
  256. package/src/lib/modules/client/dashboard/DashboardView.svelte +66 -0
  257. package/src/lib/modules/client/dashboard/index.ts +12 -0
  258. package/src/lib/modules/client/dashboard/store.svelte.ts +663 -0
  259. package/src/lib/modules/client/dashboard/summarizer.ts +205 -0
  260. package/src/lib/modules/client/neurolink/fetch-proxy.ts +70 -0
  261. package/src/lib/modules/client/neurolink/provider-config.ts +111 -0
  262. package/src/lib/modules/client/terminal/ChatView.svelte +46 -43
  263. package/src/lib/modules/client/terminal/CommandPalette.svelte +3 -12
  264. package/src/lib/modules/client/terminal/ConnectionStatus.svelte +3 -6
  265. package/src/lib/modules/client/terminal/LaunchSheet.svelte +10 -21
  266. package/src/lib/modules/client/terminal/QuickKeys.svelte +4 -11
  267. package/src/lib/modules/client/terminal/ShortcutsHelp.svelte +3 -6
  268. package/src/lib/modules/client/terminal/keyboard-shortcuts.ts +5 -7
  269. package/src/lib/modules/client/terminal/xterm-wrapper.ts +27 -47
  270. package/src/lib/modules/server/apn/library-apns.ts +6 -3
  271. package/src/lib/modules/server/apn/notification-history.ts +2 -2
  272. package/src/lib/modules/server/apn/notification-sessions.ts +1 -3
  273. package/src/lib/modules/server/apn/pending-requests.ts +1 -1
  274. package/src/lib/modules/server/apn/types.ts +2 -52
  275. package/src/lib/modules/server/cli/index.ts +1 -30
  276. package/src/lib/modules/server/cli/runner.ts +7 -15
  277. package/src/lib/modules/server/fcm/fcm-service.ts +2 -2
  278. package/src/lib/modules/server/sessions/jsonl-parser.ts +97 -42
  279. package/src/lib/modules/server/sessions/jsonl-reader.ts +144 -76
  280. package/src/lib/modules/server/sessions/opencode-reader.ts +1 -1
  281. package/src/lib/modules/server/sessions/process-detector.ts +72 -31
  282. package/src/lib/modules/server/sessions/types.ts +2 -42
  283. package/src/lib/modules/server/terminal/holder-client.ts +11 -35
  284. package/src/lib/modules/server/terminal/opencode-watcher.ts +16 -24
  285. package/src/lib/modules/server/terminal/pty-manager.ts +40 -45
  286. package/src/lib/modules/server/terminal/session-watcher.ts +15 -17
  287. package/src/lib/modules/server/terminal/terminal-store.ts +1 -1
  288. package/src/lib/modules/server/ws/events-handler.ts +1 -16
  289. package/src/lib/modules/server/ws/keepalive.ts +1 -5
  290. package/src/lib/modules/server/ws/server.ts +1 -1
  291. package/src/lib/modules/server/ws/session-handler.ts +20 -86
  292. package/src/lib/modules/server/ws/terminal-handler.ts +28 -51
  293. package/src/lib/modules/server/ws/ticket-store.ts +1 -1
  294. package/src/lib/modules/shared/providers.ts +21 -0
  295. package/src/lib/types/activity.ts +18 -0
  296. package/src/lib/types/apn.ts +43 -0
  297. package/src/lib/types/cli.ts +39 -0
  298. package/src/lib/types/common.ts +39 -0
  299. package/src/lib/types/dashboard.ts +4 -0
  300. package/src/lib/types/generated/Client.ts +1656 -0
  301. package/src/{generated/types → lib/types/generated}/WsProtocol.ts +344 -2
  302. package/src/lib/types/index.ts +28 -0
  303. package/src/lib/types/neurolink.ts +4 -0
  304. package/src/lib/types/server.ts +93 -0
  305. package/src/lib/types/sessions.ts +59 -0
  306. package/src/lib/types/terminal-client.ts +132 -0
  307. package/src/lib/types/ws.ts +161 -0
  308. package/src/routes/+error.svelte +7 -2
  309. package/src/routes/+layout.server.ts +9 -0
  310. package/src/routes/+layout.svelte +36 -7
  311. package/src/routes/+page.server.ts +7 -0
  312. package/src/routes/+page.svelte +85 -35
  313. package/src/routes/activity/+page.server.ts +7 -0
  314. package/src/routes/activity/+page.svelte +58 -0
  315. package/src/routes/api/health/+server.ts +32 -19
  316. package/src/routes/api/neurolink-proxy/+server.ts +136 -0
  317. package/src/routes/api/notify/+server.ts +190 -87
  318. package/src/routes/api/sessions/+server.ts +1 -1
  319. package/src/routes/api/sessions/connect/+server.ts +10 -6
  320. package/src/routes/api/terminals/+server.ts +20 -1
  321. package/src/routes/api/terminals/[id]/+server.ts +16 -2
  322. package/src/routes/api/webhook/+server.ts +5 -33
  323. package/src/routes/api/ws-ticket/+server.ts +4 -4
  324. package/src/routes/config/+page.server.ts +9 -0
  325. package/src/routes/config/+page.svelte +118 -25
  326. package/src/routes/neurolink/+page.server.ts +10 -0
  327. package/src/routes/neurolink/+page.svelte +331 -0
  328. package/src/routes/project/+page.svelte +17 -12
  329. package/src/routes/session/[id]/+page.svelte +146 -62
  330. package/src/routes/terminals/+page.svelte +2 -2
  331. package/src/routes/terminals/[id]/+page.svelte +99 -88
  332. package/svelte.config.js +1 -3
  333. package/tsconfig.json +1 -0
  334. package/build/client/_app/immutable/assets/2.CAShZ7lQ.css +0 -1
  335. package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.br +0 -1
  336. package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.gz +0 -0
  337. package/build/client/_app/immutable/assets/3.DGDHCVnW.css.br +0 -0
  338. package/build/client/_app/immutable/assets/3.DGDHCVnW.css.gz +0 -0
  339. package/build/client/_app/immutable/chunks/B5NAKyil.js +0 -20
  340. package/build/client/_app/immutable/chunks/B5NAKyil.js.br +0 -0
  341. package/build/client/_app/immutable/chunks/B5NAKyil.js.gz +0 -0
  342. package/build/client/_app/immutable/chunks/B8XegpSE.js +0 -1
  343. package/build/client/_app/immutable/chunks/B8XegpSE.js.br +0 -0
  344. package/build/client/_app/immutable/chunks/B8XegpSE.js.gz +0 -0
  345. package/build/client/_app/immutable/chunks/B8zoBsv3.js +0 -6
  346. package/build/client/_app/immutable/chunks/B8zoBsv3.js.br +0 -0
  347. package/build/client/_app/immutable/chunks/B8zoBsv3.js.gz +0 -0
  348. package/build/client/_app/immutable/chunks/BIaXC2t9.js +0 -1
  349. package/build/client/_app/immutable/chunks/BIaXC2t9.js.br +0 -0
  350. package/build/client/_app/immutable/chunks/BIaXC2t9.js.gz +0 -0
  351. package/build/client/_app/immutable/chunks/BOYo8yTr.js +0 -1
  352. package/build/client/_app/immutable/chunks/BOYo8yTr.js.br +0 -0
  353. package/build/client/_app/immutable/chunks/BOYo8yTr.js.gz +0 -0
  354. package/build/client/_app/immutable/chunks/Bu1aqm5j.js +0 -1
  355. package/build/client/_app/immutable/chunks/Bu1aqm5j.js.br +0 -0
  356. package/build/client/_app/immutable/chunks/Bu1aqm5j.js.gz +0 -0
  357. package/build/client/_app/immutable/chunks/CQjSATpv.js +0 -61
  358. package/build/client/_app/immutable/chunks/CQjSATpv.js.br +0 -0
  359. package/build/client/_app/immutable/chunks/CQjSATpv.js.gz +0 -0
  360. package/build/client/_app/immutable/chunks/CRbaG9cv.js.br +0 -0
  361. package/build/client/_app/immutable/chunks/CSoRdFvv.js.br +0 -0
  362. package/build/client/_app/immutable/chunks/CSoRdFvv.js.gz +0 -0
  363. package/build/client/_app/immutable/chunks/CZHsSL_X.js.br +0 -0
  364. package/build/client/_app/immutable/chunks/CZHsSL_X.js.gz +0 -0
  365. package/build/client/_app/immutable/chunks/CiF38mQq.js.br +0 -0
  366. package/build/client/_app/immutable/chunks/CiF38mQq.js.gz +0 -0
  367. package/build/client/_app/immutable/chunks/DSU1n5N_.js +0 -1
  368. package/build/client/_app/immutable/chunks/DSU1n5N_.js.br +0 -0
  369. package/build/client/_app/immutable/chunks/DSU1n5N_.js.gz +0 -0
  370. package/build/client/_app/immutable/chunks/DVkn4r72.js +0 -1
  371. package/build/client/_app/immutable/chunks/DVkn4r72.js.br +0 -0
  372. package/build/client/_app/immutable/chunks/DVkn4r72.js.gz +0 -0
  373. package/build/client/_app/immutable/chunks/DjsDGxCa.js.br +0 -0
  374. package/build/client/_app/immutable/chunks/DjsDGxCa.js.gz +0 -0
  375. package/build/client/_app/immutable/chunks/UJOiqIYE.js.br +0 -0
  376. package/build/client/_app/immutable/chunks/UJOiqIYE.js.gz +0 -0
  377. package/build/client/_app/immutable/chunks/r0JawsZc.js +0 -2
  378. package/build/client/_app/immutable/chunks/r0JawsZc.js.br +0 -0
  379. package/build/client/_app/immutable/chunks/r0JawsZc.js.gz +0 -0
  380. package/build/client/_app/immutable/entry/app.CU7KVZja.js +0 -2
  381. package/build/client/_app/immutable/entry/app.CU7KVZja.js.br +0 -0
  382. package/build/client/_app/immutable/entry/app.CU7KVZja.js.gz +0 -0
  383. package/build/client/_app/immutable/entry/start.RAMZY19t.js +0 -1
  384. package/build/client/_app/immutable/entry/start.RAMZY19t.js.br +0 -2
  385. package/build/client/_app/immutable/entry/start.RAMZY19t.js.gz +0 -0
  386. package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js +0 -1
  387. package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js.br +0 -0
  388. package/build/client/_app/immutable/nodes/0.Bi3XYMSu.js.gz +0 -0
  389. package/build/client/_app/immutable/nodes/1.DTmfBFmm.js +0 -1
  390. package/build/client/_app/immutable/nodes/1.DTmfBFmm.js.br +0 -0
  391. package/build/client/_app/immutable/nodes/1.DTmfBFmm.js.gz +0 -0
  392. package/build/client/_app/immutable/nodes/2.Cm269yzt.js +0 -1
  393. package/build/client/_app/immutable/nodes/2.Cm269yzt.js.br +0 -0
  394. package/build/client/_app/immutable/nodes/2.Cm269yzt.js.gz +0 -0
  395. package/build/client/_app/immutable/nodes/3.3yohCM25.js +0 -3
  396. package/build/client/_app/immutable/nodes/3.3yohCM25.js.br +0 -0
  397. package/build/client/_app/immutable/nodes/3.3yohCM25.js.gz +0 -0
  398. package/build/client/_app/immutable/nodes/4.C25c5hMg.js +0 -1
  399. package/build/client/_app/immutable/nodes/4.C25c5hMg.js.br +0 -0
  400. package/build/client/_app/immutable/nodes/4.C25c5hMg.js.gz +0 -0
  401. package/build/client/_app/immutable/nodes/5.DIkXVP4q.js.br +0 -0
  402. package/build/client/_app/immutable/nodes/5.DIkXVP4q.js.gz +0 -0
  403. package/build/client/_app/immutable/nodes/6.BPL-HzUX.js +0 -2
  404. package/build/client/_app/immutable/nodes/6.BPL-HzUX.js.br +0 -0
  405. package/build/client/_app/immutable/nodes/6.BPL-HzUX.js.gz +0 -0
  406. package/build/client/_app/immutable/nodes/7.IgEqce53.js +0 -2
  407. package/build/client/_app/immutable/nodes/7.IgEqce53.js.br +0 -0
  408. package/build/client/_app/immutable/nodes/7.IgEqce53.js.gz +0 -0
  409. package/build/server/chunks/0-DiORznXb.js +0 -9
  410. package/build/server/chunks/0-DiORznXb.js.map +0 -1
  411. package/build/server/chunks/1-D0N7vVhH.js +0 -9
  412. package/build/server/chunks/2-DfSav7a7.js +0 -9
  413. package/build/server/chunks/2-DfSav7a7.js.map +0 -1
  414. package/build/server/chunks/3-Ck7ewhOX.js +0 -9
  415. package/build/server/chunks/3-Ck7ewhOX.js.map +0 -1
  416. package/build/server/chunks/4-DV5MZUz_.js +0 -9
  417. package/build/server/chunks/4-DV5MZUz_.js.map +0 -1
  418. package/build/server/chunks/5-DJhoAjb0.js +0 -9
  419. package/build/server/chunks/5-DJhoAjb0.js.map +0 -1
  420. package/build/server/chunks/6-Cp8CzYbr.js +0 -9
  421. package/build/server/chunks/6-Cp8CzYbr.js.map +0 -1
  422. package/build/server/chunks/7-BA4xzUj3.js +0 -9
  423. package/build/server/chunks/7-BA4xzUj3.js.map +0 -1
  424. package/build/server/chunks/Button-Cs1aE6ka.js.map +0 -1
  425. package/build/server/chunks/Icon-CEUrotA6.js.map +0 -1
  426. package/build/server/chunks/_layout.svelte-CtWmEJwe.js.map +0 -1
  427. package/build/server/chunks/_page.svelte-BdYynOck.js +0 -85
  428. package/build/server/chunks/_page.svelte-BdYynOck.js.map +0 -1
  429. package/build/server/chunks/_page.svelte-CVq6tRb3.js.map +0 -1
  430. package/build/server/chunks/_page.svelte-CxWcQ0Am.js.map +0 -1
  431. package/build/server/chunks/_server.ts-BStnNIcq.js +0 -34
  432. package/build/server/chunks/_server.ts-BStnNIcq.js.map +0 -1
  433. package/build/server/chunks/_server.ts-CAxsWKvS.js.map +0 -1
  434. package/build/server/chunks/_server.ts-COu0vNpd.js.map +0 -1
  435. package/build/server/chunks/_server.ts-CTpcLUH8.js.map +0 -1
  436. package/build/server/chunks/_server.ts-Cf84YIaW.js +0 -25
  437. package/build/server/chunks/_server.ts-Cf84YIaW.js.map +0 -1
  438. package/build/server/chunks/_server.ts-Ch-6iOHp.js.map +0 -1
  439. package/build/server/chunks/_server.ts-CtH0dhUp.js +0 -71
  440. package/build/server/chunks/_server.ts-CtH0dhUp.js.map +0 -1
  441. package/build/server/chunks/_server.ts-DB_Kg97c.js.map +0 -1
  442. package/build/server/chunks/_server.ts-DYpJImqd.js.map +0 -1
  443. package/build/server/chunks/_server.ts-Deok2y88.js.map +0 -1
  444. package/build/server/chunks/_server.ts-tSpgyl1D.js.map +0 -1
  445. package/build/server/chunks/_server.ts-vekTmWAx.js.map +0 -1
  446. package/build/server/chunks/client2-CCBGA-2V.js +0 -7
  447. package/build/server/chunks/index-server-CrDaL06Y.js.map +0 -1
  448. package/build/server/chunks/index2-CgclKpUj.js.map +0 -1
  449. package/build/server/chunks/library-apns-BqJbvSKh.js.map +0 -1
  450. package/build/server/chunks/pty-manager-BQVB7IVj.js.map +0 -1
  451. package/build/server/chunks/root-DDSnEAZv.js.map +0 -1
  452. package/build/server/chunks/shared-server-sSGG17Df.js.map +0 -1
  453. package/build/server/chunks/state.svelte-hBbXlUak.js.map +0 -1
  454. package/src/generated/types/Client.ts +0 -589
  455. package/src/lib/types/config.ts +0 -1
  456. /package/build/client/_app/immutable/assets/{4.BFUut--w.css → 6.BFUut--w.css} +0 -0
  457. /package/build/client/_app/immutable/assets/{4.BFUut--w.css.br → 6.BFUut--w.css.br} +0 -0
  458. /package/build/client/_app/immutable/assets/{4.BFUut--w.css.gz → 6.BFUut--w.css.gz} +0 -0
  459. /package/build/client/_app/immutable/assets/{5.BTOx7yt7.css → 7.BTOx7yt7.css} +0 -0
  460. /package/build/client/_app/immutable/assets/{5.BTOx7yt7.css.br → 7.BTOx7yt7.css.br} +0 -0
  461. /package/build/client/_app/immutable/assets/{5.BTOx7yt7.css.gz → 7.BTOx7yt7.css.gz} +0 -0
  462. /package/build/client/_app/immutable/assets/{6.eZGZN-BF.css → 8.eZGZN-BF.css} +0 -0
  463. /package/build/client/_app/immutable/assets/{6.eZGZN-BF.css.br → 8.eZGZN-BF.css.br} +0 -0
  464. /package/build/client/_app/immutable/assets/{6.eZGZN-BF.css.gz → 8.eZGZN-BF.css.gz} +0 -0
  465. /package/build/client/_app/immutable/assets/{7.DwS5ZHBh.css → 9.DwS5ZHBh.css} +0 -0
  466. /package/build/client/_app/immutable/assets/{7.DwS5ZHBh.css.br → 9.DwS5ZHBh.css.br} +0 -0
  467. /package/build/client/_app/immutable/assets/{7.DwS5ZHBh.css.gz → 9.DwS5ZHBh.css.gz} +0 -0
  468. /package/src/{generated/types → lib/types/generated}/API.ts +0 -0
  469. /package/src/{generated/types → lib/types/generated}/APN.ts +0 -0
  470. /package/src/{generated/types → lib/types/generated}/CLI.ts +0 -0
  471. /package/src/{generated/types → lib/types/generated}/Config.ts +0 -0
  472. /package/src/{generated/types → lib/types/generated}/Holder.ts +0 -0
  473. /package/src/{generated/types → lib/types/generated}/JWT.ts +0 -0
  474. /package/src/{generated/types → lib/types/generated}/Notification.ts +0 -0
  475. /package/src/{generated/types → lib/types/generated}/OpenCode.ts +0 -0
  476. /package/src/{generated/types → lib/types/generated}/Sessions.ts +0 -0
  477. /package/src/{generated/types → lib/types/generated}/Terminal.ts +0 -0
  478. /package/src/{generated/types → lib/types/generated}/index.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { an as ssr_context } from './index-DwaY1cAm.js';
1
+ import { ak as ssr_context } from './index-DP9bWJrR.js';
2
2
 
3
3
  function onDestroy(fn) {
4
4
  /** @type {SSRContext} */
@@ -6,4 +6,4 @@ function onDestroy(fn) {
6
6
  }
7
7
 
8
8
  export { onDestroy as o };
9
- //# sourceMappingURL=index-server-CrDaL06Y.js.map
9
+ //# sourceMappingURL=index-server-BUmV4MIG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-server-BUmV4MIG.js","sources":["../../../.svelte-kit/adapter-node/chunks/index-server.js"],"sourcesContent":["import { ae as ssr_context } from \"./index.js\";\nfunction onDestroy(fn) {\n /** @type {SSRContext} */\n ssr_context.r.on_destroy(fn);\n}\nexport {\n onDestroy as o\n};\n"],"names":[],"mappings":";;AACA,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB;AACA,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AAC9B;;;;"}
@@ -0,0 +1,5 @@
1
+ const SvelteSet = globalThis.Set;
2
+ const SvelteMap = globalThis.Map;
3
+
4
+ export { SvelteMap as S, SvelteSet as a };
5
+ //# sourceMappingURL=index-server2-BJrT0wnA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-server2-BJrT0wnA.js","sources":["../../../.svelte-kit/adapter-node/chunks/index-server2.js"],"sourcesContent":["const SvelteSet = globalThis.Set;\nconst SvelteMap = globalThis.Map;\nexport {\n SvelteMap as S,\n SvelteSet as a\n};\n"],"names":[],"mappings":"AAAK,MAAC,SAAS,GAAG,UAAU,CAAC;AACxB,MAAC,SAAS,GAAG,UAAU,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { al as noop, am as safe_not_equal } from './index-DwaY1cAm.js';
1
+ import { ah as noop, ai as safe_not_equal } from './index-DP9bWJrR.js';
2
2
 
3
3
  const subscriber_queue = [];
4
4
  function readable(value, start) {
@@ -55,4 +55,4 @@ function writable(value, start = noop) {
55
55
  }
56
56
 
57
57
  export { readable as r, writable as w };
58
- //# sourceMappingURL=index2-CgclKpUj.js.map
58
+ //# sourceMappingURL=index2-D5Y19GKR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2-D5Y19GKR.js","sources":["../../../.svelte-kit/adapter-node/chunks/index2.js"],"sourcesContent":["import { ac as noop, ad as safe_not_equal } from \"./index.js\";\nconst subscriber_queue = [];\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\nfunction writable(value, start = noop) {\n let stop = null;\n const subscribers = /* @__PURE__ */ new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) {\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(\n /** @type {T} */\n value\n ));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set, update) || noop;\n }\n run(\n /** @type {T} */\n value\n );\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0 && stop) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nexport {\n readable as r,\n writable as w\n};\n"],"names":[],"mappings":";;AACA,MAAM,gBAAgB,GAAG,EAAE;AAC3B,SAAS,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE;AAChC,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtC,GAAG;AACH;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE;AACvC,EAAE,IAAI,IAAI,GAAG,IAAI;AACjB,EAAE,MAAM,WAAW,mBAAmB,IAAI,GAAG,EAAE;AAC/C,EAAE,SAAS,GAAG,CAAC,SAAS,EAAE;AAC1B,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;AAC1C,MAAM,KAAK,GAAG,SAAS;AACvB,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,MAAM,SAAS,GAAG,CAAC,gBAAgB,CAAC,MAAM;AAClD,QAAQ,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAC9C,UAAU,UAAU,CAAC,CAAC,CAAC,EAAE;AACzB,UAAU,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;AAClD,QAAQ;AACR,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/D,YAAY,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,UAAU;AACV,UAAU,gBAAgB,CAAC,MAAM,GAAG,CAAC;AACrC,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,SAAS,MAAM,CAAC,EAAE,EAAE;AACtB,IAAI,GAAG,CAAC,EAAE;AACV;AACA,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE;AAC7C,IAAI,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;AACxC,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/B,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE;AAChC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI;AACvC,IAAI;AACJ,IAAI,GAAG;AACP;AACA,MAAM;AACN,KAAK;AACL,IAAI,OAAO,MAAM;AACjB,MAAM,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;AACpC,MAAM,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE;AAC1C,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,GAAG,IAAI;AACnB,MAAM;AACN,IAAI,CAAC;AACL,EAAE;AACF,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;AACnC;;;;"}
@@ -1,4 +1,4 @@
1
- import { b as private_env } from './shared-server-sSGG17Df.js';
1
+ import { b as private_env } from './shared-server-DaWdgxVh.js';
2
2
  import apn from '@parse/node-apn';
3
3
  import { t as toErrorMessage } from './error-DDXB3duW.js';
4
4
 
@@ -56,6 +56,9 @@ class LibraryAPNsService {
56
56
  };
57
57
  notification.badge = payload.badge ?? 1;
58
58
  notification.sound = payload.sound ?? "default";
59
+ if (!this.bundleId) {
60
+ throw new Error("APNs bundleId is required but was not configured");
61
+ }
59
62
  notification.topic = this.bundleId;
60
63
  if (payload.category) {
61
64
  notification.aps.category = payload.category;
@@ -101,4 +104,4 @@ class LibraryAPNsService {
101
104
  }
102
105
 
103
106
  export { LibraryAPNsService as L };
104
- //# sourceMappingURL=library-apns-BqJbvSKh.js.map
107
+ //# sourceMappingURL=library-apns-Cf-E-DhM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-apns-Cf-E-DhM.js","sources":["../../../.svelte-kit/adapter-node/chunks/library-apns.js"],"sourcesContent":["import { b as private_env } from \"./shared-server.js\";\nimport apn from \"@parse/node-apn\";\nimport { t as toErrorMessage } from \"./error.js\";\nclass LibraryAPNsService {\n bundleId;\n configured = false;\n keyId;\n privateKey;\n provider = null;\n teamId;\n constructor() {\n this.keyId = private_env.APNS_KEY_ID;\n this.teamId = private_env.APNS_TEAM_ID;\n this.bundleId = private_env.APNS_BUNDLE_ID;\n this.privateKey = private_env.APNS_KEY;\n if (!this.keyId || !this.teamId || !this.bundleId || !this.privateKey) {\n console.error(\n \"[apns] Missing required configuration (APNS_KEY_ID, APNS_TEAM_ID, APNS_BUNDLE_ID, or APNS_KEY)\"\n );\n this.configured = false;\n return;\n }\n const production = private_env.APNS_PRODUCTION === \"true\";\n const options = {\n production,\n token: {\n key: this.privateKey,\n keyId: this.keyId,\n teamId: this.teamId\n }\n };\n try {\n this.provider = new apn.Provider(options);\n this.configured = true;\n console.log(`[apns] Provider initialized (${production ? \"production\" : \"sandbox\"} mode)`);\n } catch (error) {\n console.error(\"[apns] Failed to create provider:\", toErrorMessage(error));\n this.configured = false;\n }\n }\n isConfigured() {\n return this.configured;\n }\n async sendNotification(deviceToken, payload) {\n if (!this.configured || !this.provider) {\n throw new Error(\"APNs service not configured properly\");\n }\n if (!deviceToken || !payload) {\n throw new Error(\"Device token and payload are required\");\n }\n const notification = new apn.Notification();\n notification.alert = {\n body: payload.body ?? payload.message ?? \"\",\n title: payload.title\n };\n notification.badge = payload.badge ?? 1;\n notification.sound = payload.sound ?? \"default\";\n if (!this.bundleId) {\n throw new Error(\"APNs bundleId is required but was not configured\");\n }\n notification.topic = this.bundleId;\n if (payload.category) {\n notification.aps.category = payload.category;\n }\n if (payload.data) {\n notification.payload = payload.data;\n }\n const result = await this.provider.send(notification, deviceToken);\n if (result.failed && result.failed.length > 0) {\n console.error(`[apns] Full failed result: ${JSON.stringify(result.failed[0])}`);\n const failedItem = result.failed[0];\n const rawReason = failedItem?.response?.reason ?? failedItem?.status ?? failedItem?.error;\n const reason = typeof rawReason === \"string\" ? rawReason : JSON.stringify(rawReason ?? failedItem);\n console.error(`[apns] Delivery failed: ${reason}`);\n return {\n error: reason,\n failed: result.failed?.length || 0,\n sent: result.sent?.length || 0,\n success: false\n };\n }\n if (result.sent && result.sent.length > 0) {\n return {\n details: result.sent,\n failed: 0,\n sent: result.sent.length,\n success: true\n };\n }\n return {\n details: [result],\n error: \"Unexpected result format\",\n failed: 1,\n sent: 0,\n success: false\n };\n }\n shutdown() {\n if (this.provider) {\n void this.provider.shutdown();\n }\n }\n}\nexport {\n LibraryAPNsService as L\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ const PROVIDER_ENV_KEYS = {
2
+ anthropic: ["ANTHROPIC_API_KEY"],
3
+ "google-ai": ["GOOGLE_AI_API_KEY"],
4
+ litellm: ["LITELLM_API_KEY", "LITELLM_BASE_URL"],
5
+ mistral: ["MISTRAL_API_KEY"],
6
+ openai: ["OPENAI_API_KEY"]
7
+ };
8
+ function getProviderAvailability(env) {
9
+ const result = {};
10
+ for (const [id, keys] of Object.entries(PROVIDER_ENV_KEYS)) {
11
+ result[id] = keys.every((k) => Boolean(env[k]?.trim()));
12
+ }
13
+ return result;
14
+ }
15
+
16
+ export { getProviderAvailability as g };
17
+ //# sourceMappingURL=providers-DtstoHQ0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers-DtstoHQ0.js","sources":["../../../.svelte-kit/adapter-node/chunks/providers.js"],"sourcesContent":["const PROVIDER_ENV_KEYS = {\n anthropic: [\"ANTHROPIC_API_KEY\"],\n \"google-ai\": [\"GOOGLE_AI_API_KEY\"],\n litellm: [\"LITELLM_API_KEY\", \"LITELLM_BASE_URL\"],\n mistral: [\"MISTRAL_API_KEY\"],\n openai: [\"OPENAI_API_KEY\"]\n};\nfunction getProviderAvailability(env) {\n const result = {};\n for (const [id, keys] of Object.entries(PROVIDER_ENV_KEYS)) {\n result[id] = keys.every((k) => Boolean(env[k]?.trim()));\n }\n return result;\n}\nexport {\n getProviderAvailability as g\n};\n"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG;AAC1B,EAAE,SAAS,EAAE,CAAC,mBAAmB,CAAC;AAClC,EAAE,WAAW,EAAE,CAAC,mBAAmB,CAAC;AACpC,EAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;AAClD,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC9B,EAAE,MAAM,EAAE,CAAC,gBAAgB;AAC3B,CAAC;AACD,SAAS,uBAAuB,CAAC,GAAG,EAAE;AACtC,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAC9D,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,EAAE;AACF,EAAE,OAAO,MAAM;AACf;;;;"}
@@ -5,6 +5,7 @@ import { existsSync, readFileSync, unlinkSync, readdirSync, statSync } from 'fs'
5
5
  import * as path from 'path';
6
6
  import path__default from 'path';
7
7
  import { fileURLToPath } from 'url';
8
+ import { b as broadcastEvent } from './events-handler-Dm1mNPQP.js';
8
9
  import * as net from 'net';
9
10
  import Database from 'better-sqlite3';
10
11
  import { r as resolveOpenCodeDbPath } from './opencode-db-path-DcfhJtJy.js';
@@ -53,7 +54,7 @@ class HolderClient {
53
54
  socket.on("data", (chunk) => {
54
55
  this.lineBuf += chunk;
55
56
  const lines = this.lineBuf.split("\n");
56
- this.lineBuf = lines.pop();
57
+ this.lineBuf = lines.pop() ?? "";
57
58
  for (const line of lines) {
58
59
  if (line.length === 0) {
59
60
  continue;
@@ -75,7 +76,7 @@ class HolderClient {
75
76
  }
76
77
  if (info !== null) {
77
78
  const settle = () => {
78
- if (settled) {
79
+ if (settled || !info) {
79
80
  return;
80
81
  }
81
82
  settled = true;
@@ -289,7 +290,10 @@ class OpenCodeWatcher {
289
290
  if (!partsByMessage.has(part.message_id)) {
290
291
  partsByMessage.set(part.message_id, []);
291
292
  }
292
- partsByMessage.get(part.message_id).push(part);
293
+ const bucket = partsByMessage.get(part.message_id);
294
+ if (bucket) {
295
+ bucket.push(part);
296
+ }
293
297
  }
294
298
  return this.buildMessages(messages, partsByMessage);
295
299
  } catch (error) {
@@ -509,7 +513,10 @@ class OpenCodeWatcher {
509
513
  if (!partsByMessage.has(part.message_id)) {
510
514
  partsByMessage.set(part.message_id, []);
511
515
  }
512
- partsByMessage.get(part.message_id).push(part);
516
+ const bucket = partsByMessage.get(part.message_id);
517
+ if (bucket) {
518
+ bucket.push(part);
519
+ }
513
520
  }
514
521
  const newEntries = this.buildMessages(dedupedMessages, partsByMessage);
515
522
  results.push(...newEntries);
@@ -550,7 +557,10 @@ class OpenCodeWatcher {
550
557
  if (!partsByMessage.has(part.message_id)) {
551
558
  partsByMessage.set(part.message_id, []);
552
559
  }
553
- partsByMessage.get(part.message_id).push(part);
560
+ const bucket = partsByMessage.get(part.message_id);
561
+ if (bucket) {
562
+ bucket.push(part);
563
+ }
554
564
  }
555
565
  const affectedMsgIds = [...partsByMessage.keys()];
556
566
  const affectedMessages = batchInQuery(
@@ -876,6 +886,9 @@ class PtyManager {
876
886
  reject(new Error(`Holder process exited with code ${code} before ready`));
877
887
  });
878
888
  });
889
+ if (holder.pid === void 0 || holder.pid === null) {
890
+ throw new Error(`Holder process forked but PID unavailable for terminal ${id}`);
891
+ }
879
892
  const holderPid = holder.pid;
880
893
  const client = new HolderClient();
881
894
  const connectResult = await client.connect(socketPath);
@@ -926,6 +939,11 @@ class PtyManager {
926
939
  });
927
940
  this.startSessionDiscovery(terminal);
928
941
  this.terminals.set(id, terminal);
942
+ broadcastEvent({
943
+ command: terminal.command ?? command,
944
+ terminalId: id,
945
+ type: "terminal-created"
946
+ });
929
947
  return terminal;
930
948
  }
931
949
  // -----------------------------------------------------------------------
@@ -946,9 +964,11 @@ class PtyManager {
946
964
  terminal.pty.kill("SIGTERM");
947
965
  } catch {
948
966
  }
949
- try {
950
- process.kill(terminal.holderPid, "SIGKILL");
951
- } catch {
967
+ if (terminal.holderPid > 0) {
968
+ try {
969
+ process.kill(terminal.holderPid, "SIGKILL");
970
+ } catch {
971
+ }
952
972
  }
953
973
  }
954
974
  terminal.pty.disconnect();
@@ -1032,6 +1052,7 @@ class PtyManager {
1032
1052
  terminal.status = "exited";
1033
1053
  terminal.exitedAt = /* @__PURE__ */ new Date();
1034
1054
  terminalStore.markExited(id, null);
1055
+ this.emitTerminalExited(id, null);
1035
1056
  return true;
1036
1057
  }
1037
1058
  setTimeout(() => {
@@ -1043,6 +1064,7 @@ class PtyManager {
1043
1064
  terminal.status = "exited";
1044
1065
  terminal.exitedAt = terminal.exitedAt ?? /* @__PURE__ */ new Date();
1045
1066
  terminalStore.markExited(id, null);
1067
+ this.emitTerminalExited(id, null);
1046
1068
  }
1047
1069
  }, SIGKILL_DELAY_MS);
1048
1070
  return true;
@@ -1168,6 +1190,14 @@ class PtyManager {
1168
1190
  // -----------------------------------------------------------------------
1169
1191
  // Private: startSessionDiscovery — polling for session files
1170
1192
  // -----------------------------------------------------------------------
1193
+ /** Broadcast a terminal-exited event to /ws/events for the activity feed. */
1194
+ emitTerminalExited(terminalId, exitCode) {
1195
+ broadcastEvent({
1196
+ code: exitCode ?? null,
1197
+ terminalId,
1198
+ type: "terminal-exited"
1199
+ });
1200
+ }
1171
1201
  /** Evict a terminal, freeing all resources. */
1172
1202
  evict(id) {
1173
1203
  const terminal = this.terminals.get(id);
@@ -1489,6 +1519,7 @@ class PtyManager {
1489
1519
  terminal.exitCode = exitCode;
1490
1520
  terminal.exitedAt = /* @__PURE__ */ new Date();
1491
1521
  terminalStore.markExited(terminal.id, exitCode);
1522
+ this.emitTerminalExited(terminal.id, exitCode);
1492
1523
  const exitMsg = JSON.stringify({
1493
1524
  code: exitCode,
1494
1525
  signal: null,
@@ -1504,6 +1535,7 @@ class PtyManager {
1504
1535
  terminal.status = "exited";
1505
1536
  terminal.exitedAt = /* @__PURE__ */ new Date();
1506
1537
  terminalStore.markOrphaned(terminal.id);
1538
+ this.emitTerminalExited(terminal.id, null);
1507
1539
  }
1508
1540
  });
1509
1541
  }
@@ -1523,4 +1555,4 @@ const ptyManager = globalThis[PTY_GLOBAL_KEY] || new PtyManager();
1523
1555
  globalThis[PTY_GLOBAL_KEY] = ptyManager;
1524
1556
 
1525
1557
  export { ptyManager as p };
1526
- //# sourceMappingURL=pty-manager-BQVB7IVj.js.map
1558
+ //# sourceMappingURL=pty-manager-TyMUpDA9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty-manager-TyMUpDA9.js","sources":["../../../.svelte-kit/adapter-node/chunks/pty-manager.js"],"sourcesContent":["import { fork } from \"child_process\";\nimport { randomBytes } from \"crypto\";\nimport * as fs from \"fs\";\nimport { existsSync, readFileSync, unlinkSync, readdirSync, statSync } from \"fs\";\nimport * as path from \"path\";\nimport path__default from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { b as broadcastEvent } from \"./events-handler.js\";\nimport * as net from \"net\";\nimport Database from \"better-sqlite3\";\nimport { r as resolveOpenCodeDbPath } from \"./opencode-db-path.js\";\nclass HolderClient {\n connected = false;\n pid = 0;\n activityCb = null;\n cwdCb = null;\n disconnectCb = null;\n exitCb = null;\n lineBuf = \"\";\n outputCb = null;\n socket = null;\n /**\n * Connect to a holder process via its Unix domain socket.\n * Resolves once the initial `info` and `scrollback` handshake messages\n * have been received.\n */\n connect(socketPath) {\n return new Promise((resolve, reject) => {\n let settled = false;\n let info = null;\n let scrollback = \"\";\n const pendingMessages = [];\n const HANDSHAKE_TIMEOUT_MS = 1e4;\n const handshakeTimer = setTimeout(() => {\n if (!settled) {\n settled = true;\n this.connected = false;\n if (this.socket) {\n this.socket.destroy();\n this.socket = null;\n }\n reject(\n new Error(`Handshake timeout: holder did not respond within ${HANDSHAKE_TIMEOUT_MS}ms`)\n );\n }\n }, HANDSHAKE_TIMEOUT_MS);\n const socket = net.createConnection(socketPath);\n this.socket = socket;\n socket.setEncoding(\"utf8\");\n socket.on(\"connect\", () => {\n this.connected = true;\n });\n socket.on(\"data\", (chunk) => {\n this.lineBuf += chunk;\n const lines = this.lineBuf.split(\"\\n\");\n this.lineBuf = lines.pop() ?? \"\";\n for (const line of lines) {\n if (line.length === 0) {\n continue;\n }\n let msg;\n try {\n msg = JSON.parse(line);\n } catch {\n continue;\n }\n if (!settled) {\n if (msg.type === \"info\") {\n info = { exitCode: msg.exitCode, exited: msg.exited, pid: msg.pid };\n this.pid = msg.pid;\n } else if (msg.type === \"scrollback\") {\n scrollback = msg.data;\n } else {\n pendingMessages.push(msg);\n }\n if (info !== null) {\n const settle = () => {\n if (settled || !info) {\n return;\n }\n settled = true;\n clearTimeout(handshakeTimer);\n resolve({\n exitCode: info.exitCode,\n exited: info.exited,\n pid: info.pid,\n scrollback\n });\n const queued = [...pendingMessages];\n pendingMessages.length = 0;\n setTimeout(() => {\n for (const pending of queued) {\n this.handleMessage(pending);\n }\n }, 0);\n };\n if (msg.type === \"scrollback\") {\n settle();\n } else if (msg.type === \"info\") {\n setTimeout(settle, 100);\n }\n }\n } else {\n this.handleMessage(msg);\n }\n }\n });\n socket.on(\"error\", (err) => {\n if (!settled) {\n settled = true;\n clearTimeout(handshakeTimer);\n this.connected = false;\n this.socket = null;\n reject(err);\n }\n });\n socket.on(\"close\", () => {\n const wasConnected = this.connected;\n this.connected = false;\n this.socket = null;\n this.lineBuf = \"\";\n if (!settled) {\n settled = true;\n clearTimeout(handshakeTimer);\n reject(new Error(\"Socket closed before handshake completed\"));\n return;\n }\n if (wasConnected && this.disconnectCb) {\n this.disconnectCb();\n }\n });\n });\n }\n /** Gracefully disconnect from the holder (does NOT kill the holder). */\n disconnect() {\n this.connected = false;\n if (this.socket) {\n this.socket.destroy();\n this.socket = null;\n }\n this.lineBuf = \"\";\n }\n /** Send a signal to the PTY process (default SIGTERM). */\n kill(signal) {\n const msg = { type: \"kill\" };\n if (signal) {\n msg.signal = signal;\n }\n this.send(msg);\n }\n /** Register callback for activity state changes. */\n onActivity(cb) {\n this.activityCb = cb;\n }\n /** Register callback for CWD changes. */\n onCwd(cb) {\n this.cwdCb = cb;\n }\n /** Register callback for unexpected disconnect from holder. */\n onDisconnect(cb) {\n this.disconnectCb = cb;\n }\n /** Register callback for PTY exit. */\n onExit(cb) {\n this.exitCb = cb;\n }\n /** Register callback for PTY output data. */\n onOutput(cb) {\n this.outputCb = cb;\n }\n /** Resize the PTY. */\n resize(cols, rows) {\n this.send({ cols, rows, type: \"resize\" });\n }\n /** Write data to the PTY stdin. */\n write(data) {\n this.send({ data, type: \"input\" });\n }\n // ── Private Helpers ────────────────────────────────────────────────\n /** Dispatch a post-handshake message from the holder. */\n handleMessage(msg) {\n switch (msg.type) {\n case \"activity\":\n if (this.activityCb) {\n this.activityCb(msg.active);\n }\n break;\n case \"cwd\":\n if (this.cwdCb) {\n this.cwdCb(msg.path);\n }\n break;\n case \"exit\":\n if (this.exitCb) {\n this.exitCb(msg.code);\n }\n break;\n case \"output\":\n if (this.outputCb) {\n this.outputCb(msg.data);\n }\n break;\n }\n }\n /** Send an ndjson message to the holder. */\n send(msg) {\n if (!this.socket || !this.connected) {\n return;\n }\n this.socket.write(`${JSON.stringify(msg)}\n`);\n }\n}\nconst OPENCODE_DB_PATH = resolveOpenCodeDbPath();\nconst POLL_INTERVAL_MS = 2e3;\nconst SQLITE_MAX_PARAMS = 500;\nclass OpenCodeWatcher {\n watchers = /* @__PURE__ */ new Map();\n /**\n * Find the most recent non-archived OpenCode session that matches\n * the given working directory. Checks session.directory equals or\n * starts with `cwd`.\n *\n * Returns the session ID or null if none found.\n */\n findSessionId(cwd, createdAfter) {\n const db = openDb();\n if (!db) {\n return null;\n }\n try {\n const millisFilter = createdAfter ?? 0;\n const secondsFilter = createdAfter ? Math.floor(createdAfter / 1e3) : 0;\n const cwdLikePattern = `${cwd.replace(/[%_\\\\]/g, \"\\\\$&\")}/%`;\n const row = db.prepare(\n `\n\t\t\t\tSELECT id\n\t\t\t\tFROM session\n\t\t\t\tWHERE (time_archived IS NULL OR time_archived = 0)\n\t\t\t\t AND (directory = ? OR directory LIKE ? ESCAPE '\\\\')\n\t\t\t\t AND (\n\t\t\t\t (time_updated >= 1e12 AND time_updated > ?)\n\t\t\t\t OR (time_updated < 1e12 AND time_updated > ?)\n\t\t\t\t )\n\t\t\t\tORDER BY time_updated DESC\n\t\t\t\tLIMIT 1\n\t\t\t`\n ).get(cwd, cwdLikePattern, millisFilter, secondsFilter);\n return row?.id ?? null;\n } catch (error) {\n console.error(\"[opencode-watcher] Failed to find session:\", error);\n return null;\n } finally {\n db.close();\n }\n }\n /**\n * Read all messages and parts for a session from SQLite, converting\n * them to ConversationMessage format.\n */\n getHistory(sessionId) {\n const db = openDb();\n if (!db) {\n return [];\n }\n try {\n const messages = db.prepare(\n `\n\t\t\t\tSELECT id, session_id, time_created, time_updated, data\n\t\t\t\tFROM message\n\t\t\t\tWHERE session_id = ?\n\t\t\t\tORDER BY time_created ASC\n\t\t\t`\n ).all(sessionId);\n if (messages.length === 0) {\n return [];\n }\n const messageIds = messages.map((m) => m.id);\n const parts = batchInQuery(\n db,\n `SELECT id, message_id, session_id, time_created, time_updated, data\n\t\t\t\tFROM part\n\t\t\t\tWHERE message_id IN (__PLACEHOLDERS__)\n\t\t\t\tORDER BY time_created ASC`,\n messageIds\n );\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of parts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n return this.buildMessages(messages, partsByMessage);\n } catch (error) {\n console.error(\"[opencode-watcher] Failed to read history:\", error);\n return [];\n } finally {\n db.close();\n }\n }\n /**\n * Stop watching a specific session. If a callback is provided, only that\n * subscriber is removed — the interval keeps running while other subscribers\n * remain. If no callback is provided, all subscribers and the interval are\n * cleared (backward compat).\n */\n stop(sessionId, callback) {\n const state = this.watchers.get(sessionId);\n if (!state) {\n return;\n }\n if (callback) {\n state.callbacks.delete(callback);\n console.log(\n `[opencode-watcher] Removed subscriber from session: ${sessionId} (remaining=${state.callbacks.size})`\n );\n if (state.callbacks.size > 0) {\n return;\n }\n }\n clearInterval(state.intervalHandle);\n this.watchers.delete(sessionId);\n console.log(`[opencode-watcher] Stopped watching session: ${sessionId}`);\n }\n /**\n * Stop all active watchers.\n */\n stopAll() {\n for (const [sessionId] of this.watchers) {\n this.stop(sessionId);\n }\n }\n /**\n * Start polling the SQLite DB every 2 seconds for new messages/parts\n * in the given session. Converts new data to ConversationMessage\n * format and invokes the callback.\n */\n watch(sessionId, callback) {\n const existing = this.watchers.get(sessionId);\n if (existing) {\n existing.callbacks.add(callback);\n console.log(\n `[opencode-watcher] Added subscriber to session: ${sessionId} (total=${existing.callbacks.size})`\n );\n return;\n }\n const { emittedMessageIds, emittedPartUpdatedAt, lastMessageTime, lastPartTime } = this.getHighWaterMarks(sessionId);\n const intervalHandle = setInterval(() => {\n this.poll(sessionId);\n }, POLL_INTERVAL_MS);\n const state = {\n callbacks: /* @__PURE__ */ new Set([callback]),\n emittedMessageIds,\n emittedPartUpdatedAt,\n intervalHandle,\n lastMessageTime,\n lastPartTime,\n sessionId\n };\n this.watchers.set(sessionId, state);\n console.log(\n `[opencode-watcher] Watching session: ${sessionId} (lastMsg=${lastMessageTime}, lastPart=${lastPartTime})`\n );\n }\n // ── Private Helpers ────────────────────────────────────────────────\n /**\n * Convert OpenCode messages + their parts into ConversationMessage\n * objects for consumption by the session handler.\n */\n buildMessages(messages, partsByMessage) {\n const result = [];\n for (const msg of messages) {\n let msgData = {};\n try {\n msgData = JSON.parse(msg.data);\n } catch {\n continue;\n }\n const role = msgData.role === \"user\" ? \"user\" : \"assistant\";\n const msgParts = partsByMessage.get(msg.id) || [];\n const parts = [];\n for (const part of msgParts) {\n let partData;\n try {\n partData = JSON.parse(part.data);\n } catch {\n continue;\n }\n const converted = convertPartToMessagePart(partData);\n if (converted) {\n parts.push(converted);\n }\n }\n if (parts.length === 0) {\n console.debug(`[opencode-watcher] Skipping message ${msg.id} (no usable parts)`);\n continue;\n }\n result.push({\n id: msg.id,\n parts,\n role,\n timestamp: new Date(toMillis(msg.time_created)).toISOString()\n });\n }\n return result;\n }\n /**\n * Scan existing messages/parts to determine the starting high-water\n * marks for time-based polling. Also collects the set of already-seen\n * message IDs so we do not re-emit them.\n */\n getHighWaterMarks(sessionId) {\n const db = openDb();\n if (!db) {\n return {\n emittedMessageIds: /* @__PURE__ */ new Set(),\n emittedPartUpdatedAt: /* @__PURE__ */ new Map(),\n lastMessageTime: 0,\n lastPartTime: 0\n };\n }\n try {\n const msgRow = db.prepare(\n `\n\t\t\t\tSELECT MAX(time_created) as maxTime\n\t\t\t\tFROM message\n\t\t\t\tWHERE session_id = ?\n\t\t\t`\n ).get(sessionId);\n const partRow = db.prepare(\n `\n\t\t\t\tSELECT MAX(time_updated) as maxTime\n\t\t\t\tFROM part\n\t\t\t\tWHERE session_id = ?\n\t\t\t`\n ).get(sessionId);\n const existingIds = db.prepare(\n `\n\t\t\t\tSELECT id FROM message WHERE session_id = ?\n\t\t\t`\n ).all(sessionId);\n const emittedMessageIds = new Set(existingIds.map((r) => r.id));\n const existingParts = db.prepare(\n `\n\t\t\t\tSELECT id, time_updated FROM part WHERE session_id = ?\n\t\t\t`\n ).all(sessionId);\n const emittedPartUpdatedAt = /* @__PURE__ */ new Map();\n for (const p of existingParts) {\n emittedPartUpdatedAt.set(p.id, p.time_updated);\n }\n return {\n emittedMessageIds,\n emittedPartUpdatedAt,\n lastMessageTime: msgRow?.maxTime ?? 0,\n lastPartTime: partRow?.maxTime ?? 0\n };\n } catch (error) {\n console.error(\"[opencode-watcher] Failed to get high-water marks:\", error);\n return {\n emittedMessageIds: /* @__PURE__ */ new Set(),\n emittedPartUpdatedAt: /* @__PURE__ */ new Map(),\n lastMessageTime: 0,\n lastPartTime: 0\n };\n } finally {\n db.close();\n }\n }\n /**\n * Single poll iteration. Opens the DB, queries for new messages and\n * updated parts, converts them to ConversationMessage[], and invokes\n * the watcher callbacks.\n */\n poll(sessionId) {\n const state = this.watchers.get(sessionId);\n if (!state) {\n return;\n }\n const db = openDb();\n if (!db) {\n return;\n }\n try {\n const results = [];\n const newMessages = db.prepare(\n `\n\t\t\t\tSELECT id, session_id, time_created, time_updated, data\n\t\t\t\tFROM message\n\t\t\t\tWHERE session_id = ? AND time_created > ?\n\t\t\t\tORDER BY time_created ASC\n\t\t\t`\n ).all(sessionId, state.lastMessageTime);\n if (newMessages.length > 0) {\n const dedupedMessages = newMessages.filter((m) => !state.emittedMessageIds.has(m.id));\n if (dedupedMessages.length > 0) {\n const newMsgIds = dedupedMessages.map((m) => m.id);\n const newParts = batchInQuery(\n db,\n `SELECT id, message_id, session_id, time_created, time_updated, data\n\t\t\t\t\t\tFROM part\n\t\t\t\t\t\tWHERE message_id IN (__PLACEHOLDERS__)\n\t\t\t\t\t\tORDER BY time_created ASC`,\n newMsgIds\n );\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of newParts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const newEntries = this.buildMessages(dedupedMessages, partsByMessage);\n results.push(...newEntries);\n for (const part of newParts) {\n if (part.time_updated > state.lastPartTime) {\n state.lastPartTime = part.time_updated;\n }\n state.emittedPartUpdatedAt.set(part.id, part.time_updated);\n }\n }\n for (const msg of newMessages) {\n if (msg.time_created > state.lastMessageTime) {\n state.lastMessageTime = msg.time_created;\n }\n state.emittedMessageIds.add(msg.id);\n }\n }\n const updatedParts = db.prepare(\n `\n\t\t\t\tSELECT id, message_id, session_id, time_created, time_updated, data\n\t\t\t\tFROM part\n\t\t\t\tWHERE session_id = ? AND time_updated > ?\n\t\t\t\tORDER BY time_created ASC\n\t\t\t`\n ).all(sessionId, state.lastPartTime);\n if (updatedParts.length > 0) {\n const newMsgIdSet = new Set(newMessages.map((m) => m.id));\n const newParts = updatedParts.filter((p) => {\n if (newMsgIdSet.has(p.message_id)) {\n return false;\n }\n const lastSeen = state.emittedPartUpdatedAt.get(p.id);\n return lastSeen === void 0 || p.time_updated > lastSeen;\n });\n if (newParts.length > 0) {\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of newParts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const affectedMsgIds = [...partsByMessage.keys()];\n const affectedMessages = batchInQuery(\n db,\n `SELECT id, session_id, time_created, time_updated, data\n\t\t\t\t\t\tFROM message\n\t\t\t\t\t\tWHERE id IN (__PLACEHOLDERS__)\n\t\t\t\t\t\tORDER BY time_created ASC`,\n affectedMsgIds\n );\n const updatedEntries = this.buildMessages(affectedMessages, partsByMessage);\n results.push(...updatedEntries);\n for (const part of newParts) {\n state.emittedPartUpdatedAt.set(part.id, part.time_updated);\n }\n }\n for (const part of updatedParts) {\n if (part.time_updated > state.lastPartTime) {\n state.lastPartTime = part.time_updated;\n }\n }\n }\n if (results.length > 0) {\n for (const cb of state.callbacks) {\n try {\n cb(results);\n } catch (cbError) {\n console.error(\"[opencode-watcher] Callback error:\", cbError);\n }\n }\n }\n } catch (error) {\n console.error(\"[opencode-watcher] Poll error:\", error);\n } finally {\n db.close();\n }\n }\n}\nfunction batchInQuery(db, sql, ids) {\n if (ids.length === 0) {\n return [];\n }\n const results = [];\n for (let i = 0; i < ids.length; i += SQLITE_MAX_PARAMS) {\n const chunk = ids.slice(i, i + SQLITE_MAX_PARAMS);\n const placeholders = chunk.map(() => \"?\").join(\",\");\n const query = sql.replace(\"__PLACEHOLDERS__\", placeholders);\n const rows = db.prepare(query).all(...chunk);\n results.push(...rows);\n }\n return results;\n}\nfunction convertPartToMessagePart(data) {\n switch (data.type) {\n case \"reasoning\":\n return { content: data.text || \"\", type: \"thinking\" };\n case \"text\":\n return { content: data.text || \"\", type: \"text\" };\n case \"tool\":\n return {\n id: data.callID || data.id || \"\",\n input: data.state?.input || {},\n toolName: data.tool || \"Unknown\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction openDb() {\n if (!fs.existsSync(OPENCODE_DB_PATH)) {\n return null;\n }\n try {\n return new Database(OPENCODE_DB_PATH, { readonly: true });\n } catch {\n return null;\n }\n}\nfunction toMillis(timestamp) {\n return timestamp < 1e12 ? timestamp * 1e3 : timestamp;\n}\nconst OW_GLOBAL_KEY = \"__shooter_opencode_watcher\";\nconst openCodeWatcher = globalThis[OW_GLOBAL_KEY] || new OpenCodeWatcher();\nglobalThis[OW_GLOBAL_KEY] = openCodeWatcher;\nconst DB_DIR = path.join(process.env.HOME || \"\", \".shooter\");\nconst DB_PATH = path.join(DB_DIR, \"shooter.db\");\nconst COLUMNS = [\n \"id\",\n \"command\",\n \"args\",\n \"cwd\",\n \"cols\",\n \"rows\",\n \"pid\",\n \"holder_pid\",\n \"socket_path\",\n \"session_file\",\n \"opencode_session_id\",\n \"status\",\n \"exit_code\",\n \"created_at\",\n \"exited_at\"\n];\nfunction rowToRecord(row) {\n return {\n args: row.args,\n cols: row.cols,\n command: row.command,\n createdAt: row.created_at,\n cwd: row.cwd,\n exitCode: row.exit_code ?? null,\n exitedAt: row.exited_at ?? null,\n holderPid: row.holder_pid ?? null,\n id: row.id,\n opencodeSessionId: row.opencode_session_id ?? null,\n pid: row.pid ?? null,\n rows: row.rows,\n sessionFile: row.session_file ?? null,\n socketPath: row.socket_path ?? null,\n status: row.status\n };\n}\nconst CAMEL_TO_SNAKE = {\n createdAt: \"created_at\",\n exitCode: \"exit_code\",\n exitedAt: \"exited_at\",\n holderPid: \"holder_pid\",\n opencodeSessionId: \"opencode_session_id\",\n sessionFile: \"session_file\",\n socketPath: \"socket_path\"\n};\nclass TerminalStore {\n db;\n constructor() {\n fs.mkdirSync(DB_DIR, { recursive: true });\n this.db = new Database(DB_PATH);\n this.db.pragma(\"journal_mode = WAL\");\n this.db.exec(`\n\t\t\tCREATE TABLE IF NOT EXISTS terminals (\n\t\t\t\tid TEXT PRIMARY KEY,\n\t\t\t\tcommand TEXT NOT NULL,\n\t\t\t\targs TEXT NOT NULL DEFAULT '[]',\n\t\t\t\tcwd TEXT NOT NULL,\n\t\t\t\tcols INTEGER NOT NULL DEFAULT 80,\n\t\t\t\trows INTEGER NOT NULL DEFAULT 24,\n\t\t\t\tpid INTEGER,\n\t\t\t\tholder_pid INTEGER,\n\t\t\t\tsocket_path TEXT,\n\t\t\t\tsession_file TEXT,\n\t\t\t\topencode_session_id TEXT,\n\t\t\t\tstatus TEXT NOT NULL DEFAULT 'running',\n\t\t\t\texit_code INTEGER,\n\t\t\t\tcreated_at TEXT NOT NULL,\n\t\t\t\texited_at TEXT\n\t\t\t)\n\t\t`);\n }\n deleteOlderThan(ms) {\n const cutoff = new Date(Date.now() - ms).toISOString();\n const result = this.db.prepare(\n \"DELETE FROM terminals WHERE status IN ('exited', 'orphaned') AND COALESCE(exited_at, created_at) < ?\"\n ).run(cutoff);\n return result.changes;\n }\n get(id) {\n const row = this.db.prepare(\"SELECT * FROM terminals WHERE id = ?\").get(id);\n return row ? rowToRecord(row) : null;\n }\n insert(terminal) {\n const placeholders = COLUMNS.map(() => \"?\").join(\", \");\n const stmt = this.db.prepare(\n `INSERT INTO terminals (${COLUMNS.join(\", \")}) VALUES (${placeholders})`\n );\n stmt.run(\n terminal.id,\n terminal.command,\n terminal.args,\n terminal.cwd,\n terminal.cols,\n terminal.rows,\n terminal.pid,\n terminal.holderPid,\n terminal.socketPath,\n terminal.sessionFile,\n terminal.opencodeSessionId,\n terminal.status,\n terminal.exitCode,\n terminal.createdAt,\n terminal.exitedAt\n );\n }\n listAll() {\n const rows = this.db.prepare(\"SELECT * FROM terminals ORDER BY created_at DESC\").all();\n return rows.map(rowToRecord);\n }\n listRunning() {\n const rows = this.db.prepare(\"SELECT * FROM terminals WHERE status = 'running' ORDER BY created_at DESC\").all();\n return rows.map(rowToRecord);\n }\n markExited(id, exitCode) {\n this.db.prepare(\"UPDATE terminals SET status = 'exited', exit_code = ?, exited_at = ? WHERE id = ?\").run(exitCode, (/* @__PURE__ */ new Date()).toISOString(), id);\n }\n markOrphaned(id) {\n this.db.prepare(\n \"UPDATE terminals SET status = 'orphaned', exited_at = COALESCE(exited_at, ?) WHERE id = ?\"\n ).run((/* @__PURE__ */ new Date()).toISOString(), id);\n }\n update(id, fields) {\n const entries = Object.entries(fields).filter(\n ([key, val]) => key !== \"id\" && val !== void 0\n );\n if (entries.length === 0) {\n return;\n }\n const sets = entries.map(([key]) => `${toSnake(key)} = ?`).join(\", \");\n const values = entries.map(([, val]) => val ?? null);\n this.db.prepare(`UPDATE terminals SET ${sets} WHERE id = ?`).run(...values, id);\n }\n}\nfunction toSnake(key) {\n return CAMEL_TO_SNAKE[key] || key;\n}\nconst TS_GLOBAL_KEY = \"__shooter_terminal_store\";\nconst terminalStore = globalThis[TS_GLOBAL_KEY] || new TerminalStore();\nglobalThis[TS_GLOBAL_KEY] = terminalStore;\nconst MAX_SCROLLBACK_BYTES = 512 * 1024;\nconst MAX_OUTPUT_BUFFER_BYTES = 1024 * 1024;\nconst SCROLLBACK_CHUNK_SIZE = 50 * 1024;\nconst CLEANUP_INTERVAL_MS = 5 * 60 * 1e3;\nconst EXITED_TTL_MS = 60 * 60 * 1e3;\nconst MAX_EXITED_TERMINALS = 10;\nconst SIGKILL_DELAY_MS = 5e3;\nconst HOLDER_READY_TIMEOUT_MS = 5e3;\nconst DB_CLEANUP_TTL_MS = 24 * 60 * 60 * 1e3;\nconst __filename$1 = fileURLToPath(import.meta.url);\nconst __dirname$1 = path__default.dirname(__filename$1);\nclass PtyManager {\n cleanupTimer = null;\n terminals = /* @__PURE__ */ new Map();\n constructor() {\n this.cleanupTimer = setInterval(() => {\n this.cleanup();\n }, CLEANUP_INTERVAL_MS);\n }\n // -----------------------------------------------------------------------\n // create — now async: forks a holder process, connects via HolderClient,\n // persists to SQLite\n // -----------------------------------------------------------------------\n attach(id, ws) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n terminal.clients.add(ws);\n terminal.outputBuffers.set(ws, { data: [], size: 0 });\n void this.sendScrollback(terminal, ws);\n return true;\n }\n // -----------------------------------------------------------------------\n // reconnectAll — recover persisted terminals on server startup\n // -----------------------------------------------------------------------\n cleanup() {\n const now = Date.now();\n const exited = [];\n for (const [id, terminal] of this.terminals) {\n if (terminal.status !== \"exited\") {\n continue;\n }\n const exitTime = terminal.exitedAt?.getTime() ?? terminal.createdAt.getTime();\n if (now - exitTime > EXITED_TTL_MS) {\n this.evict(id);\n continue;\n }\n exited.push({ exitedAt: exitTime, id });\n }\n if (exited.length > MAX_EXITED_TERMINALS) {\n exited.sort((a, b) => a.exitedAt - b.exitedAt);\n const toEvict = exited.slice(0, exited.length - MAX_EXITED_TERMINALS);\n for (const { id } of toEvict) {\n this.evict(id);\n }\n }\n try {\n const deleted = terminalStore.deleteOlderThan(DB_CLEANUP_TTL_MS);\n if (deleted > 0) {\n console.log(`[pty-manager] Cleaned up ${deleted} old terminal record(s) from SQLite`);\n }\n } catch {\n }\n }\n // -----------------------------------------------------------------------\n // disconnectAll — graceful shutdown: disconnect clients, keep holders alive\n // -----------------------------------------------------------------------\n async create(command, args, cwd, cols, rows) {\n const id = randomBytes(4).toString(\"hex\");\n const socketPath = `/tmp/shooter-term-${id}.sock`;\n const holderScript = resolveHolderPath();\n const holderArgs = [id, socketPath, cwd, String(cols), String(rows), command, ...args];\n const holder = fork(holderScript, holderArgs, {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"ignore\", \"ipc\"]\n });\n holder.unref();\n await new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n holder.kill();\n reject(new Error(\"Holder ready timeout\"));\n }, HOLDER_READY_TIMEOUT_MS);\n holder.on(\"message\", (msg) => {\n if (msg.type === \"ready\") {\n clearTimeout(timeout);\n holder.disconnect();\n resolve();\n }\n });\n holder.on(\"error\", (err) => {\n clearTimeout(timeout);\n reject(new Error(`Holder process error: ${err.message}`));\n });\n holder.on(\"exit\", (code) => {\n clearTimeout(timeout);\n reject(new Error(`Holder process exited with code ${code} before ready`));\n });\n });\n if (holder.pid === void 0 || holder.pid === null) {\n throw new Error(`Holder process forked but PID unavailable for terminal ${id}`);\n }\n const holderPid = holder.pid;\n const client = new HolderClient();\n const connectResult = await client.connect(socketPath);\n const now = /* @__PURE__ */ new Date();\n const terminal = {\n args,\n clients: /* @__PURE__ */ new Set(),\n cols,\n command,\n createdAt: now,\n currentCwd: null,\n cwd,\n exitCode: connectResult.exitCode,\n exitedAt: null,\n holderPid,\n id,\n isActive: false,\n openCodeNoopCb: null,\n openCodeSessionId: null,\n outputBuffers: /* @__PURE__ */ new Map(),\n pid: connectResult.pid,\n pollTimer: null,\n pty: client,\n rows,\n scrollback: connectResult.scrollback,\n sessionFile: null,\n socketPath,\n status: connectResult.exited ? \"exited\" : \"running\",\n watcherOffset: 0\n };\n this.wireHolderCallbacks(client, terminal);\n terminalStore.insert({\n args: JSON.stringify(args),\n cols,\n command,\n createdAt: now.toISOString(),\n cwd,\n exitCode: null,\n exitedAt: null,\n holderPid,\n id,\n opencodeSessionId: null,\n pid: connectResult.pid,\n rows,\n sessionFile: null,\n socketPath,\n status: \"running\"\n });\n this.startSessionDiscovery(terminal);\n this.terminals.set(id, terminal);\n broadcastEvent({\n command: terminal.command ?? command,\n terminalId: id,\n type: \"terminal-created\"\n });\n return terminal;\n }\n // -----------------------------------------------------------------------\n // get\n // -----------------------------------------------------------------------\n destroy() {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n for (const [id, terminal] of this.terminals) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n if (terminal.status === \"running\") {\n try {\n terminal.pty.kill(\"SIGTERM\");\n } catch {\n }\n if (terminal.holderPid > 0) {\n try {\n process.kill(terminal.holderPid, \"SIGKILL\");\n } catch {\n }\n }\n }\n terminal.pty.disconnect();\n for (const ws of terminal.clients) {\n try {\n ws.close();\n } catch {\n }\n }\n this.terminals.delete(id);\n }\n }\n // -----------------------------------------------------------------------\n // list — running first, then recently exited, each group sorted by\n // createdAt descending\n // -----------------------------------------------------------------------\n detach(id, ws) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n terminal.clients.delete(ws);\n terminal.outputBuffers.delete(ws);\n return true;\n }\n // -----------------------------------------------------------------------\n // kill — route through holder: SIGTERM, then SIGKILL after 5 s\n // -----------------------------------------------------------------------\n disconnectAll() {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n for (const [, terminal] of this.terminals) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n terminal.pty.disconnect();\n for (const ws of terminal.clients) {\n try {\n ws.close();\n } catch {\n }\n }\n terminal.clients.clear();\n terminal.outputBuffers.clear();\n }\n this.terminals.clear();\n }\n // -----------------------------------------------------------------------\n // remove — remove an exited terminal from the map\n // -----------------------------------------------------------------------\n get(id) {\n return this.terminals.get(id) ?? null;\n }\n // -----------------------------------------------------------------------\n // resize\n // -----------------------------------------------------------------------\n getScrollback(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return null;\n }\n return terminal.scrollback;\n }\n // -----------------------------------------------------------------------\n // attach — register a WebSocket client and replay scrollback\n // -----------------------------------------------------------------------\n kill(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n if (terminal.status === \"exited\") {\n return true;\n }\n try {\n terminal.pty.kill(\"SIGTERM\");\n } catch {\n terminal.status = \"exited\";\n terminal.exitedAt = /* @__PURE__ */ new Date();\n terminalStore.markExited(id, null);\n this.emitTerminalExited(id, null);\n return true;\n }\n setTimeout(() => {\n if (terminal.status === \"running\") {\n try {\n terminal.pty.kill(\"SIGKILL\");\n } catch {\n }\n terminal.status = \"exited\";\n terminal.exitedAt = terminal.exitedAt ?? /* @__PURE__ */ new Date();\n terminalStore.markExited(id, null);\n this.emitTerminalExited(id, null);\n }\n }, SIGKILL_DELAY_MS);\n return true;\n }\n // -----------------------------------------------------------------------\n // detach — remove a WebSocket client\n // -----------------------------------------------------------------------\n list() {\n const all = Array.from(this.terminals.values());\n const running = all.filter((t) => t.status === \"running\").sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n const exited = all.filter((t) => t.status === \"exited\").sort((a, b) => {\n const aTime = a.exitedAt?.getTime() ?? a.createdAt.getTime();\n const bTime = b.exitedAt?.getTime() ?? b.createdAt.getTime();\n return bTime - aTime;\n });\n return [...running, ...exited];\n }\n // -----------------------------------------------------------------------\n // getScrollback — return raw scrollback data for replay\n // -----------------------------------------------------------------------\n async reconnectAll() {\n const running = terminalStore.listRunning();\n if (running.length === 0) {\n console.log(\"[pty-manager] No persisted terminals to reconnect\");\n return;\n }\n console.log(`[pty-manager] Reconnecting to ${running.length} persisted terminal(s)...`);\n for (const record of running) {\n try {\n await this.reconnectOne(record);\n } catch (err) {\n const errMsg = err instanceof Error ? err.message : String(err);\n console.warn(`[pty-manager] Failed to reconnect terminal ${record.id}: ${errMsg}`);\n this.handleReconnectFailure(record);\n }\n }\n }\n // -----------------------------------------------------------------------\n // cleanup — evict exited terminals older than 1 hour, cap at 10 exited;\n // also clean up old SQLite records\n // -----------------------------------------------------------------------\n remove(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return false;\n }\n if (terminal.status === \"running\") {\n return false;\n }\n this.evict(id);\n return true;\n }\n // -----------------------------------------------------------------------\n // destroy — emergency forced kill (kills holder processes too)\n // -----------------------------------------------------------------------\n resize(id, cols, rows) {\n const terminal = this.terminals.get(id);\n if (!terminal || terminal.status === \"exited\") {\n return false;\n }\n try {\n terminal.pty.resize(cols, rows);\n terminal.cols = cols;\n terminal.rows = rows;\n return true;\n } catch {\n return false;\n }\n }\n // -----------------------------------------------------------------------\n // Private: reconnectOne — reconnect to a single persisted terminal\n // -----------------------------------------------------------------------\n appendScrollback(terminal, data) {\n terminal.scrollback += data;\n if (Buffer.byteLength(terminal.scrollback, \"utf8\") > MAX_SCROLLBACK_BYTES) {\n const mid = Math.floor(terminal.scrollback.length / 2);\n const newlineIdx = terminal.scrollback.indexOf(\"\\n\", mid);\n if (newlineIdx !== -1) {\n terminal.scrollback = terminal.scrollback.slice(newlineIdx + 1);\n } else {\n terminal.scrollback = terminal.scrollback.slice(mid);\n }\n }\n }\n // -----------------------------------------------------------------------\n // Private: handleReconnectFailure — handle failed reconnection\n // -----------------------------------------------------------------------\n broadcastOutput(terminal, data) {\n const msg = JSON.stringify({ data, type: \"output\" });\n for (const ws of terminal.clients) {\n if (ws.bufferedAmount > MAX_OUTPUT_BUFFER_BYTES) {\n this.safeSend(ws, JSON.stringify({ bytes: data.length, type: \"output-dropped\" }));\n continue;\n }\n const buffer = terminal.outputBuffers.get(ws);\n if (!buffer) {\n continue;\n }\n const msgSize = Buffer.byteLength(msg, \"utf8\");\n if (buffer.size + msgSize > MAX_OUTPUT_BUFFER_BYTES) {\n let droppedBytes = 0;\n while (buffer.size + msgSize > MAX_OUTPUT_BUFFER_BYTES && buffer.data.length > 0) {\n const dropped = buffer.data.shift();\n if (dropped) {\n const droppedSize = Buffer.byteLength(dropped, \"utf8\");\n buffer.size -= droppedSize;\n droppedBytes += droppedSize;\n }\n }\n if (droppedBytes > 0) {\n const dropMsg = JSON.stringify({\n bytes: droppedBytes,\n type: \"output-dropped\"\n });\n this.safeSend(ws, dropMsg);\n }\n }\n buffer.data.push(msg);\n buffer.size += msgSize;\n this.flushOutputBuffer(ws, buffer);\n }\n }\n // -----------------------------------------------------------------------\n // Private: startSessionDiscovery — polling for session files\n // -----------------------------------------------------------------------\n /** Broadcast a terminal-exited event to /ws/events for the activity feed. */\n emitTerminalExited(terminalId, exitCode) {\n broadcastEvent({\n code: exitCode ?? null,\n terminalId,\n type: \"terminal-exited\"\n });\n }\n /** Evict a terminal, freeing all resources. */\n evict(id) {\n const terminal = this.terminals.get(id);\n if (!terminal) {\n return;\n }\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n if (terminal.openCodeSessionId && terminal.openCodeNoopCb) {\n openCodeWatcher.stop(terminal.openCodeSessionId, terminal.openCodeNoopCb);\n terminal.openCodeNoopCb = null;\n }\n terminal.pty.disconnect();\n for (const ws of terminal.clients) {\n try {\n ws.close();\n } catch {\n }\n }\n terminal.clients.clear();\n terminal.outputBuffers.clear();\n terminal.scrollback = \"\";\n this.terminals.delete(id);\n }\n // -----------------------------------------------------------------------\n // Private: appendScrollback — append to cached scrollback string,\n // trim from midpoint when cap exceeded\n // -----------------------------------------------------------------------\n /** Attempt to flush buffered messages to a WebSocket client. */\n flushOutputBuffer(ws, buffer) {\n while (buffer.data.length > 0) {\n const msg = buffer.data[0];\n if (!this.safeSend(ws, msg)) {\n break;\n }\n buffer.data.shift();\n buffer.size -= Buffer.byteLength(msg, \"utf8\");\n }\n }\n // -----------------------------------------------------------------------\n // Private: broadcastOutput — send output to all connected WS clients\n // with backpressure management\n // -----------------------------------------------------------------------\n handleReconnectFailure(record) {\n if (record.holderPid) {\n try {\n process.kill(record.holderPid, 0);\n console.warn(\n `[pty-manager] Holder PID ${record.holderPid} alive but socket dead for ${record.id}`\n );\n } catch {\n }\n }\n if (record.socketPath) {\n const exitFilePath = `${record.socketPath}.exit`;\n if (existsSync(exitFilePath)) {\n try {\n const exitData = JSON.parse(readFileSync(exitFilePath, \"utf8\"));\n unlinkSync(exitFilePath);\n terminalStore.markExited(record.id, exitData.code);\n console.log(\n `[pty-manager] Terminal ${record.id} exited while disconnected (code=${exitData.code})`\n );\n return;\n } catch {\n }\n }\n }\n terminalStore.markOrphaned(record.id);\n console.log(`[pty-manager] Marked terminal ${record.id} as orphaned`);\n }\n async reconnectOne(record) {\n if (!record.socketPath) {\n throw new Error(\"No socket path stored\");\n }\n const exitFilePath = `${record.socketPath}.exit`;\n if (existsSync(exitFilePath)) {\n try {\n const exitData = JSON.parse(readFileSync(exitFilePath, \"utf8\"));\n unlinkSync(exitFilePath);\n terminalStore.markExited(record.id, exitData.code);\n console.log(\n `[pty-manager] Terminal ${record.id} exited while disconnected (code=${exitData.code})`\n );\n return;\n } catch {\n }\n }\n const client = new HolderClient();\n const connectResult = await client.connect(record.socketPath);\n let parsedArgs = [];\n try {\n parsedArgs = JSON.parse(record.args);\n } catch {\n }\n const terminal = {\n args: parsedArgs,\n clients: /* @__PURE__ */ new Set(),\n cols: record.cols,\n command: record.command,\n createdAt: new Date(record.createdAt),\n currentCwd: null,\n cwd: record.cwd,\n exitCode: connectResult.exitCode,\n exitedAt: record.exitedAt ? new Date(record.exitedAt) : null,\n holderPid: record.holderPid ?? 0,\n id: record.id,\n isActive: false,\n openCodeNoopCb: null,\n openCodeSessionId: record.opencodeSessionId ?? null,\n outputBuffers: /* @__PURE__ */ new Map(),\n pid: connectResult.pid,\n pollTimer: null,\n pty: client,\n rows: record.rows,\n scrollback: connectResult.scrollback,\n sessionFile: record.sessionFile ?? null,\n socketPath: record.socketPath,\n status: connectResult.exited ? \"exited\" : \"running\",\n watcherOffset: 0\n };\n if (connectResult.exited) {\n terminal.exitedAt = terminal.exitedAt ?? /* @__PURE__ */ new Date();\n terminalStore.markExited(record.id, connectResult.exitCode);\n }\n this.wireHolderCallbacks(client, terminal);\n if (terminal.sessionFile) ;\n if (terminal.openCodeSessionId) {\n const noopCb = (_messages) => {\n };\n terminal.openCodeNoopCb = noopCb;\n openCodeWatcher.watch(terminal.openCodeSessionId, noopCb);\n }\n if (!terminal.sessionFile && !terminal.openCodeSessionId && terminal.status === \"running\") {\n this.startSessionDiscovery(terminal);\n }\n if (record.pid !== connectResult.pid) {\n terminalStore.update(record.id, { pid: connectResult.pid });\n }\n this.terminals.set(record.id, terminal);\n console.log(\n `[pty-manager] Reconnected terminal ${record.id} (pid=${connectResult.pid}, holder=${record.holderPid}, status=${terminal.status})`\n );\n }\n /** Safely send a message to a WebSocket, returning false on failure. */\n safeSend(ws, msg) {\n try {\n if (ws.readyState !== 1) {\n return false;\n }\n ws.send(msg);\n return true;\n } catch {\n return false;\n }\n }\n /** Send cached scrollback data to a newly connected client in 50 KB chunks. */\n async sendScrollback(terminal, ws) {\n const fullData = terminal.scrollback;\n if (fullData.length === 0) {\n return;\n }\n const totalBytes = Buffer.byteLength(fullData, \"utf8\");\n const totalChunks = Math.ceil(totalBytes / SCROLLBACK_CHUNK_SIZE);\n if (totalChunks <= 1) {\n const msg = JSON.stringify({\n chunk: 1,\n data: fullData,\n total: 1,\n type: \"scrollback\"\n });\n this.safeSend(ws, msg);\n return;\n }\n const buf = Buffer.from(fullData, \"utf8\");\n let offset = 0;\n let chunkIndex = 1;\n while (offset < buf.length) {\n if (ws.bufferedAmount > SCROLLBACK_CHUNK_SIZE * 2) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n const end = Math.min(offset + SCROLLBACK_CHUNK_SIZE, buf.length);\n const chunkData = buf.subarray(offset, end).toString(\"utf8\");\n const msg = JSON.stringify({\n chunk: chunkIndex,\n data: chunkData,\n total: totalChunks,\n type: \"scrollback\"\n });\n this.safeSend(ws, msg);\n offset = end;\n chunkIndex++;\n }\n }\n startSessionDiscovery(terminal) {\n const { command, cwd, id } = terminal;\n if (command === \"claude\") {\n const projectDir = path__default.join(\n process.env.HOME || \"\",\n \".claude\",\n \"projects\",\n cwd.replace(/\\//g, \"-\")\n );\n const resumeIdx = terminal.args.indexOf(\"--resume\");\n if (resumeIdx !== -1 && resumeIdx + 1 < terminal.args.length) {\n const resumeId = terminal.args[resumeIdx + 1];\n if (!/^[0-9a-f-]+$/i.test(resumeId)) {\n console.warn(`[pty-manager] Invalid resume ID: ${resumeId}`);\n } else {\n const resumeFile = path__default.join(projectDir, `${resumeId}.jsonl`);\n if (existsSync(resumeFile)) {\n terminal.sessionFile = resumeFile;\n terminalStore.update(id, { sessionFile: resumeFile });\n return;\n }\n }\n }\n const launchTime = terminal.createdAt.getTime();\n terminal.pollTimer = setInterval(() => {\n if (terminal.status === \"exited\" || terminal.sessionFile) {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n return;\n }\n try {\n if (!existsSync(projectDir)) {\n return;\n }\n const files = readdirSync(projectDir).filter((f) => f.endsWith(\".jsonl\")).map((f) => {\n const stat = statSync(path__default.join(projectDir, f));\n return {\n birthtime: stat.birthtimeMs,\n fullPath: path__default.join(projectDir, f),\n mtime: stat.mtimeMs,\n name: f\n };\n }).filter((f) => f.birthtime > launchTime).sort((a, b) => b.birthtime - a.birthtime);\n if (files.length > 0) {\n terminal.sessionFile = files[0].fullPath;\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n terminalStore.update(id, { sessionFile: terminal.sessionFile });\n }\n } catch {\n }\n }, 1500);\n setTimeout(\n () => {\n if (terminal.pollTimer) {\n clearInterval(terminal.pollTimer);\n terminal.pollTimer = null;\n }\n },\n 5 * 60 * 1e3\n );\n }\n if (command === \"opencode\") {\n const launchTime = terminal.createdAt.getTime();\n const pollInterval = setInterval(() => {\n if (terminal.status === \"exited\" || terminal.openCodeSessionId) {\n clearInterval(pollInterval);\n if (terminal.openCodeSessionId) {\n const noopCb = (_messages) => {\n };\n terminal.openCodeNoopCb = noopCb;\n openCodeWatcher.watch(terminal.openCodeSessionId, noopCb);\n }\n return;\n }\n const sessionId = openCodeWatcher.findSessionId(cwd, launchTime);\n if (sessionId) {\n terminal.openCodeSessionId = sessionId;\n clearInterval(pollInterval);\n const noopCb = (_messages) => {\n };\n terminal.openCodeNoopCb = noopCb;\n openCodeWatcher.watch(sessionId, noopCb);\n terminalStore.update(id, { opencodeSessionId: sessionId });\n }\n }, 2e3);\n terminal.pollTimer = pollInterval;\n setTimeout(\n () => {\n clearInterval(pollInterval);\n terminal.pollTimer = null;\n },\n 5 * 60 * 1e3\n );\n }\n }\n /** Wire up all HolderClient callbacks (activity, CWD, output, exit, disconnect). */\n wireHolderCallbacks(client, terminal) {\n client.onActivity((active) => {\n terminal.isActive = active;\n const msg = JSON.stringify({ active, type: \"activity\" });\n for (const ws of terminal.clients) {\n this.safeSend(ws, msg);\n }\n });\n client.onCwd((path2) => {\n terminal.currentCwd = path2;\n const msg = JSON.stringify({ path: path2, type: \"cwd\" });\n for (const ws of terminal.clients) {\n this.safeSend(ws, msg);\n }\n });\n client.onOutput((data) => {\n this.appendScrollback(terminal, data);\n this.broadcastOutput(terminal, data);\n });\n client.onExit((exitCode) => {\n terminal.status = \"exited\";\n terminal.exitCode = exitCode;\n terminal.exitedAt = /* @__PURE__ */ new Date();\n terminalStore.markExited(terminal.id, exitCode);\n this.emitTerminalExited(terminal.id, exitCode);\n const exitMsg = JSON.stringify({\n code: exitCode,\n signal: null,\n type: \"exit\"\n });\n for (const ws of terminal.clients) {\n this.safeSend(ws, exitMsg);\n }\n });\n client.onDisconnect(() => {\n if (terminal.status === \"running\") {\n console.warn(`[pty-manager] Holder disconnected unexpectedly for terminal ${terminal.id}`);\n terminal.status = \"exited\";\n terminal.exitedAt = /* @__PURE__ */ new Date();\n terminalStore.markOrphaned(terminal.id);\n this.emitTerminalExited(terminal.id, null);\n }\n });\n }\n}\nfunction resolveHolderPath() {\n if (process.env.SHOOTER_HOLDER_PATH) {\n return process.env.SHOOTER_HOLDER_PATH;\n }\n const colocated = path__default.join(__dirname$1, \"pty-holder.cjs\");\n if (existsSync(colocated)) {\n return colocated;\n }\n return path__default.resolve(__dirname$1, \"..\", \"..\", \"pty-holder.cjs\");\n}\nconst PTY_GLOBAL_KEY = \"__shooter_pty_manager\";\nconst ptyManager = globalThis[PTY_GLOBAL_KEY] || new PtyManager();\nglobalThis[PTY_GLOBAL_KEY] = ptyManager;\nexport {\n ptyManager as p\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { w as render, x as set, L as LEGACY_PROPS, y as get, z as flushSync, A as define_property, B as mutable_source, C as init_operations, E as get_first_child, F as COMMENT_NODE, H as HYDRATION_START, G as get_next_sibling, I as HYDRATION_ERROR, J as hydration_failed, K as clear_text_content, M as component_root, N as create_text, O as array_from, P as is_passive_event, Q as set_active_reaction, R as set_active_effect, S as active_reaction, T as active_effect, U as setContext, V as BOUNDARY_EFFECT, W as block, X as branch, Y as queue_micro_task, Z as pause_effect, _ as current_batch, $ as move_effect, a0 as defer_effect, a1 as set_component_context, a2 as Batch, a3 as handle_error, a4 as component_context, a5 as internal_set, a6 as destroy_effect, a7 as invoke_error_boundary, t as derived, a8 as effect_tracking, a9 as render_effect, aa as HYDRATION_END, ab as HYDRATION_START_ELSE, ac as svelte_boundary_reset_onerror, ad as source, ae as untrack, af as increment, ag as HYDRATION_START_FAILED, ah as push$1, ai as pop$1, aj as EFFECT_TRANSPARENT, ak as EFFECT_PRESERVED } from './index-DwaY1cAm.js';
1
+ import { r as render, p as set, L as LEGACY_PROPS, q as get, t as flushSync, w as define_property, x as mutable_source, y as init_operations, z as get_first_child, C as COMMENT_NODE, H as HYDRATION_START, A as get_next_sibling, B as HYDRATION_ERROR, E as hydration_failed, F as clear_text_content, G as component_root, I as create_text, J as array_from, K as is_passive_event, M as set_active_reaction, N as set_active_effect, O as active_reaction, P as active_effect, Q as setContext, R as BOUNDARY_EFFECT, S as block, T as branch, U as queue_micro_task, V as pause_effect, W as current_batch, X as move_effect, Y as defer_effect, Z as set_component_context, _ as Batch, $ as handle_error, a0 as component_context, a1 as internal_set, a2 as destroy_effect, a3 as invoke_error_boundary, o as derived, a4 as effect_tracking, a5 as render_effect, a6 as HYDRATION_END, a7 as HYDRATION_START_ELSE, a8 as svelte_boundary_reset_onerror, a9 as source, aa as untrack, ab as increment, ac as HYDRATION_START_FAILED, ad as push$1, ae as pop$1, af as EFFECT_TRANSPARENT, ag as EFFECT_PRESERVED } from './index-DP9bWJrR.js';
2
2
 
3
3
  // eslint-disable-next-line n/prefer-global/process
4
4
  const IN_WEBCONTAINER = !!globalThis.process?.versions?.webcontainer;
@@ -1168,4 +1168,4 @@ function Root($$renderer, $$props) {
1168
1168
  const root = asClassComponent(Root);
1169
1169
 
1170
1170
  export { disable_search as a, base64_decode as b, decode_params as c, decode_pathname as d, validate_layout_exports as e, validate_page_server_exports as f, validate_page_exports as g, text_encoder as h, resolve as i, get_relative_path as j, base64_encode as k, make_trackable as m, normalize_path as n, root as r, text_decoder as t, validate_layout_server_exports as v, with_request_store as w };
1171
- //# sourceMappingURL=root-DDSnEAZv.js.map
1171
+ //# sourceMappingURL=root-CATOR_0t.js.map