@juspay/shooter 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/build/client/_app/immutable/assets/{0.DC5pAwP3.css → 0.BhZOCxO4.css} +1 -1
  2. package/build/client/_app/immutable/assets/0.BhZOCxO4.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.BhZOCxO4.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/1.BYutk3aU.css +1 -0
  5. package/build/client/_app/immutable/assets/1.BYutk3aU.css.br +0 -0
  6. package/build/client/_app/immutable/assets/1.BYutk3aU.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/{3.BoXp0JoS.css → 3.DGDHCVnW.css} +1 -1
  8. package/build/client/_app/immutable/assets/3.DGDHCVnW.css.br +0 -0
  9. package/build/client/_app/immutable/assets/3.DGDHCVnW.css.gz +0 -0
  10. package/build/client/_app/immutable/assets/4.BFUut--w.css +1 -0
  11. package/build/client/_app/immutable/assets/4.BFUut--w.css.br +0 -0
  12. package/build/client/_app/immutable/assets/4.BFUut--w.css.gz +0 -0
  13. package/build/client/_app/immutable/assets/5.BTOx7yt7.css +1 -0
  14. package/build/client/_app/immutable/assets/5.BTOx7yt7.css.br +0 -0
  15. package/build/client/_app/immutable/assets/5.BTOx7yt7.css.gz +0 -0
  16. package/build/client/_app/immutable/assets/{7.PyEFVv_s.css → 7.DwS5ZHBh.css} +1 -1
  17. package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.br +0 -0
  18. package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.gz +0 -0
  19. package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css +1 -0
  20. package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.br +0 -0
  21. package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.gz +0 -0
  22. package/build/client/_app/immutable/chunks/B-K5Sh65.js +1 -0
  23. package/build/client/_app/immutable/chunks/B-K5Sh65.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/B-K5Sh65.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/B5NAKyil.js +20 -0
  26. package/build/client/_app/immutable/chunks/B5NAKyil.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/B5NAKyil.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/B8XegpSE.js +1 -0
  29. package/build/client/_app/immutable/chunks/B8XegpSE.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/B8XegpSE.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/{50RPd5u3.js → B8zoBsv3.js} +1 -1
  32. package/build/client/_app/immutable/chunks/B8zoBsv3.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/B8zoBsv3.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/BLszSzTT.js +1 -0
  35. package/build/client/_app/immutable/chunks/BLszSzTT.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/BLszSzTT.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/BOYo8yTr.js +1 -0
  38. package/build/client/_app/immutable/chunks/BOYo8yTr.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/BOYo8yTr.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/{CdL99jkG.js → BYqGCrTe.js} +1 -1
  41. package/build/client/_app/immutable/chunks/BYqGCrTe.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/BYqGCrTe.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/Bu1aqm5j.js +1 -0
  44. package/build/client/_app/immutable/chunks/Bu1aqm5j.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/Bu1aqm5j.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/C4mLaWWx.js +1 -0
  47. package/build/client/_app/immutable/chunks/C4mLaWWx.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/C4mLaWWx.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/{ClK4wZbC.js → CQjSATpv.js} +16 -16
  50. package/build/client/_app/immutable/chunks/CQjSATpv.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/CQjSATpv.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/{CojFyTPp.js → CSoRdFvv.js} +1 -1
  53. package/build/client/_app/immutable/chunks/CSoRdFvv.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/CSoRdFvv.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/{tjbnEgXP.js → CZHsSL_X.js} +1 -1
  56. package/build/client/_app/immutable/chunks/CZHsSL_X.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/CZHsSL_X.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/DVkn4r72.js +1 -0
  59. package/build/client/_app/immutable/chunks/DVkn4r72.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/DVkn4r72.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/DjsDGxCa.js +41 -0
  62. package/build/client/_app/immutable/chunks/DjsDGxCa.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/DjsDGxCa.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/UJOiqIYE.js +1 -0
  65. package/build/client/_app/immutable/chunks/UJOiqIYE.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/UJOiqIYE.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/r0JawsZc.js +2 -0
  68. package/build/client/_app/immutable/chunks/r0JawsZc.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/r0JawsZc.js.gz +0 -0
  70. package/build/client/_app/immutable/entry/app.Z3zMnuSx.js +2 -0
  71. package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.br +0 -0
  72. package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.gz +0 -0
  73. package/build/client/_app/immutable/entry/start.Dd-gIP4y.js +1 -0
  74. package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.br +2 -0
  75. package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/0.D2YR8tTD.js +1 -0
  77. package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/1.B3m6rO4C.js +1 -0
  80. package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/2.CyRB2euU.js +1 -0
  83. package/build/client/_app/immutable/nodes/2.CyRB2euU.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/2.CyRB2euU.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/3.3yohCM25.js +3 -0
  86. package/build/client/_app/immutable/nodes/3.3yohCM25.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/3.3yohCM25.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/4.DEAcwl7l.js +1 -0
  89. package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/5.C6bLGWQR.js +4 -0
  92. package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/6.ByTzlA2D.js +2 -0
  95. package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/7.BPMfwzd2.js +2 -0
  98. package/build/client/_app/immutable/nodes/7.BPMfwzd2.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/7.BPMfwzd2.js.gz +0 -0
  100. package/build/client/_app/version.json +1 -1
  101. package/build/client/_app/version.json.br +0 -0
  102. package/build/client/_app/version.json.gz +0 -0
  103. package/build/client/manifest.json +13 -0
  104. package/build/client/manifest.json.br +0 -0
  105. package/build/client/manifest.json.gz +0 -0
  106. package/build/server/chunks/0-Vk38tI2J.js +9 -0
  107. package/build/server/chunks/0-Vk38tI2J.js.map +1 -0
  108. package/build/server/chunks/1-BvYQX5MR.js +9 -0
  109. package/build/server/chunks/1-BvYQX5MR.js.map +1 -0
  110. package/build/server/chunks/2-Cl7R4Qk2.js +9 -0
  111. package/build/server/chunks/2-Cl7R4Qk2.js.map +1 -0
  112. package/build/server/chunks/3-Ck7ewhOX.js +9 -0
  113. package/build/server/chunks/3-Ck7ewhOX.js.map +1 -0
  114. package/build/server/chunks/4-CnDeRm2Z.js +9 -0
  115. package/build/server/chunks/4-CnDeRm2Z.js.map +1 -0
  116. package/build/server/chunks/5-IxitzEvN.js +9 -0
  117. package/build/server/chunks/{5-D0wB7nfE.js.map → 5-IxitzEvN.js.map} +1 -1
  118. package/build/server/chunks/6-CyZ3r1iS.js +9 -0
  119. package/build/server/chunks/6-CyZ3r1iS.js.map +1 -0
  120. package/build/server/chunks/7-BmI7du46.js +9 -0
  121. package/build/server/chunks/7-BmI7du46.js.map +1 -0
  122. package/build/server/chunks/{Button-C7D5W6wV.js → Button-Cs1aE6ka.js} +2 -2
  123. package/build/server/chunks/{Button-C7D5W6wV.js.map → Button-Cs1aE6ka.js.map} +1 -1
  124. package/build/server/chunks/{EmptyState-Ci4pSpmY.js → EmptyState-DDFH1K8g.js} +10 -4
  125. package/build/server/chunks/EmptyState-DDFH1K8g.js.map +1 -0
  126. package/build/server/chunks/{Icon-DyrkHVnV.js → Icon-CEUrotA6.js} +3 -3
  127. package/build/server/chunks/{Icon-DyrkHVnV.js.map → Icon-CEUrotA6.js.map} +1 -1
  128. package/build/server/chunks/{Shimmer-BITK6wrm.js → Shimmer-DB8W1zt6.js} +2 -2
  129. package/build/server/chunks/{Shimmer-BITK6wrm.js.map → Shimmer-DB8W1zt6.js.map} +1 -1
  130. package/build/server/chunks/_error.svelte-uCOJNxvr.js +39 -0
  131. package/build/server/chunks/_error.svelte-uCOJNxvr.js.map +1 -0
  132. package/build/server/chunks/{_layout.svelte-CO4f8UD7.js → _layout.svelte-CtWmEJwe.js} +5 -25
  133. package/build/server/chunks/_layout.svelte-CtWmEJwe.js.map +1 -0
  134. package/build/server/chunks/{_page.svelte-C6bns9aQ.js → _page.svelte-BcZaKdX9.js} +13 -9
  135. package/build/server/chunks/_page.svelte-BcZaKdX9.js.map +1 -0
  136. package/build/server/chunks/{_page.svelte-3Cc3NMAP.js → _page.svelte-BdYynOck.js} +18 -14
  137. package/build/server/chunks/_page.svelte-BdYynOck.js.map +1 -0
  138. package/build/server/chunks/{_page.svelte-CFCONiDK.js → _page.svelte-BgevQjq1.js} +16 -12
  139. package/build/server/chunks/_page.svelte-BgevQjq1.js.map +1 -0
  140. package/build/server/chunks/{_page.svelte-DskND_G9.js → _page.svelte-CVq6tRb3.js} +8 -8
  141. package/build/server/chunks/_page.svelte-CVq6tRb3.js.map +1 -0
  142. package/build/server/chunks/{_page.svelte-rTrWmhOp.js → _page.svelte-CxWcQ0Am.js} +8 -8
  143. package/build/server/chunks/_page.svelte-CxWcQ0Am.js.map +1 -0
  144. package/build/server/chunks/{_page.svelte-C0p3HsIW.js → _page.svelte-DO4oa_LY.js} +11 -13
  145. package/build/server/chunks/_page.svelte-DO4oa_LY.js.map +1 -0
  146. package/build/server/chunks/{_server.ts-CS5H5klP.js → _server.ts-CAxsWKvS.js} +14 -10
  147. package/build/server/chunks/_server.ts-CAxsWKvS.js.map +1 -0
  148. package/build/server/chunks/{_server.ts-C8slOHB0.js → _server.ts-CTpcLUH8.js} +3 -2
  149. package/build/server/chunks/_server.ts-CTpcLUH8.js.map +1 -0
  150. package/build/server/chunks/_server.ts-CtH0dhUp.js +71 -0
  151. package/build/server/chunks/_server.ts-CtH0dhUp.js.map +1 -0
  152. package/build/server/chunks/{_server.ts-DhTrdlWH.js → _server.ts-DB_Kg97c.js} +14 -3
  153. package/build/server/chunks/_server.ts-DB_Kg97c.js.map +1 -0
  154. package/build/server/chunks/_server.ts-DYpJImqd.js +99 -0
  155. package/build/server/chunks/_server.ts-DYpJImqd.js.map +1 -0
  156. package/build/server/chunks/{_server.ts-DpEVfp8W.js → _server.ts-Deok2y88.js} +58 -40
  157. package/build/server/chunks/_server.ts-Deok2y88.js.map +1 -0
  158. package/build/server/chunks/{_server.ts-uHUi-4cd.js → _server.ts-vekTmWAx.js} +3 -2
  159. package/build/server/chunks/_server.ts-vekTmWAx.js.map +1 -0
  160. package/build/server/chunks/{client2-BjxIYuno.js → client-BdGHe_hY.js} +4 -4
  161. package/build/server/chunks/client-BdGHe_hY.js.map +1 -0
  162. package/build/server/chunks/client2-CCBGA-2V.js +7 -0
  163. package/build/server/chunks/client2-CCBGA-2V.js.map +1 -0
  164. package/build/server/chunks/{index-Cnl871UW.js → index-DwaY1cAm.js} +2 -2
  165. package/build/server/chunks/{index-Cnl871UW.js.map → index-DwaY1cAm.js.map} +1 -1
  166. package/build/server/chunks/{index-server-CUC9Jt7r.js → index-server-CrDaL06Y.js} +2 -2
  167. package/build/server/chunks/{index-server-CUC9Jt7r.js.map → index-server-CrDaL06Y.js.map} +1 -1
  168. package/build/server/chunks/{index2-HA3VTH7y.js → index2-CgclKpUj.js} +2 -2
  169. package/build/server/chunks/{index2-HA3VTH7y.js.map → index2-CgclKpUj.js.map} +1 -1
  170. package/build/server/chunks/opencode-db-path-DcfhJtJy.js +15 -0
  171. package/build/server/chunks/opencode-db-path-DcfhJtJy.js.map +1 -0
  172. package/build/server/chunks/{pty-manager-DR0Wt2Ac.js → pty-manager-BQVB7IVj.js} +17 -15
  173. package/build/server/chunks/pty-manager-BQVB7IVj.js.map +1 -0
  174. package/build/server/chunks/{root-DhswcH6o.js → root-DDSnEAZv.js} +2 -2
  175. package/build/server/chunks/{root-DhswcH6o.js.map → root-DDSnEAZv.js.map} +1 -1
  176. package/build/server/chunks/{state.svelte-2Lellg7t.js → state.svelte-hBbXlUak.js} +3 -3
  177. package/build/server/chunks/{state.svelte-2Lellg7t.js.map → state.svelte-hBbXlUak.js.map} +1 -1
  178. package/build/server/chunks/stores-DHNzYNpX.js +28 -0
  179. package/build/server/chunks/stores-DHNzYNpX.js.map +1 -0
  180. package/build/server/index.js +5 -5
  181. package/build/server/index.js.map +1 -1
  182. package/build/server/manifest.js +30 -16
  183. package/build/server/manifest.js.map +1 -1
  184. package/package.json +1 -1
  185. package/scripts/setup.cjs +87 -13
  186. package/server.ts +3 -0
  187. package/src/app.html +3 -0
  188. package/src/lib/modules/client/common/cache.ts +10 -2
  189. package/src/lib/modules/client/common/index.ts +1 -1
  190. package/src/lib/modules/client/common/markdown.ts +22 -1
  191. package/src/lib/modules/client/common/time.ts +13 -11
  192. package/src/lib/modules/client/terminal/ChatView.svelte +324 -67
  193. package/src/lib/modules/client/terminal/ConnectionStatus.svelte +1 -0
  194. package/src/lib/modules/client/terminal/xterm-wrapper.ts +4 -1
  195. package/src/lib/modules/server/sessions/jsonl-reader.ts +43 -28
  196. package/src/lib/modules/server/sessions/opencode-db-path.ts +26 -0
  197. package/src/lib/modules/server/sessions/opencode-reader.ts +13 -15
  198. package/src/lib/modules/server/sessions/process-detector.ts +103 -0
  199. package/src/lib/modules/server/terminal/opencode-watcher.ts +3 -14
  200. package/src/lib/modules/server/terminal/pty-manager.ts +20 -8
  201. package/src/lib/modules/server/ws/session-handler.ts +282 -104
  202. package/src/lib/theme.css +30 -0
  203. package/src/routes/+error.svelte +94 -0
  204. package/src/routes/+page.svelte +18 -8
  205. package/src/routes/api/health/+server.ts +14 -2
  206. package/src/routes/api/sessions/+server.ts +12 -4
  207. package/src/routes/api/sessions/connect/+server.ts +125 -0
  208. package/src/routes/api/sessions/detect/+server.ts +27 -0
  209. package/src/routes/api/terminals/+server.ts +12 -9
  210. package/src/routes/config/+page.svelte +22 -1
  211. package/src/routes/project/+page.svelte +159 -8
  212. package/src/routes/session/[id]/+page.svelte +477 -299
  213. package/src/routes/terminals/+page.svelte +14 -3
  214. package/src/routes/terminals/[id]/+page.svelte +25 -0
  215. package/build/client/_app/immutable/assets/0.DC5pAwP3.css.br +0 -0
  216. package/build/client/_app/immutable/assets/0.DC5pAwP3.css.gz +0 -0
  217. package/build/client/_app/immutable/assets/3.BoXp0JoS.css.br +0 -0
  218. package/build/client/_app/immutable/assets/3.BoXp0JoS.css.gz +0 -0
  219. package/build/client/_app/immutable/assets/4.cJuCkJKZ.css +0 -1
  220. package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.br +0 -0
  221. package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.gz +0 -0
  222. package/build/client/_app/immutable/assets/5.DRjApZQW.css +0 -1
  223. package/build/client/_app/immutable/assets/5.DRjApZQW.css.br +0 -0
  224. package/build/client/_app/immutable/assets/5.DRjApZQW.css.gz +0 -0
  225. package/build/client/_app/immutable/assets/7.PyEFVv_s.css.br +0 -0
  226. package/build/client/_app/immutable/assets/7.PyEFVv_s.css.gz +0 -0
  227. package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css +0 -1
  228. package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.br +0 -0
  229. package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.gz +0 -0
  230. package/build/client/_app/immutable/chunks/50RPd5u3.js.br +0 -0
  231. package/build/client/_app/immutable/chunks/50RPd5u3.js.gz +0 -0
  232. package/build/client/_app/immutable/chunks/BDC7XD4o.js +0 -1
  233. package/build/client/_app/immutable/chunks/BDC7XD4o.js.br +0 -0
  234. package/build/client/_app/immutable/chunks/BDC7XD4o.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/BeONA6_G.js +0 -2
  236. package/build/client/_app/immutable/chunks/BeONA6_G.js.br +0 -0
  237. package/build/client/_app/immutable/chunks/BeONA6_G.js.gz +0 -0
  238. package/build/client/_app/immutable/chunks/BygiiMA0.js +0 -1
  239. package/build/client/_app/immutable/chunks/BygiiMA0.js.br +0 -0
  240. package/build/client/_app/immutable/chunks/BygiiMA0.js.gz +0 -0
  241. package/build/client/_app/immutable/chunks/CGLrx-H5.js +0 -1
  242. package/build/client/_app/immutable/chunks/CGLrx-H5.js.br +0 -0
  243. package/build/client/_app/immutable/chunks/CGLrx-H5.js.gz +0 -0
  244. package/build/client/_app/immutable/chunks/CHvUpVYv.js +0 -1
  245. package/build/client/_app/immutable/chunks/CHvUpVYv.js.br +0 -0
  246. package/build/client/_app/immutable/chunks/CHvUpVYv.js.gz +0 -0
  247. package/build/client/_app/immutable/chunks/CbqC9BW7.js +0 -1
  248. package/build/client/_app/immutable/chunks/CbqC9BW7.js.br +0 -2
  249. package/build/client/_app/immutable/chunks/CbqC9BW7.js.gz +0 -0
  250. package/build/client/_app/immutable/chunks/CdL99jkG.js.br +0 -0
  251. package/build/client/_app/immutable/chunks/CdL99jkG.js.gz +0 -0
  252. package/build/client/_app/immutable/chunks/ClK4wZbC.js.br +0 -0
  253. package/build/client/_app/immutable/chunks/ClK4wZbC.js.gz +0 -0
  254. package/build/client/_app/immutable/chunks/CojFyTPp.js.br +0 -0
  255. package/build/client/_app/immutable/chunks/CojFyTPp.js.gz +0 -0
  256. package/build/client/_app/immutable/chunks/DREFAyhX.js +0 -60
  257. package/build/client/_app/immutable/chunks/DREFAyhX.js.br +0 -0
  258. package/build/client/_app/immutable/chunks/DREFAyhX.js.gz +0 -0
  259. package/build/client/_app/immutable/chunks/K_aHH2KN.js +0 -1
  260. package/build/client/_app/immutable/chunks/K_aHH2KN.js.br +0 -0
  261. package/build/client/_app/immutable/chunks/K_aHH2KN.js.gz +0 -0
  262. package/build/client/_app/immutable/chunks/Ona8oofC.js +0 -1
  263. package/build/client/_app/immutable/chunks/Ona8oofC.js.br +0 -0
  264. package/build/client/_app/immutable/chunks/Ona8oofC.js.gz +0 -0
  265. package/build/client/_app/immutable/chunks/tjbnEgXP.js.br +0 -0
  266. package/build/client/_app/immutable/chunks/tjbnEgXP.js.gz +0 -0
  267. package/build/client/_app/immutable/entry/app.anqwe7ZL.js +0 -2
  268. package/build/client/_app/immutable/entry/app.anqwe7ZL.js.br +0 -0
  269. package/build/client/_app/immutable/entry/app.anqwe7ZL.js.gz +0 -0
  270. package/build/client/_app/immutable/entry/start.BV2VRv6h.js +0 -1
  271. package/build/client/_app/immutable/entry/start.BV2VRv6h.js.br +0 -2
  272. package/build/client/_app/immutable/entry/start.BV2VRv6h.js.gz +0 -0
  273. package/build/client/_app/immutable/nodes/0.D0i5MqcI.js +0 -1
  274. package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.br +0 -0
  275. package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.gz +0 -0
  276. package/build/client/_app/immutable/nodes/1.DN5n5c6F.js +0 -1
  277. package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.br +0 -0
  278. package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.gz +0 -0
  279. package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js +0 -1
  280. package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.br +0 -0
  281. package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.gz +0 -0
  282. package/build/client/_app/immutable/nodes/3.CEkigHDv.js +0 -3
  283. package/build/client/_app/immutable/nodes/3.CEkigHDv.js.br +0 -0
  284. package/build/client/_app/immutable/nodes/3.CEkigHDv.js.gz +0 -0
  285. package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js +0 -1
  286. package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.br +0 -0
  287. package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.gz +0 -0
  288. package/build/client/_app/immutable/nodes/5.shitbtHc.js +0 -1
  289. package/build/client/_app/immutable/nodes/5.shitbtHc.js.br +0 -0
  290. package/build/client/_app/immutable/nodes/5.shitbtHc.js.gz +0 -0
  291. package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js +0 -2
  292. package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.br +0 -0
  293. package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.gz +0 -0
  294. package/build/client/_app/immutable/nodes/7.D0CrR6pl.js +0 -2
  295. package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.br +0 -0
  296. package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.gz +0 -0
  297. package/build/server/chunks/0-Cs1dzfRz.js +0 -9
  298. package/build/server/chunks/0-Cs1dzfRz.js.map +0 -1
  299. package/build/server/chunks/1-BCSX7oED.js +0 -9
  300. package/build/server/chunks/1-BCSX7oED.js.map +0 -1
  301. package/build/server/chunks/2-6gkeO8b4.js +0 -9
  302. package/build/server/chunks/2-6gkeO8b4.js.map +0 -1
  303. package/build/server/chunks/3-DH9J9Vsc.js +0 -9
  304. package/build/server/chunks/3-DH9J9Vsc.js.map +0 -1
  305. package/build/server/chunks/4-Rzy5TYjl.js +0 -9
  306. package/build/server/chunks/4-Rzy5TYjl.js.map +0 -1
  307. package/build/server/chunks/5-D0wB7nfE.js +0 -9
  308. package/build/server/chunks/6-DR2ABDPq.js +0 -9
  309. package/build/server/chunks/6-DR2ABDPq.js.map +0 -1
  310. package/build/server/chunks/7-D-oQJsia.js +0 -9
  311. package/build/server/chunks/7-D-oQJsia.js.map +0 -1
  312. package/build/server/chunks/EmptyState-Ci4pSpmY.js.map +0 -1
  313. package/build/server/chunks/_layout.svelte-CO4f8UD7.js.map +0 -1
  314. package/build/server/chunks/_page.svelte-3Cc3NMAP.js.map +0 -1
  315. package/build/server/chunks/_page.svelte-C0p3HsIW.js.map +0 -1
  316. package/build/server/chunks/_page.svelte-C6bns9aQ.js.map +0 -1
  317. package/build/server/chunks/_page.svelte-CFCONiDK.js.map +0 -1
  318. package/build/server/chunks/_page.svelte-DskND_G9.js.map +0 -1
  319. package/build/server/chunks/_page.svelte-rTrWmhOp.js.map +0 -1
  320. package/build/server/chunks/_server.ts-C8slOHB0.js.map +0 -1
  321. package/build/server/chunks/_server.ts-CS5H5klP.js.map +0 -1
  322. package/build/server/chunks/_server.ts-DhTrdlWH.js.map +0 -1
  323. package/build/server/chunks/_server.ts-DpEVfp8W.js.map +0 -1
  324. package/build/server/chunks/_server.ts-uHUi-4cd.js.map +0 -1
  325. package/build/server/chunks/client-BYT9c0ig.js +0 -7
  326. package/build/server/chunks/client-BYT9c0ig.js.map +0 -1
  327. package/build/server/chunks/client2-BjxIYuno.js.map +0 -1
  328. package/build/server/chunks/error.svelte-BG_yE-Wt.js +0 -27
  329. package/build/server/chunks/error.svelte-BG_yE-Wt.js.map +0 -1
  330. package/build/server/chunks/pty-manager-DR0Wt2Ac.js.map +0 -1
@@ -0,0 +1,71 @@
1
+ import { v as validateAuth } from './auth-DeCdZ83n.js';
2
+ import { readdirSync, readFileSync } from 'fs';
3
+ import { homedir } from 'os';
4
+ import { join } from 'path';
5
+ import { t as toErrorMessage } from './error-DDXB3duW.js';
6
+ import { j as json } from './shared-server-sSGG17Df.js';
7
+ import 'crypto';
8
+
9
+ function cwdToProjectPath(cwd) {
10
+ return cwd.replace(/\//g, "-");
11
+ }
12
+ function isProcessAlive(pid) {
13
+ try {
14
+ process.kill(pid, 0);
15
+ return true;
16
+ } catch {
17
+ return false;
18
+ }
19
+ }
20
+ const CLAUDE_SESSIONS_DIR = join(homedir(), ".claude", "sessions");
21
+ function detectRunningAISessions() {
22
+ const results = [];
23
+ try {
24
+ const files = readdirSync(CLAUDE_SESSIONS_DIR).filter((f) => f.endsWith(".json"));
25
+ for (const file of files) {
26
+ try {
27
+ const raw = readFileSync(join(CLAUDE_SESSIONS_DIR, file), "utf-8");
28
+ const data = JSON.parse(raw);
29
+ if (!data.pid || !data.sessionId || !data.cwd) {
30
+ continue;
31
+ }
32
+ if (!isProcessAlive(data.pid)) {
33
+ continue;
34
+ }
35
+ results.push({
36
+ command: "claude",
37
+ cwd: data.cwd,
38
+ kind: data.kind || "interactive",
39
+ pid: data.pid,
40
+ projectPath: cwdToProjectPath(data.cwd),
41
+ sessionId: data.sessionId,
42
+ startedAt: data.startedAt || 0
43
+ });
44
+ } catch {
45
+ }
46
+ }
47
+ } catch {
48
+ }
49
+ results.sort((a, b) => b.startedAt - a.startedAt);
50
+ return results;
51
+ }
52
+ const GET = ({ request }) => {
53
+ const authError = validateAuth(request);
54
+ if (authError) {
55
+ return authError;
56
+ }
57
+ try {
58
+ const processes = detectRunningAISessions();
59
+ return json({
60
+ count: processes.length,
61
+ processes,
62
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
63
+ });
64
+ } catch (error) {
65
+ console.error("[sessions/detect] Failed to detect running sessions:", toErrorMessage(error));
66
+ return json({ error: "Failed to detect running sessions" }, { status: 500 });
67
+ }
68
+ };
69
+
70
+ export { GET };
71
+ //# sourceMappingURL=_server.ts-CtH0dhUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CtH0dhUp.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/detect/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../chunks/auth.js\";\nimport { readdirSync, readFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\nimport { t as toErrorMessage } from \"../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction cwdToProjectPath(cwd) {\n return cwd.replace(/\\//g, \"-\");\n}\nfunction isProcessAlive(pid) {\n try {\n process.kill(pid, 0);\n return true;\n } catch {\n return false;\n }\n}\nconst CLAUDE_SESSIONS_DIR = join(homedir(), \".claude\", \"sessions\");\nfunction detectRunningAISessions() {\n const results = [];\n try {\n const files = readdirSync(CLAUDE_SESSIONS_DIR).filter((f) => f.endsWith(\".json\"));\n for (const file of files) {\n try {\n const raw = readFileSync(join(CLAUDE_SESSIONS_DIR, file), \"utf-8\");\n const data = JSON.parse(raw);\n if (!data.pid || !data.sessionId || !data.cwd) {\n continue;\n }\n if (!isProcessAlive(data.pid)) {\n continue;\n }\n results.push({\n command: \"claude\",\n cwd: data.cwd,\n kind: data.kind || \"interactive\",\n pid: data.pid,\n projectPath: cwdToProjectPath(data.cwd),\n sessionId: data.sessionId,\n startedAt: data.startedAt || 0\n });\n } catch {\n }\n }\n } catch {\n }\n results.sort((a, b) => b.startedAt - a.startedAt);\n return results;\n}\nconst GET = ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n try {\n const processes = detectRunningAISessions();\n return json({\n count: processes.length,\n processes,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"[sessions/detect] Failed to detect running sessions:\", toErrorMessage(error));\n return json({ error: \"Failed to detect running sessions\" }, { status: 500 });\n }\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;AAMA,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAChC;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,IAAI;AACN,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACxB,IAAI,OAAO,IAAI;AACf,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;AAClE,SAAS,uBAAuB,GAAG;AACnC,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrF,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,MAAM,IAAI;AACV,QAAQ,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC;AAC1E,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACvD,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACvC,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,UAAU,OAAO,EAAE,QAAQ;AAC3B,UAAU,GAAG,EAAE,IAAI,CAAC,GAAG;AACvB,UAAU,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAC1C,UAAU,GAAG,EAAE,IAAI,CAAC,GAAG;AACvB,UAAU,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,UAAU,SAAS,EAAE,IAAI,CAAC,SAAS;AACnC,UAAU,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI;AACvC,SAAS,CAAC;AACV,MAAM,CAAC,CAAC,MAAM;AACd,MAAM;AACN,IAAI;AACJ,EAAE,CAAC,CAAC,MAAM;AACV,EAAE;AACF,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;AACnD,EAAE,OAAO,OAAO;AAChB;AACK,MAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK;AAC7B,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,uBAAuB,EAAE;AAC/C,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM;AAC7B,MAAM,SAAS;AACf,MAAM,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACzD,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAChG,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChF,EAAE;AACF;;;;"}
@@ -1,7 +1,18 @@
1
1
  import { b as private_env, j as json } from './shared-server-sSGG17Df.js';
2
2
  import { v as validateAuth } from './auth-DeCdZ83n.js';
3
+ import { readFileSync } from 'fs';
4
+ import { join } from 'path';
3
5
  import 'crypto';
4
6
 
7
+ const PKG_VERSION = (() => {
8
+ const root = process.env.SHOOTER_PKG_ROOT || process.cwd();
9
+ try {
10
+ const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf-8"));
11
+ return pkg.version || "unknown";
12
+ } catch {
13
+ return "unknown";
14
+ }
15
+ })();
5
16
  const GET = ({ request, url }) => {
6
17
  const wantsDetails = url.searchParams.get("details") === "true";
7
18
  if (wantsDetails) {
@@ -49,14 +60,14 @@ const GET = ({ request, url }) => {
49
60
  environment: private_env.NODE_ENV || "development",
50
61
  status: "healthy",
51
62
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
52
- version: "1.1.0",
63
+ version: PKG_VERSION,
53
64
  warnings
54
65
  };
55
66
  if (!wantsDetails) {
56
- return json({ status: health.status, timestamp: health.timestamp, warnings: health.warnings });
67
+ return json({ status: health.status, timestamp: health.timestamp, version: health.version, warnings: health.warnings });
57
68
  }
58
69
  return json(health);
59
70
  };
60
71
 
61
72
  export { GET };
62
- //# sourceMappingURL=_server.ts-DhTrdlWH.js.map
73
+ //# sourceMappingURL=_server.ts-DB_Kg97c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DB_Kg97c.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js"],"sourcesContent":["import { b as private_env } from \"../../../../chunks/shared-server.js\";\nimport { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nconst PKG_VERSION = (() => {\n const root = process.env.SHOOTER_PKG_ROOT || process.cwd();\n try {\n const pkg = JSON.parse(readFileSync(join(root, \"package.json\"), \"utf-8\"));\n return pkg.version || \"unknown\";\n } catch {\n return \"unknown\";\n }\n})();\nconst GET = ({ request, url }) => {\n const wantsDetails = url.searchParams.get(\"details\") === \"true\";\n if (wantsDetails) {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n }\n const hasProjectId = !!private_env.FCM_PROJECT_ID?.trim();\n const hasClientEmail = !!private_env.FCM_CLIENT_EMAIL?.trim();\n const hasPrivateKey = !!private_env.FCM_PRIVATE_KEY?.trim();\n const checks = {\n hasApiKey: !!private_env.API_KEY?.trim(),\n hasAPNsConfig: !!(private_env.APNS_KEY_ID?.trim() && private_env.APNS_TEAM_ID?.trim() && private_env.APNS_KEY?.trim()),\n hasBundleId: !!private_env.APNS_BUNDLE_ID?.trim(),\n hasDeviceToken: !!private_env.DEVICE_TOKEN?.trim(),\n hasFCMConfig: hasProjectId && hasClientEmail && hasPrivateKey\n };\n const fcm = {\n configured: hasProjectId && hasClientEmail && hasPrivateKey,\n hasClientEmail,\n hasPrivateKey,\n hasProjectId\n };\n const configuration = {\n apnsKeyId: private_env.APNS_KEY_ID ? `${private_env.APNS_KEY_ID.substring(0, 4)}...` : \"\",\n bundleId: private_env.APNS_BUNDLE_ID || \"\",\n deviceTokenLength: private_env.DEVICE_TOKEN ? private_env.DEVICE_TOKEN.length : 0,\n fcm,\n production: private_env.APNS_PRODUCTION === \"true\"\n };\n const warnings = [];\n if (!checks.hasAPNsConfig || !checks.hasBundleId) {\n warnings.push(\"APNs not configured — iOS push notifications disabled\");\n }\n if (!checks.hasDeviceToken) {\n warnings.push(\"No device token set — push notifications have no target\");\n }\n if (!checks.hasFCMConfig) {\n warnings.push(\"FCM not configured — Android push notifications disabled\");\n }\n const health = {\n checks,\n configuration,\n environment: private_env.NODE_ENV || \"development\",\n status: \"healthy\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n version: PKG_VERSION,\n warnings\n };\n if (!wantsDetails) {\n return json({ status: health.status, timestamp: health.timestamp, version: health.version, warnings: health.warnings });\n }\n return json(health);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { v as validateAuth } from './auth-DeCdZ83n.js';
2
+ import { p as ptyManager } from './pty-manager-BQVB7IVj.js';
3
+ import { t as toErrorMessage } from './error-DDXB3duW.js';
4
+ import { j as json } from './shared-server-sSGG17Df.js';
5
+ import { realpathSync, statSync } from 'fs';
6
+ import { relative, isAbsolute } from 'path';
7
+ import 'crypto';
8
+ import 'child_process';
9
+ import 'url';
10
+ import 'net';
11
+ import 'better-sqlite3';
12
+ import './opencode-db-path-DcfhJtJy.js';
13
+
14
+ const POST = async ({ request }) => {
15
+ const authError = validateAuth(request);
16
+ if (authError) {
17
+ return authError;
18
+ }
19
+ let body;
20
+ try {
21
+ body = await request.json();
22
+ } catch {
23
+ return json({ error: "Invalid JSON in request body" }, { status: 400 });
24
+ }
25
+ const { command, cwd, noCreate, sessionId } = body;
26
+ if (!sessionId || typeof sessionId !== "string") {
27
+ return json({ error: "sessionId is required (string)" }, { status: 400 });
28
+ }
29
+ if (!cwd || typeof cwd !== "string") {
30
+ return json({ error: "cwd is required (string)" }, { status: 400 });
31
+ }
32
+ if (!command || command !== "claude" && command !== "opencode") {
33
+ return json({ error: 'command must be "claude" or "opencode"' }, { status: 400 });
34
+ }
35
+ let realCwd;
36
+ try {
37
+ realCwd = realpathSync(cwd);
38
+ if (!statSync(realCwd).isDirectory()) {
39
+ return json({ error: "Invalid working directory" }, { status: 400 });
40
+ }
41
+ } catch {
42
+ return json({ error: "Invalid working directory" }, { status: 400 });
43
+ }
44
+ const home = process.env.HOME || "";
45
+ if (home) {
46
+ const rel = relative(home, realCwd);
47
+ if (rel.startsWith("..") || isAbsolute(rel)) {
48
+ return json({ error: "Working directory must be under home directory" }, { status: 400 });
49
+ }
50
+ }
51
+ const existing = ptyManager.list().find((t) => t.status === "running" && (t.sessionFile?.endsWith(`/${sessionId}.jsonl`) || t.openCodeSessionId === sessionId));
52
+ if (existing) {
53
+ console.log(
54
+ `[sessions/connect] Reusing terminal ${existing.id} for ${command} session ${sessionId}`
55
+ );
56
+ return json({
57
+ command: existing.command,
58
+ createdAt: existing.createdAt.toISOString(),
59
+ cwd: existing.cwd,
60
+ id: existing.id,
61
+ pid: existing.pid,
62
+ reused: true,
63
+ sessionId,
64
+ sessionWs: `/ws/session/${existing.id}`,
65
+ terminalId: existing.id,
66
+ ws: `/ws/terminal/${existing.id}`
67
+ });
68
+ }
69
+ if (noCreate) {
70
+ return json({ error: "No existing terminal for this session" }, { status: 404 });
71
+ }
72
+ const args = command === "claude" ? ["--resume", sessionId] : ["--session", sessionId];
73
+ try {
74
+ const terminal = await ptyManager.create(command, args, realCwd, 120, 40);
75
+ console.log(
76
+ `[sessions/connect] Created terminal ${terminal.id} for ${command} session ${sessionId} (pid=${terminal.pid})`
77
+ );
78
+ return json(
79
+ {
80
+ command: terminal.command,
81
+ createdAt: terminal.createdAt instanceof Date ? terminal.createdAt.toISOString() : terminal.createdAt,
82
+ cwd: terminal.cwd,
83
+ id: terminal.id,
84
+ pid: terminal.pid,
85
+ sessionId,
86
+ sessionWs: `/ws/session/${terminal.id}`,
87
+ terminalId: terminal.id,
88
+ ws: `/ws/terminal/${terminal.id}`
89
+ },
90
+ { status: 201 }
91
+ );
92
+ } catch (error) {
93
+ console.error("[sessions/connect] Failed to create terminal:", toErrorMessage(error));
94
+ return json({ error: "Failed to create terminal for session" }, { status: 500 });
95
+ }
96
+ };
97
+
98
+ export { POST };
99
+ //# sourceMappingURL=_server.ts-DYpJImqd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-DYpJImqd.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/connect/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../chunks/auth.js\";\nimport { p as ptyManager } from \"../../../../../chunks/pty-manager.js\";\nimport { t as toErrorMessage } from \"../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { realpathSync, statSync } from \"fs\";\nimport { relative, isAbsolute } from \"path\";\nconst POST = async ({ request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n const { command, cwd, noCreate, sessionId } = body;\n if (!sessionId || typeof sessionId !== \"string\") {\n return json({ error: \"sessionId is required (string)\" }, { status: 400 });\n }\n if (!cwd || typeof cwd !== \"string\") {\n return json({ error: \"cwd is required (string)\" }, { status: 400 });\n }\n if (!command || command !== \"claude\" && command !== \"opencode\") {\n return json({ error: 'command must be \"claude\" or \"opencode\"' }, { status: 400 });\n }\n let realCwd;\n try {\n realCwd = realpathSync(cwd);\n if (!statSync(realCwd).isDirectory()) {\n return json({ error: \"Invalid working directory\" }, { status: 400 });\n }\n } catch {\n return json({ error: \"Invalid working directory\" }, { status: 400 });\n }\n const home = process.env.HOME || \"\";\n if (home) {\n const rel = relative(home, realCwd);\n if (rel.startsWith(\"..\") || isAbsolute(rel)) {\n return json({ error: \"Working directory must be under home directory\" }, { status: 400 });\n }\n }\n const existing = ptyManager.list().find((t) => t.status === \"running\" && (t.sessionFile?.endsWith(`/${sessionId}.jsonl`) || t.openCodeSessionId === sessionId));\n if (existing) {\n console.log(\n `[sessions/connect] Reusing terminal ${existing.id} for ${command} session ${sessionId}`\n );\n return json({\n command: existing.command,\n createdAt: existing.createdAt.toISOString(),\n cwd: existing.cwd,\n id: existing.id,\n pid: existing.pid,\n reused: true,\n sessionId,\n sessionWs: `/ws/session/${existing.id}`,\n terminalId: existing.id,\n ws: `/ws/terminal/${existing.id}`\n });\n }\n if (noCreate) {\n return json({ error: \"No existing terminal for this session\" }, { status: 404 });\n }\n const args = command === \"claude\" ? [\"--resume\", sessionId] : [\"--session\", sessionId];\n try {\n const terminal = await ptyManager.create(command, args, realCwd, 120, 40);\n console.log(\n `[sessions/connect] Created terminal ${terminal.id} for ${command} session ${sessionId} (pid=${terminal.pid})`\n );\n return json(\n {\n command: terminal.command,\n createdAt: terminal.createdAt instanceof Date ? terminal.createdAt.toISOString() : terminal.createdAt,\n cwd: terminal.cwd,\n id: terminal.id,\n pid: terminal.pid,\n sessionId,\n sessionWs: `/ws/session/${terminal.id}`,\n terminalId: terminal.id,\n ws: `/ws/terminal/${terminal.id}`\n },\n { status: 201 }\n );\n } catch (error) {\n console.error(\"[sessions/connect] Failed to create terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to create terminal for session\" }, { status: 500 });\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import * as crypto from 'crypto';
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
5
  import Database from 'better-sqlite3';
6
+ import { r as resolveOpenCodeDbPath } from './opencode-db-path-DcfhJtJy.js';
6
7
  import { j as json } from './shared-server-sSGG17Df.js';
7
8
 
8
9
  const SKIP_EVENT_TYPES = /* @__PURE__ */ new Set([
@@ -163,6 +164,13 @@ function getSessionConversation(sessionId, offset = 0, limit = 100, projectId) {
163
164
  });
164
165
  }
165
166
  }
167
+ if (offset === 0 && messages.length > limit) {
168
+ let startIdx = messages.length - limit;
169
+ while (startIdx > 0 && startIdx < messages.length && messages[startIdx].role !== "user") {
170
+ startIdx--;
171
+ }
172
+ return messages.slice(startIdx);
173
+ }
166
174
  return messages.slice(offset, offset + limit);
167
175
  } catch (error) {
168
176
  console.error("[sessions] Failed to parse session JSONL:", error);
@@ -277,19 +285,20 @@ function listSessionsForProject(projectDir) {
277
285
  let messageCount = 0;
278
286
  try {
279
287
  const content = fs.readFileSync(filePath, "utf-8");
280
- const lines = content.split("\n");
281
- for (const line of lines) {
282
- if (!line.trim()) {
283
- continue;
288
+ let countPos = 0;
289
+ while (countPos < content.length) {
290
+ const nl = content.indexOf("\n", countPos);
291
+ const lineEnd = nl === -1 ? content.length : nl;
292
+ const line = content.substring(countPos, lineEnd);
293
+ if (line.includes('"type":"user"') || line.includes('"type":"assistant"')) {
294
+ messageCount++;
284
295
  }
285
- try {
286
- const entry = JSON.parse(line);
287
- if (entry.type === "user" || entry.type === "assistant") {
288
- messageCount++;
289
- }
290
- } catch {
296
+ if (nl === -1) {
297
+ break;
291
298
  }
299
+ countPos = nl + 1;
292
300
  }
301
+ const lines = content.split("\n");
293
302
  for (const line of lines) {
294
303
  if (!line.trim()) {
295
304
  continue;
@@ -355,22 +364,29 @@ function listSessionsForProject(projectDir) {
355
364
  function readCwdFromProjectDir(projectDir, sessions) {
356
365
  for (const session of sessions) {
357
366
  try {
358
- const jsonlPath = path.join(projectDir, `${session.id}.jsonl`);
359
- if (!fs.existsSync(jsonlPath)) {
367
+ const filePath = path.join(projectDir, `${session.id}.jsonl`);
368
+ if (!fs.existsSync(filePath)) {
360
369
  continue;
361
370
  }
362
- const content = fs.readFileSync(jsonlPath, "utf-8");
363
- for (const line of content.split("\n")) {
364
- if (!line.trim()) {
365
- continue;
366
- }
367
- try {
368
- const entry = JSON.parse(line);
369
- if (typeof entry.cwd === "string" && entry.cwd) {
370
- return entry.cwd;
371
- }
372
- } catch {
371
+ const fd = fs.openSync(filePath, "r");
372
+ let firstChunk;
373
+ try {
374
+ const buf = Buffer.alloc(4096);
375
+ const bytesRead = fs.readSync(fd, buf, 0, 4096, 0);
376
+ firstChunk = buf.toString("utf-8", 0, bytesRead);
377
+ } finally {
378
+ fs.closeSync(fd);
379
+ }
380
+ const firstLine = firstChunk.split("\n")[0];
381
+ if (!firstLine.trim()) {
382
+ continue;
383
+ }
384
+ try {
385
+ const entry = JSON.parse(firstLine);
386
+ if (typeof entry.cwd === "string" && entry.cwd) {
387
+ return entry.cwd;
373
388
  }
389
+ } catch {
374
390
  }
375
391
  } catch {
376
392
  }
@@ -380,14 +396,8 @@ function readCwdFromProjectDir(projectDir, sessions) {
380
396
  function shortHash(input) {
381
397
  return crypto.createHash("sha256").update(input).digest("hex").slice(0, 8);
382
398
  }
383
- const OPENCODE_DB_PATH = path.join(
384
- process.env.HOME || "",
385
- ".local",
386
- "share",
387
- "opencode",
388
- "opencode.db"
389
- );
390
- function getOpenCodeConversation(sessionId, offset = 0, limit = 100) {
399
+ const OPENCODE_DB_PATH = resolveOpenCodeDbPath();
400
+ function getOpenCodeConversation(sessionId, offset = 0, limit = 200) {
391
401
  const db = getDb();
392
402
  if (!db) {
393
403
  return [];
@@ -395,11 +405,13 @@ function getOpenCodeConversation(sessionId, offset = 0, limit = 100) {
395
405
  try {
396
406
  const messages = db.prepare(
397
407
  `
398
- SELECT id, session_id, time_created, data
399
- FROM message
400
- WHERE session_id = ?
401
- ORDER BY time_created ASC
402
- LIMIT ? OFFSET ?
408
+ SELECT id, session_id, time_created, data FROM (
409
+ SELECT id, session_id, time_created, data
410
+ FROM message
411
+ WHERE session_id = ?
412
+ ORDER BY time_created DESC
413
+ LIMIT ? OFFSET ?
414
+ ) ORDER BY time_created ASC
403
415
  `
404
416
  ).all(sessionId, limit, offset);
405
417
  const messageIds = messages.map((m) => m.id);
@@ -564,7 +576,7 @@ function getDb() {
564
576
  }
565
577
  let cachedProjects = null;
566
578
  let cacheTimestamp = 0;
567
- const CACHE_TTL_MS = 3e4;
579
+ const CACHE_TTL_MS = 5e3;
568
580
  function getMergedProjects() {
569
581
  const now = Date.now();
570
582
  if (cachedProjects && now - cacheTimestamp < CACHE_TTL_MS) {
@@ -602,11 +614,17 @@ const GET = ({ request, url }) => {
602
614
  if (authError) {
603
615
  return authError;
604
616
  }
617
+ if (url.searchParams.get("refresh") === "true") {
618
+ cachedProjects = null;
619
+ cacheTimestamp = 0;
620
+ }
605
621
  const sessionId = url.searchParams.get("id");
606
622
  if (sessionId) {
607
623
  const projectId = url.searchParams.get("project") || "";
608
- const offset2 = parseInt(url.searchParams.get("offset") || "0");
609
- const limit2 = parseInt(url.searchParams.get("limit") || "100");
624
+ const rawOffset = parseInt(url.searchParams.get("offset") || "0");
625
+ const rawLimit = parseInt(url.searchParams.get("limit") || "200");
626
+ const offset2 = Number.isFinite(rawOffset) && rawOffset >= 0 ? rawOffset : 0;
627
+ const limit2 = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, 500) : 200;
610
628
  const allProjects2 = getMergedProjects();
611
629
  const matchedProject = projectId ? allProjects2.find((p) => p.id === projectId) : void 0;
612
630
  const claudeProjectDir = matchedProject ? matchedProject.fullPath.replace(/\//g, "-") : void 0;
@@ -648,4 +666,4 @@ const GET = ({ request, url }) => {
648
666
  };
649
667
 
650
668
  export { GET };
651
- //# sourceMappingURL=_server.ts-DpEVfp8W.js.map
669
+ //# sourceMappingURL=_server.ts-Deok2y88.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-Deok2y88.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport Database from \"better-sqlite3\";\nimport { r as resolveOpenCodeDbPath } from \"../../../../chunks/opencode-db-path.js\";\nimport { json } from \"@sveltejs/kit\";\nconst SKIP_EVENT_TYPES = /* @__PURE__ */ new Set([\n \"config\",\n \"heartbeat\",\n \"metadata\",\n \"result\",\n \"summary\",\n \"system\"\n]);\nfunction parseAssistantBlock(block) {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n switch (block.type) {\n case \"text\":\n return { content: block.text || \"\", type: \"text\" };\n case \"thinking\":\n return { content: block.thinking || \"\", type: \"thinking\" };\n case \"tool_use\":\n return {\n id: block.id || \"\",\n input: block.input || {},\n toolName: block.name || \"Unknown\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction parseJsonlLine(line, assistantTurns, messageIndex) {\n const messages = [];\n const assistantCompleted = [];\n const entry = JSON.parse(line);\n const entryType = entry.type;\n if (SKIP_EVENT_TYPES.has(entryType)) {\n return { assistantCompleted, messages };\n }\n if (entryType === \"user\") {\n const msg = entry.message;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const parts = [];\n const content = Array.isArray(msg.content) ? msg.content : [msg.content];\n for (const block of content) {\n if (typeof block === \"string\") {\n parts.push({ content: block, type: \"text\" });\n } else if (block.type === \"text\") {\n parts.push({ content: block.text || \"\", type: \"text\" });\n } else if (block.type === \"tool_result\") {\n let output = \"\";\n if (typeof block.content === \"string\") {\n output = block.content;\n } else if (Array.isArray(block.content)) {\n output = block.content.filter((c) => c.type === \"text\").map((c) => c.text).join(\"\\n\");\n }\n if (entry.toolUseResult?.content) {\n const trc = entry.toolUseResult.content;\n if (typeof trc === \"string\") {\n output = trc;\n } else if (Array.isArray(trc)) {\n output = trc.filter((c) => c.type === \"text\").map((c) => c.text).join(\"\\n\");\n }\n }\n parts.push({\n isError: block.is_error || false,\n output: output.slice(0, 2e3),\n toolUseId: block.tool_use_id || \"\",\n type: \"tool_result\"\n });\n }\n }\n if (parts.length > 0 && parts.some((p) => p.type === \"text\")) {\n messages.push({\n id: entry.uuid || `user-${messageIndex}`,\n parts: parts.filter((p) => p.type === \"text\"),\n role: \"user\",\n timestamp: entry.timestamp || \"\"\n });\n }\n const toolResults = parts.filter((p) => p.type === \"tool_result\");\n if (toolResults.length > 0) {\n messages.push({\n id: `tool-result-${entry.uuid || messageIndex}`,\n parts: toolResults,\n role: \"system\",\n timestamp: entry.timestamp || \"\"\n });\n }\n } else if (entryType === \"assistant\") {\n const msg = entry.message;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const content = Array.isArray(msg.content) ? msg.content : [msg.content];\n const msgId = msg.id || entry.uuid;\n for (const block of content) {\n const part = parseAssistantBlock(block);\n if (!part) {\n continue;\n }\n if (!assistantTurns.has(msgId)) {\n assistantTurns.set(msgId, { parts: [], timestamp: entry.timestamp || \"\" });\n }\n assistantTurns.get(msgId).parts.push(part);\n }\n if (msg.stop_reason) {\n const turn = assistantTurns.get(msgId);\n if (turn && turn.parts.length > 0) {\n assistantCompleted.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n assistantTurns.delete(msgId);\n }\n }\n }\n return { assistantCompleted, messages };\n}\nfunction parseJsonlText(text, assistantTurns, startIndex) {\n const lines = text.split(\"\\n\").filter((line) => line.trim());\n const allMessages = [];\n let idx = startIndex;\n for (const line of lines) {\n try {\n const { assistantCompleted, messages } = parseJsonlLine(line, assistantTurns, idx);\n allMessages.push(...messages, ...assistantCompleted);\n idx++;\n } catch {\n }\n }\n return allMessages;\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CLAUDE_PROJECTS_DIR = path.join(process.env.HOME || \"\", \".claude\", \"projects\");\nfunction getSessionConversation(sessionId, offset = 0, limit = 100, projectId) {\n const projectDir = projectId ? path.join(CLAUDE_PROJECTS_DIR, projectId) : getProjectDir();\n const jsonlPath = path.join(projectDir, `${sessionId}.jsonl`);\n if (!fs.existsSync(jsonlPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(jsonlPath, \"utf-8\");\n const assistantTurns = /* @__PURE__ */ new Map();\n const messages = parseJsonlText(raw, assistantTurns, 0);\n for (const [msgId, turn] of assistantTurns) {\n if (turn.parts.length > 0) {\n messages.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && startIdx < messages.length && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[sessions] Failed to parse session JSONL:\", error);\n return [];\n }\n}\nfunction listProjectsWithSessions() {\n if (!fs.existsSync(CLAUDE_PROJECTS_DIR)) {\n return [];\n }\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CLAUDE_PROJECTS_DIR).filter((d) => {\n const fullPath = path.join(CLAUDE_PROJECTS_DIR, d);\n try {\n return fs.statSync(fullPath).isDirectory();\n } catch {\n return false;\n }\n });\n } catch {\n return [];\n }\n const projects = [];\n for (const dir of projectDirs) {\n const projectDir = path.join(CLAUDE_PROJECTS_DIR, dir);\n const sessions = listSessionsForProject(projectDir);\n if (sessions.length === 0) {\n continue;\n }\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const realPath = sessions.find((s) => s.projectPath && !s.projectPath.includes(\".claude/projects\"))?.projectPath || readCwdFromProjectDir(projectDir, sessions) || (dir.startsWith(\"-\") ? dir.replace(/-/g, \"/\") : `/${dir.replace(/-/g, \"/\")}`);\n const pathSegments = realPath.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n projects.push({\n fullPath: realPath,\n id: shortHash$1(realPath),\n lastModified: sessions[0]?.modified || \"\",\n name: projectName,\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction cleanTitle(prompt) {\n let cleaned = prompt.replace(/<command-message>.*?<\\/command-message>/gs, \"\").replace(/<command-name>.*?<\\/command-name>/gs, \"\").replace(/<command-args>.*?<\\/command-args>/gs, \"\").replace(/<local-command-caveat>.*?<\\/local-command-caveat>/gs, \"\").replace(/<local-command-stdout>.*?<\\/local-command-stdout>/gs, \"\").replace(/<system-reminder>.*?<\\/system-reminder>/gs, \"\").replace(/<task-notification>.*?<\\/task-notification>/gs, \"\");\n let prev = \"\";\n while (prev !== cleaned) {\n prev = cleaned;\n cleaned = cleaned.replace(/<[^>]*>/g, \"\").replace(/</g, \"\");\n }\n cleaned = cleaned.trim();\n if (!cleaned) {\n return \"Untitled Session\";\n }\n const firstLine = cleaned.split(\"\\n\")[0].trim();\n if (!firstLine) {\n return \"Untitled Session\";\n }\n if (firstLine.length > 80) {\n return `${firstLine.slice(0, 77)}...`;\n }\n return firstLine;\n}\nfunction getProjectDir() {\n const projectPath = process.cwd();\n const encoded = projectPath.replace(/\\//g, \"-\");\n return path.join(CLAUDE_PROJECTS_DIR, encoded);\n}\nfunction listSessionsForProject(projectDir) {\n const indexPath = path.join(projectDir, \"sessions-index.json\");\n if (!fs.existsSync(indexPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(indexPath, \"utf-8\");\n const index = JSON.parse(raw);\n const indexedIds = /* @__PURE__ */ new Set();\n const sessions = index.entries.filter((e) => !e.isSidechain).filter((e) => {\n const jsonlFile = path.join(projectDir, `${e.sessionId}.jsonl`);\n return fs.existsSync(jsonlFile);\n }).map((entry) => {\n indexedIds.add(entry.sessionId);\n return {\n created: entry.created || \"\",\n gitBranch: entry.gitBranch || \"\",\n id: entry.sessionId,\n messageCount: entry.messageCount || 0,\n modified: entry.modified || \"\",\n projectPath: entry.projectPath || \"\",\n source: \"claude-code\",\n summary: entry.summary || \"\",\n title: cleanTitle(entry.firstPrompt || entry.summary || \"Untitled Session\")\n };\n });\n try {\n const files = fs.readdirSync(projectDir);\n for (const file of files) {\n if (!file.endsWith(\".jsonl\")) {\n continue;\n }\n const sessionId = file.replace(\".jsonl\", \"\");\n if (indexedIds.has(sessionId)) {\n continue;\n }\n const filePath = path.join(projectDir, file);\n const stat = fs.statSync(filePath);\n let firstPrompt = \"Active Session\";\n let messageCount = 0;\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n let countPos = 0;\n while (countPos < content.length) {\n const nl = content.indexOf(\"\\n\", countPos);\n const lineEnd = nl === -1 ? content.length : nl;\n const line = content.substring(countPos, lineEnd);\n if (line.includes('\"type\":\"user\"') || line.includes('\"type\":\"assistant\"')) {\n messageCount++;\n }\n if (nl === -1) {\n break;\n }\n countPos = nl + 1;\n }\n const lines = content.split(\"\\n\");\n for (const line of lines) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (entry.type !== \"user\") {\n continue;\n }\n const msg = entry.message;\n if (!msg?.content) {\n continue;\n }\n let text = \"\";\n if (typeof msg.content === \"string\") {\n text = msg.content.trim();\n } else if (Array.isArray(msg.content)) {\n for (const b of msg.content) {\n if (typeof b === \"string\" && b.trim()) {\n text = b.trim();\n break;\n }\n if (typeof b === \"object\" && b !== null && b.type === \"text\" && b.text?.trim()) {\n text = b.text.trim();\n break;\n }\n }\n }\n if (!text) {\n continue;\n }\n if (text.startsWith(\"<local-command\") || text.startsWith(\"<command-name>\") || text.startsWith(\"<command-message>\") || text.startsWith(\"<command-args>\") || text.startsWith(\"<local-command-stdout>\") || text.startsWith(\"<local-command-caveat>\") || text.startsWith(\"<system-reminder>\") || text.startsWith(\"<task-notification>\")) {\n continue;\n }\n firstPrompt = text;\n break;\n } catch {\n continue;\n }\n }\n } catch {\n }\n sessions.push({\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount,\n modified: stat.mtime.toISOString(),\n projectPath: \"\",\n source: \"claude-code\",\n summary: \"\",\n title: cleanTitle(firstPrompt)\n });\n }\n } catch {\n }\n return sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n } catch (error) {\n console.error(\"[sessions] Failed to read sessions index:\", error);\n return [];\n }\n}\nfunction readCwdFromProjectDir(projectDir, sessions) {\n for (const session of sessions) {\n try {\n const filePath = path.join(projectDir, `${session.id}.jsonl`);\n if (!fs.existsSync(filePath)) {\n continue;\n }\n const fd = fs.openSync(filePath, \"r\");\n let firstChunk;\n try {\n const buf = Buffer.alloc(4096);\n const bytesRead = fs.readSync(fd, buf, 0, 4096, 0);\n firstChunk = buf.toString(\"utf-8\", 0, bytesRead);\n } finally {\n fs.closeSync(fd);\n }\n const firstLine = firstChunk.split(\"\\n\")[0];\n if (!firstLine.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(firstLine);\n if (typeof entry.cwd === \"string\" && entry.cwd) {\n return entry.cwd;\n }\n } catch {\n }\n } catch {\n }\n }\n return \"\";\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst OPENCODE_DB_PATH = resolveOpenCodeDbPath();\nfunction getOpenCodeConversation(sessionId, offset = 0, limit = 200) {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const messages = db.prepare(\n `\n SELECT id, session_id, time_created, data FROM (\n SELECT id, session_id, time_created, data\n FROM message\n WHERE session_id = ?\n ORDER BY time_created DESC\n LIMIT ? OFFSET ?\n ) ORDER BY time_created ASC\n `\n ).all(sessionId, limit, offset);\n const messageIds = messages.map((m) => m.id);\n if (messageIds.length === 0) {\n return [];\n }\n const placeholders = messageIds.map(() => \"?\").join(\",\");\n const parts = db.prepare(\n `\n SELECT id, message_id, time_created, data\n FROM part\n WHERE message_id IN (${placeholders})\n ORDER BY time_created ASC\n `\n ).all(...messageIds);\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 const result = [];\n for (const msg of messages) {\n let msgData = {};\n try {\n msgData = JSON.parse(msg.data);\n } catch {\n }\n const role = msgData.role === \"user\" ? \"user\" : \"assistant\";\n const msgParts = partsByMessage.get(msg.id) || [];\n const convertedParts = [];\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 = convertOpenCodePart(partData);\n if (converted) {\n convertedParts.push(converted);\n }\n }\n if (convertedParts.length > 0) {\n result.push({\n id: msg.id,\n parts: convertedParts,\n role,\n timestamp: new Date(msg.time_created).toISOString()\n });\n }\n }\n return result;\n } catch (error) {\n console.error(\"[opencode] Failed to read conversation:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction listOpenCodeProjects() {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const sessions = db.prepare(\n `\n SELECT id, directory, title, slug, time_created, time_updated, parent_id\n FROM session\n WHERE time_archived IS NULL OR time_archived = 0\n ORDER BY time_updated DESC\n `\n ).all();\n const msgCounts = db.prepare(`SELECT session_id, COUNT(*) as count FROM message GROUP BY session_id`).all();\n const msgCountMap = new Map(msgCounts.map((r) => [r.session_id, r.count]));\n const projectMap = /* @__PURE__ */ new Map();\n for (const row of sessions) {\n const dir = row.directory || \"unknown\";\n if (!projectMap.has(dir)) {\n projectMap.set(dir, []);\n }\n const sessionInfo = {\n created: new Date(row.time_created).toISOString(),\n gitBranch: \"\",\n id: row.id,\n messageCount: msgCountMap.get(row.id) || 0,\n modified: new Date(row.time_updated).toISOString(),\n projectPath: dir,\n source: \"opencode\",\n summary: \"\",\n title: row.title || row.slug || \"Untitled Session\"\n };\n const bucket = projectMap.get(dir);\n if (bucket) {\n bucket.push(sessionInfo);\n }\n }\n const projects = [];\n for (const [dir, dirSessions] of projectMap) {\n const pathSegments = dir.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n dirSessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n projects.push({\n fullPath: dir,\n id: shortHash(dir),\n lastModified: dirSessions[0]?.modified || \"\",\n name: `${projectName} (OpenCode)`,\n sessionCount: dirSessions.length,\n sessions: dirSessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n } catch (error) {\n console.error(\"[opencode] Failed to read sessions:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction convertOpenCodePart(data) {\n const type = data.type;\n switch (type) {\n case \"reasoning\":\n return {\n content: data.text || \"\",\n type: \"thinking\"\n };\n case \"text\":\n return {\n content: data.text || \"\",\n type: \"text\"\n };\n case \"tool\": {\n const state = data.state;\n return {\n id: data.callID || data.id || \"\",\n input: state?.input || {},\n toolName: data.tool || \"Unknown\",\n type: \"tool_use\"\n };\n }\n default:\n return null;\n }\n}\nfunction getDb() {\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}\nlet cachedProjects = null;\nlet cacheTimestamp = 0;\nconst CACHE_TTL_MS = 5e3;\nfunction getMergedProjects() {\n const now = Date.now();\n if (cachedProjects && now - cacheTimestamp < CACHE_TTL_MS) {\n return cachedProjects;\n }\n const claudeProjects = listProjectsWithSessions();\n const openCodeProjects = listOpenCodeProjects();\n const projectsByPath = /* @__PURE__ */ new Map();\n for (const p of claudeProjects) {\n projectsByPath.set(p.fullPath, { ...p });\n }\n for (const op of openCodeProjects) {\n const existing = projectsByPath.get(op.fullPath);\n if (existing) {\n existing.sessions.push(...op.sessions);\n existing.sessions.sort(\n (a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime()\n );\n existing.sessionCount = existing.sessions.length;\n existing.lastModified = existing.sessions[0]?.modified || existing.lastModified;\n existing.name = existing.name.replace(\" (OpenCode)\", \"\");\n } else {\n op.name = op.name.replace(\" (OpenCode)\", \"\");\n projectsByPath.set(op.fullPath, { ...op });\n }\n }\n cachedProjects = [...projectsByPath.values()].sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n cacheTimestamp = now;\n return cachedProjects;\n}\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n if (url.searchParams.get(\"refresh\") === \"true\") {\n cachedProjects = null;\n cacheTimestamp = 0;\n }\n const sessionId = url.searchParams.get(\"id\");\n if (sessionId) {\n const projectId = url.searchParams.get(\"project\") || \"\";\n const rawOffset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const rawLimit = parseInt(url.searchParams.get(\"limit\") || \"200\");\n const offset2 = Number.isFinite(rawOffset) && rawOffset >= 0 ? rawOffset : 0;\n const limit2 = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, 500) : 200;\n const allProjects2 = getMergedProjects();\n const matchedProject = projectId ? allProjects2.find((p) => p.id === projectId) : void 0;\n const claudeProjectDir = matchedProject ? matchedProject.fullPath.replace(/\\//g, \"-\") : void 0;\n let messages = getSessionConversation(sessionId, offset2, limit2, claudeProjectDir);\n if (messages.length === 0) {\n messages = getOpenCodeConversation(sessionId, offset2, limit2);\n }\n let sessionInfo = null;\n for (const project of allProjects2) {\n if (projectId && project.id !== projectId) {\n continue;\n }\n const found = project.sessions.find((s) => s.id === sessionId);\n if (found) {\n sessionInfo = found;\n break;\n }\n }\n if (!sessionInfo) {\n return json({ error: \"Session not found\" }, { status: 404 });\n }\n return json({\n messages,\n session: sessionInfo,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const allProjects = getMergedProjects();\n const limit = parseInt(url.searchParams.get(\"limit\") || \"0\");\n const offset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const total = allProjects.length;\n const paginatedProjects = limit > 0 ? allProjects.slice(offset, offset + limit) : allProjects;\n return json({\n count: allProjects.reduce((sum, p) => sum + p.sessionCount, 0),\n projects: paginatedProjects,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n total\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { v as validateAuth } from './auth-DeCdZ83n.js';
2
- import { p as ptyManager } from './pty-manager-DR0Wt2Ac.js';
2
+ import { p as ptyManager } from './pty-manager-BQVB7IVj.js';
3
3
  import { t as toErrorMessage } from './error-DDXB3duW.js';
4
4
  import { j as json } from './shared-server-sSGG17Df.js';
5
5
  import 'crypto';
@@ -9,6 +9,7 @@ import 'path';
9
9
  import 'url';
10
10
  import 'net';
11
11
  import 'better-sqlite3';
12
+ import './opencode-db-path-DcfhJtJy.js';
12
13
 
13
14
  const POST = async ({ params, request }) => {
14
15
  const authError = validateAuth(request);
@@ -55,4 +56,4 @@ const POST = async ({ params, request }) => {
55
56
  };
56
57
 
57
58
  export { POST };
58
- //# sourceMappingURL=_server.ts-uHUi-4cd.js.map
59
+ //# sourceMappingURL=_server.ts-vekTmWAx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-vekTmWAx.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/terminals/_id_/resize/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../../../chunks/auth.js\";\nimport { p as ptyManager } from \"../../../../../../chunks/pty-manager.js\";\nimport { t as toErrorMessage } from \"../../../../../../chunks/error.js\";\nimport { json } from \"@sveltejs/kit\";\nconst POST = async ({ params, request }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n let body;\n try {\n body = await request.json();\n } catch {\n return json({ error: \"Invalid JSON in request body\" }, { status: 400 });\n }\n try {\n const { cols, rows } = body;\n if (cols === void 0 || rows === void 0) {\n return json({ error: \"cols and rows are required\" }, { status: 400 });\n }\n if (typeof cols !== \"number\" || cols < 1) {\n return json({ error: \"cols must be a positive number\" }, { status: 400 });\n }\n if (typeof rows !== \"number\" || rows < 1) {\n return json({ error: \"rows must be a positive number\" }, { status: 400 });\n }\n if (cols > 500 || rows > 200) {\n return json({ error: \"cols must be <= 500 and rows must be <= 200\" }, { status: 400 });\n }\n const terminal = ptyManager.get(params.id);\n if (!terminal) {\n return json({ error: \"Terminal not found\" }, { status: 404 });\n }\n if (terminal.status === \"exited\") {\n return json({ error: \"Terminal already exited\" }, { status: 409 });\n }\n ptyManager.resize(params.id, cols, rows);\n console.log(`[terminals] Resized terminal ${params.id} to ${cols}x${rows}`);\n return json({\n success: true,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"[terminals] Failed to resize terminal:\", toErrorMessage(error));\n return json({ error: \"Failed to resize terminal\" }, { status: 500 });\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAIK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC5C,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI;AAC/B,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AAC5C,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AAC9C,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/E,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AAC9C,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/E,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE;AAClC,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5F,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;AACtC,MAAM,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxE,IAAI;AACJ,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;AAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,6BAA6B,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACzD,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAClF,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxE,EAAE;AACF;;;;"}
@@ -1,6 +1,6 @@
1
- import './root-DhswcH6o.js';
2
- import { w as writable } from './index2-HA3VTH7y.js';
3
- import './state.svelte-2Lellg7t.js';
1
+ import './root-DDSnEAZv.js';
2
+ import { w as writable } from './index2-CgclKpUj.js';
3
+ import './state.svelte-hBbXlUak.js';
4
4
 
5
5
  function create_updated_store() {
6
6
  const { set, subscribe } = writable(false);
@@ -22,4 +22,4 @@ function goto(url, opts = {}) {
22
22
  }
23
23
 
24
24
  export { goto as g, stores as s };
25
- //# sourceMappingURL=client2-BjxIYuno.js.map
25
+ //# sourceMappingURL=client-BdGHe_hY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-BdGHe_hY.js","sources":["../../../.svelte-kit/adapter-node/chunks/client.js"],"sourcesContent":["import \"@sveltejs/kit/internal\";\nimport \"./exports.js\";\nimport \"./utils2.js\";\nimport { w as writable } from \"./index2.js\";\nimport \"@sveltejs/kit/internal/server\";\nimport \"./root.js\";\nimport \"./state.svelte.js\";\nfunction create_updated_store() {\n const { set, subscribe } = writable(false);\n {\n return {\n subscribe,\n // eslint-disable-next-line @typescript-eslint/require-await\n check: async () => false\n };\n }\n}\nconst stores = {\n updated: /* @__PURE__ */ create_updated_store()\n};\nfunction goto(url, opts = {}) {\n {\n throw new Error(\"Cannot call goto(...) on the server\");\n }\n}\nexport {\n goto as g,\n stores as s\n};\n"],"names":[],"mappings":";;;;AAOA,SAAS,oBAAoB,GAAG;AAChC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC5C,EAAE;AACF,IAAI,OAAO;AACX,MAAM,SAAS;AACf;AACA,MAAM,KAAK,EAAE,YAAY;AACzB,KAAK;AACL,EAAE;AACF;AACK,MAAC,MAAM,GAAG;AACf,EAAE,OAAO,kBAAkB,oBAAoB;AAC/C;AACA,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE;AAC9B,EAAE;AACF,IAAI,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC1D,EAAE;AACF;;;;"}
@@ -0,0 +1,7 @@
1
+ import './state.svelte-hBbXlUak.js';
2
+ import { s as stores } from './client-BdGHe_hY.js';
3
+
4
+ ({
5
+ check: stores.updated.check
6
+ });
7
+ //# sourceMappingURL=client2-CCBGA-2V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client2-CCBGA-2V.js","sources":["../../../.svelte-kit/adapter-node/chunks/client2.js"],"sourcesContent":["import \"./state.svelte.js\";\nimport { s as stores } from \"./client.js\";\n({\n check: stores.updated.check\n});\n"],"names":[],"mappings":";;;AAEA,CAAC;AACD,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC"}
@@ -3554,5 +3554,5 @@ function derived(fn) {
3554
3554
  };
3555
3555
  }
3556
3556
 
3557
- export { branch as $, render as A, set as B, get as C, DevalueError as D, flushSync as E, define_property as F, mutable_source as G, init_operations as H, get_first_child as I, COMMENT_NODE as J, HYDRATION_START as K, LEGACY_PROPS as L, get_next_sibling as M, HYDRATION_ERROR as N, hydration_failed as O, clear_text_content as P, component_root as Q, create_text as R, array_from as S, is_passive_event as T, set_active_reaction as U, set_active_effect as V, active_reaction as W, active_effect as X, setContext as Y, BOUNDARY_EFFECT as Z, block as _, is_plain_object as a, queue_micro_task as a0, pause_effect as a1, current_batch as a2, move_effect as a3, defer_effect as a4, set_component_context as a5, Batch as a6, handle_error as a7, component_context as a8, internal_set as a9, destroy_effect as aa, invoke_error_boundary as ab, effect_tracking as ac, render_effect as ad, HYDRATION_END as ae, HYDRATION_START_ELSE as af, svelte_boundary_reset_onerror as ag, source as ah, untrack as ai, increment as aj, HYDRATION_START_FAILED as ak, push$1 as al, pop$1 as am, EFFECT_TRANSPARENT as an, EFFECT_PRESERVED as ao, stringify_string as b, browser as c, attr_class as d, enumerable_symbols as e, stringify as f, get_type as g, store_get as h, is_primitive as i, unsubscribe_stores as j, escape_html as k, getContext as l, head as m, ensure_array_like as n, attr as o, attr_style as p, bind_props as q, spread_props as r, stringify_key as s, derived as t, uneval as u, valid_array_indices as v, clsx as w, ssr_context as x, noop as y, safe_not_equal as z };
3558
- //# sourceMappingURL=index-Cnl871UW.js.map
3557
+ export { move_effect as $, define_property as A, mutable_source as B, init_operations as C, DevalueError as D, get_first_child as E, COMMENT_NODE as F, get_next_sibling as G, HYDRATION_START as H, HYDRATION_ERROR as I, hydration_failed as J, clear_text_content as K, LEGACY_PROPS as L, component_root as M, create_text as N, array_from as O, is_passive_event as P, set_active_reaction as Q, set_active_effect as R, active_reaction as S, active_effect as T, setContext as U, BOUNDARY_EFFECT as V, block as W, branch as X, queue_micro_task as Y, pause_effect as Z, current_batch as _, is_plain_object as a, defer_effect as a0, set_component_context as a1, Batch as a2, handle_error as a3, component_context as a4, internal_set as a5, destroy_effect as a6, invoke_error_boundary as a7, effect_tracking as a8, render_effect as a9, HYDRATION_END as aa, HYDRATION_START_ELSE as ab, svelte_boundary_reset_onerror as ac, source as ad, untrack as ae, increment as af, HYDRATION_START_FAILED as ag, push$1 as ah, pop$1 as ai, EFFECT_TRANSPARENT as aj, EFFECT_PRESERVED as ak, noop as al, safe_not_equal as am, ssr_context as an, clsx as ao, stringify_string as b, browser as c, attr_class as d, enumerable_symbols as e, stringify as f, get_type as g, store_get as h, is_primitive as i, unsubscribe_stores as j, escape_html as k, head as l, getContext as m, ensure_array_like as n, attr as o, attr_style as p, bind_props as q, spread_props as r, stringify_key as s, derived as t, uneval as u, valid_array_indices as v, render as w, set as x, get as y, flushSync as z };
3558
+ //# sourceMappingURL=index-DwaY1cAm.js.map