@juspay/shooter 1.18.0 → 1.20.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 (367) hide show
  1. package/build/client/_app/immutable/assets/{0.NV8k8wxG.css → 0.BwNtE8TX.css} +1 -1
  2. package/build/client/_app/immutable/assets/0.BwNtE8TX.css.br +0 -0
  3. package/build/client/_app/immutable/assets/{0.NV8k8wxG.css.gz → 0.BwNtE8TX.css.gz} +0 -0
  4. package/build/client/_app/immutable/assets/11.F10lvwyh.css +1 -0
  5. package/build/client/_app/immutable/assets/11.F10lvwyh.css.br +0 -0
  6. package/build/client/_app/immutable/assets/11.F10lvwyh.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/8.BYgAX7hR.css +1 -0
  8. package/build/client/_app/immutable/assets/8.BYgAX7hR.css.br +0 -0
  9. package/build/client/_app/immutable/assets/8.BYgAX7hR.css.gz +0 -0
  10. package/build/client/_app/immutable/assets/9.DV6pZunn.css +1 -0
  11. package/build/client/_app/immutable/assets/9.DV6pZunn.css.br +0 -0
  12. package/build/client/_app/immutable/assets/9.DV6pZunn.css.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{DZQMsHM5.js → 2rBV5OkJ.js} +1 -1
  14. package/build/client/_app/immutable/chunks/2rBV5OkJ.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/2rBV5OkJ.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{B9WQy_3X.js → BB2l8o4X.js} +1 -1
  17. package/build/client/_app/immutable/chunks/BB2l8o4X.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BB2l8o4X.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{Cg3dlX05.js → BPDiEZo0.js} +2 -2
  20. package/build/client/_app/immutable/chunks/BPDiEZo0.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/BPDiEZo0.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{C_9BZILB.js → BcpydfqI.js} +1 -1
  23. package/build/client/_app/immutable/chunks/BcpydfqI.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BcpydfqI.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/{BRqaaL5D.js → BvmdJful.js} +1 -1
  26. package/build/client/_app/immutable/chunks/BvmdJful.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BvmdJful.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/C_YNQL8b.js +3 -0
  29. package/build/client/_app/immutable/chunks/C_YNQL8b.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/C_YNQL8b.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/{C5VOyQCG.js → ClIPTXf3.js} +1 -1
  32. package/build/client/_app/immutable/chunks/ClIPTXf3.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/ClIPTXf3.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/{8lO1IL7u.js → DIZ3Qst5.js} +1 -1
  35. package/build/client/_app/immutable/chunks/DIZ3Qst5.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/{8lO1IL7u.js.gz → DIZ3Qst5.js.gz} +0 -0
  37. package/build/client/_app/immutable/chunks/{DJvX78LW.js → DT4H19pV.js} +1 -1
  38. package/build/client/_app/immutable/chunks/DT4H19pV.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/DT4H19pV.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/{DYuMZGL5.js → DWmC0QM7.js} +1 -1
  41. package/build/client/_app/immutable/chunks/DWmC0QM7.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/DWmC0QM7.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/J5-Cr5oR.js +6 -0
  44. package/build/client/_app/immutable/chunks/J5-Cr5oR.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/J5-Cr5oR.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/{DZvnhU_8.js → ZS5XYDx_.js} +2 -2
  47. package/build/client/_app/immutable/chunks/ZS5XYDx_.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/ZS5XYDx_.js.gz +0 -0
  49. package/build/client/_app/immutable/entry/app.Bd-DfeJi.js +2 -0
  50. package/build/client/_app/immutable/entry/app.Bd-DfeJi.js.br +0 -0
  51. package/build/client/_app/immutable/entry/app.Bd-DfeJi.js.gz +0 -0
  52. package/build/client/_app/immutable/entry/start.evvp4tX7.js +1 -0
  53. package/build/client/_app/immutable/entry/start.evvp4tX7.js.br +2 -0
  54. package/build/client/_app/immutable/entry/start.evvp4tX7.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/0.Bl-1LQWM.js +10 -0
  56. package/build/client/_app/immutable/nodes/0.Bl-1LQWM.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/0.Bl-1LQWM.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{1.C4eFlqSB.js → 1.DT4dq6Ay.js} +1 -1
  59. package/build/client/_app/immutable/nodes/1.DT4dq6Ay.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/1.DT4dq6Ay.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{8.Bs362gyb.js → 10.CF7RGXpe.js} +2 -2
  62. package/build/client/_app/immutable/nodes/10.CF7RGXpe.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/10.CF7RGXpe.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/11.BV_G7yLI.js +2 -0
  65. package/build/client/_app/immutable/nodes/11.BV_G7yLI.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/11.BV_G7yLI.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{2.CdC092Za.js → 2.DcRhsjYp.js} +2 -2
  68. package/build/client/_app/immutable/nodes/2.DcRhsjYp.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/2.DcRhsjYp.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{3.Dhf4ZWW0.js → 3.0MMe3oxR.js} +3 -3
  71. package/build/client/_app/immutable/nodes/3.0MMe3oxR.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/3.0MMe3oxR.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{4.BSVqdrrD.js → 4.CBX9A3ka.js} +2 -2
  74. package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/4.CBX9A3ka.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{5.Cfj35gpY.js → 5.DIVKuZc9.js} +1 -1
  77. package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/5.DIVKuZc9.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{6.B3SEB_li.js → 6.ComiWlV6.js} +1 -1
  80. package/build/client/_app/immutable/nodes/6.ComiWlV6.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/6.ComiWlV6.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/{7.DV8cJ1lX.js → 7.vkPx1kVP.js} +1 -1
  83. package/build/client/_app/immutable/nodes/7.vkPx1kVP.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/7.vkPx1kVP.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/8.Bmr3sWbS.js +1 -0
  86. package/build/client/_app/immutable/nodes/8.Bmr3sWbS.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/8.Bmr3sWbS.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/9.CAJucyeI.js +2 -0
  89. package/build/client/_app/immutable/nodes/9.CAJucyeI.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/9.CAJucyeI.js.gz +0 -0
  91. package/build/client/_app/version.json +1 -1
  92. package/build/client/_app/version.json.br +0 -0
  93. package/build/client/_app/version.json.gz +0 -0
  94. package/build/server/chunks/{0-Cd7jY0a7.js → 0-DDGB6CRT.js} +4 -4
  95. package/build/server/chunks/{0-Cd7jY0a7.js.map → 0-DDGB6CRT.js.map} +1 -1
  96. package/build/server/chunks/1-DEjonQXD.js +9 -0
  97. package/build/server/chunks/{1-C4BOGoJY.js.map → 1-DEjonQXD.js.map} +1 -1
  98. package/build/server/chunks/10-BK1kiiiw.js +9 -0
  99. package/build/server/chunks/10-BK1kiiiw.js.map +1 -0
  100. package/build/server/chunks/11-CJPjkEF3.js +9 -0
  101. package/build/server/chunks/11-CJPjkEF3.js.map +1 -0
  102. package/build/server/chunks/{2-Ba0mNwJ6.js → 2-RLnhlWh5.js} +3 -3
  103. package/build/server/chunks/{2-Ba0mNwJ6.js.map → 2-RLnhlWh5.js.map} +1 -1
  104. package/build/server/chunks/{3-Pg8t1uJU.js → 3-Dd4pJBqZ.js} +3 -3
  105. package/build/server/chunks/{3-Pg8t1uJU.js.map → 3-Dd4pJBqZ.js.map} +1 -1
  106. package/build/server/chunks/{4-BtYdKCVW.js → 4-Bb5VFhsO.js} +3 -3
  107. package/build/server/chunks/{4-BtYdKCVW.js.map → 4-Bb5VFhsO.js.map} +1 -1
  108. package/build/server/chunks/{5-CvJK3PiH.js → 5-oNoWuIsn.js} +3 -3
  109. package/build/server/chunks/{5-CvJK3PiH.js.map → 5-oNoWuIsn.js.map} +1 -1
  110. package/build/server/chunks/6-DdRMnKNa.js +9 -0
  111. package/build/server/chunks/{6-D8xbnTSo.js.map → 6-DdRMnKNa.js.map} +1 -1
  112. package/build/server/chunks/7-vLOMMetm.js +9 -0
  113. package/build/server/chunks/{7-CkVK06S0.js.map → 7-vLOMMetm.js.map} +1 -1
  114. package/build/server/chunks/8-rJyiQLFs.js +9 -0
  115. package/build/server/chunks/8-rJyiQLFs.js.map +1 -0
  116. package/build/server/chunks/9-CVSNNYED.js +9 -0
  117. package/build/server/chunks/9-CVSNNYED.js.map +1 -0
  118. package/build/server/chunks/Banner-BgaAs1rs.js +90 -0
  119. package/build/server/chunks/Banner-BgaAs1rs.js.map +1 -0
  120. package/build/server/chunks/{Button-B5dU-ntz.js → Button-D0hZ7JYt.js} +2 -2
  121. package/build/server/chunks/Button-D0hZ7JYt.js.map +1 -0
  122. package/build/server/chunks/{Icon-C7Ml3GX6.js → Icon-D0GBnDcs.js} +3 -3
  123. package/build/server/chunks/Icon-D0GBnDcs.js.map +1 -0
  124. package/build/server/chunks/{Input-CPGO0sbS.js → Input-OmIiydSx.js} +2 -2
  125. package/build/server/chunks/Input-OmIiydSx.js.map +1 -0
  126. package/build/server/chunks/{Pill-CcrtCejm.js → Pill-4xJ-VhAA.js} +3 -3
  127. package/build/server/chunks/Pill-4xJ-VhAA.js.map +1 -0
  128. package/build/server/chunks/{Shimmer-C5jkvGr1.js → Shimmer-Dw2uvTC1.js} +2 -2
  129. package/build/server/chunks/Shimmer-Dw2uvTC1.js.map +1 -0
  130. package/build/server/chunks/{_error.svelte-CSIxs-ab.js → _error.svelte-CZnkxeLr.js} +8 -8
  131. package/build/server/chunks/_error.svelte-CZnkxeLr.js.map +1 -0
  132. package/build/server/chunks/{_layout.svelte-noB4j-v2.js → _layout.svelte-DfgNGGiM.js} +16 -11
  133. package/build/server/chunks/_layout.svelte-DfgNGGiM.js.map +1 -0
  134. package/build/server/chunks/{_page.svelte-DnTpPnPR.js → _page.svelte-BLo2v_8E.js} +7 -88
  135. package/build/server/chunks/_page.svelte-BLo2v_8E.js.map +1 -0
  136. package/build/server/chunks/_page.svelte-BTlfUsBp.js +43 -0
  137. package/build/server/chunks/_page.svelte-BTlfUsBp.js.map +1 -0
  138. package/build/server/chunks/{_page.svelte-BV0XyYJZ.js → _page.svelte-BX2FMgSg.js} +4 -4
  139. package/build/server/chunks/_page.svelte-BX2FMgSg.js.map +1 -0
  140. package/build/server/chunks/{_page.svelte-BUkm2304.js → _page.svelte-C7B0qdrC.js} +5 -5
  141. package/build/server/chunks/_page.svelte-C7B0qdrC.js.map +1 -0
  142. package/build/server/chunks/{_page.svelte-Dmg-RFCg.js → _page.svelte-CE7COWnF.js} +7 -7
  143. package/build/server/chunks/_page.svelte-CE7COWnF.js.map +1 -0
  144. package/build/server/chunks/{_page.svelte-BfB8maoc.js → _page.svelte-CWsjjd4l.js} +9 -9
  145. package/build/server/chunks/_page.svelte-CWsjjd4l.js.map +1 -0
  146. package/build/server/chunks/_page.svelte-D5S2hkBk.js +104 -0
  147. package/build/server/chunks/_page.svelte-D5S2hkBk.js.map +1 -0
  148. package/build/server/chunks/{_page.svelte-B6qyh-K-.js → _page.svelte-D_Ey8QRG.js} +11 -11
  149. package/build/server/chunks/_page.svelte-D_Ey8QRG.js.map +1 -0
  150. package/build/server/chunks/{_page.svelte-C60lAagP.js → _page.svelte-dabsQl9c.js} +210 -9
  151. package/build/server/chunks/_page.svelte-dabsQl9c.js.map +1 -0
  152. package/build/server/chunks/{_page.svelte-DuzZr5dA.js → _page.svelte-tBuIq8Pg.js} +11 -11
  153. package/build/server/chunks/_page.svelte-tBuIq8Pg.js.map +1 -0
  154. package/build/server/chunks/{_server.ts-CyjDrcZN.js → _server.ts-AnBXfZXh.js} +10 -2
  155. package/build/server/chunks/_server.ts-AnBXfZXh.js.map +1 -0
  156. package/build/server/chunks/_server.ts-B-evHL2q.js +13 -0
  157. package/build/server/chunks/_server.ts-B-evHL2q.js.map +1 -0
  158. package/build/server/chunks/_server.ts-B2wIgsW4.js +95 -0
  159. package/build/server/chunks/_server.ts-B2wIgsW4.js.map +1 -0
  160. package/build/server/chunks/_server.ts-BaaY7Z9D.js +77 -0
  161. package/build/server/chunks/_server.ts-BaaY7Z9D.js.map +1 -0
  162. package/build/server/chunks/_server.ts-C0317RBD.js +57 -0
  163. package/build/server/chunks/_server.ts-C0317RBD.js.map +1 -0
  164. package/build/server/chunks/{_server.ts-Bu3s5hfv.js → _server.ts-CJGyN8mw.js} +18 -10
  165. package/build/server/chunks/_server.ts-CJGyN8mw.js.map +1 -0
  166. package/build/server/chunks/_server.ts-CVPZOpiv.js +23 -0
  167. package/build/server/chunks/_server.ts-CVPZOpiv.js.map +1 -0
  168. package/build/server/chunks/{_server.ts-DZgfQKiH.js → _server.ts-D9ir7u24.js} +2 -2
  169. package/build/server/chunks/{_server.ts-DZgfQKiH.js.map → _server.ts-D9ir7u24.js.map} +1 -1
  170. package/build/server/chunks/{_server.ts-DZP2lhaY.js → _server.ts-DEx9-epI.js} +20 -8
  171. package/build/server/chunks/_server.ts-DEx9-epI.js.map +1 -0
  172. package/build/server/chunks/{_server.ts-BA_uWcPw.js → _server.ts-DKNIsQeH.js} +6 -4
  173. package/build/server/chunks/_server.ts-DKNIsQeH.js.map +1 -0
  174. package/build/server/chunks/_server.ts-DkZX_O9a.js +39 -0
  175. package/build/server/chunks/_server.ts-DkZX_O9a.js.map +1 -0
  176. package/build/server/chunks/_server.ts-DpRr0Tfh.js +68 -0
  177. package/build/server/chunks/_server.ts-DpRr0Tfh.js.map +1 -0
  178. package/build/server/chunks/{_server.ts-CwAjt91u.js → _server.ts-Dz9Jd9Jh.js} +6 -4
  179. package/build/server/chunks/{_server.ts-CwAjt91u.js.map → _server.ts-Dz9Jd9Jh.js.map} +1 -1
  180. package/build/server/chunks/_server.ts-Mttr0-Sl.js +48 -0
  181. package/build/server/chunks/_server.ts-Mttr0-Sl.js.map +1 -0
  182. package/build/server/chunks/{_server.ts-Bjbr7glm.js → _server.ts-QN-Bo5ql.js} +12 -5
  183. package/build/server/chunks/_server.ts-QN-Bo5ql.js.map +1 -0
  184. package/build/server/chunks/{_server.ts-BrqaMMAa.js → _server.ts-W6i3EnGX.js} +29 -6
  185. package/build/server/chunks/_server.ts-W6i3EnGX.js.map +1 -0
  186. package/build/server/chunks/{_server.ts-DZ5naqSL.js → _server.ts-bk_EeAdY.js} +6 -2
  187. package/build/server/chunks/_server.ts-bk_EeAdY.js.map +1 -0
  188. package/build/server/chunks/_server.ts-jtqWDWcf.js +45 -0
  189. package/build/server/chunks/_server.ts-jtqWDWcf.js.map +1 -0
  190. package/build/server/chunks/{cache-Me3zUAaD.js → cache-BlMaDsHi.js} +2 -2
  191. package/build/server/chunks/cache-BlMaDsHi.js.map +1 -0
  192. package/build/server/chunks/{client-CfNnl32g.js → client-Ds1brw-8.js} +4 -4
  193. package/build/server/chunks/{client-CfNnl32g.js.map → client-Ds1brw-8.js.map} +1 -1
  194. package/build/server/chunks/client2-DngLdcUc.js +7 -0
  195. package/build/server/chunks/{client2-DDP30_vY.js.map → client2-DngLdcUc.js.map} +1 -1
  196. package/build/server/chunks/coordinator-DMU_ADXf.js +530 -0
  197. package/build/server/chunks/coordinator-DMU_ADXf.js.map +1 -0
  198. package/build/server/chunks/guest-registry-t0-7Zv5q.js +39 -0
  199. package/build/server/chunks/guest-registry-t0-7Zv5q.js.map +1 -0
  200. package/build/server/chunks/{index-CJrGuxuM.js → index-CoYB03g7.js} +2 -2
  201. package/build/server/chunks/{index-CJrGuxuM.js.map → index-CoYB03g7.js.map} +1 -1
  202. package/build/server/chunks/{index-server--49oHtA0.js → index-server-Bq3cnK69.js} +2 -2
  203. package/build/server/chunks/{index-server--49oHtA0.js.map → index-server-Bq3cnK69.js.map} +1 -1
  204. package/build/server/chunks/{index2-MY7PXeAc.js → index2-dSGQ9Eaa.js} +2 -2
  205. package/build/server/chunks/{index2-MY7PXeAc.js.map → index2-dSGQ9Eaa.js.map} +1 -1
  206. package/build/server/chunks/{pty-manager-DmNSCKAr.js → pty-manager-CkZNoW1t.js} +7 -2
  207. package/build/server/chunks/pty-manager-CkZNoW1t.js.map +1 -0
  208. package/build/server/chunks/qwen-reader-DGfUbKaJ.js.map +1 -1
  209. package/build/server/chunks/{registry-Kcw2UCMv.js → registry-D4J_CuzW.js} +2 -2
  210. package/build/server/chunks/registry-D4J_CuzW.js.map +1 -0
  211. package/build/server/chunks/{root-xvQIR1Bt.js → root-D4IoFC8F.js} +2 -2
  212. package/build/server/chunks/root-D4IoFC8F.js.map +1 -0
  213. package/build/server/chunks/share-auth-BS7JuiHf.js +27 -0
  214. package/build/server/chunks/share-auth-BS7JuiHf.js.map +1 -0
  215. package/build/server/chunks/share-store-B9jMpVg0.js +127 -0
  216. package/build/server/chunks/share-store-B9jMpVg0.js.map +1 -0
  217. package/build/server/chunks/{state.svelte-RCtlkrNH.js → state.svelte-CmHqngc_.js} +3 -3
  218. package/build/server/chunks/{state.svelte-RCtlkrNH.js.map → state.svelte-CmHqngc_.js.map} +1 -1
  219. package/build/server/chunks/{stores-C-LqoonT.js → stores-CRYxfF0o.js} +4 -4
  220. package/build/server/chunks/stores-CRYxfF0o.js.map +1 -0
  221. package/build/server/chunks/super-session-handler-DPyxFgmz.js +22 -0
  222. package/build/server/chunks/super-session-handler-DPyxFgmz.js.map +1 -0
  223. package/build/server/index.js +4 -4
  224. package/build/server/index.js.map +1 -1
  225. package/build/server/manifest.js +101 -22
  226. package/build/server/manifest.js.map +1 -1
  227. package/package.json +2 -2
  228. package/scripts/e2e-all-features.sh +41 -2
  229. package/server.ts +33 -3
  230. package/src/lib/modules/client/terminal/ShareGate.svelte +96 -0
  231. package/src/lib/modules/client/terminal/ShareSheet.svelte +395 -0
  232. package/src/lib/modules/client/terminal/xterm-wrapper.ts +19 -2
  233. package/src/lib/modules/server/sos/coordinator.ts +492 -0
  234. package/src/lib/modules/server/sos/policy-gate.ts +56 -0
  235. package/src/lib/modules/server/sos/relay-store.ts +159 -0
  236. package/src/lib/modules/server/terminal/pty-input.ts +37 -0
  237. package/src/lib/modules/server/terminal/pty-manager.ts +6 -0
  238. package/src/lib/modules/server/terminal/share-auth.ts +37 -0
  239. package/src/lib/modules/server/terminal/share-store.ts +172 -0
  240. package/src/lib/modules/server/ws/guest-registry.ts +49 -0
  241. package/src/lib/modules/server/ws/server.ts +28 -4
  242. package/src/lib/modules/server/ws/session-handler.ts +24 -5
  243. package/src/lib/modules/server/ws/super-session-handler.ts +200 -0
  244. package/src/lib/modules/server/ws/terminal-handler.ts +21 -2
  245. package/src/lib/modules/server/ws/ticket-store.ts +18 -10
  246. package/src/lib/types/generated/Client.ts +25 -1
  247. package/src/lib/types/generated/Share.ts +404 -0
  248. package/src/lib/types/generated/WsProtocol.ts +73 -2
  249. package/src/lib/types/generated/index.ts +1 -0
  250. package/src/lib/types/index.ts +2 -1
  251. package/src/lib/types/sos.ts +134 -0
  252. package/src/lib/types/terminal-client.ts +19 -2
  253. package/src/lib/types/ws.ts +1 -0
  254. package/src/routes/+layout.svelte +9 -2
  255. package/src/routes/api/sos/+server.ts +36 -0
  256. package/src/routes/api/sos/[id]/+server.ts +55 -0
  257. package/src/routes/api/sos/[id]/inject/+server.ts +44 -0
  258. package/src/routes/api/sos/[id]/members/+server.ts +47 -0
  259. package/src/routes/api/sos/[id]/members/[mid]/+server.ts +17 -0
  260. package/src/routes/api/sos/[id]/rules/+server.ts +85 -0
  261. package/src/routes/api/terminals/[id]/+server.ts +14 -3
  262. package/src/routes/api/terminals/[id]/paste-image/+server.ts +8 -4
  263. package/src/routes/api/terminals/[id]/resize/+server.ts +8 -4
  264. package/src/routes/api/terminals/[id]/share/+server.ts +98 -0
  265. package/src/routes/api/terminals/[id]/share/auth/+server.ts +81 -0
  266. package/src/routes/api/terminals/[id]/share/status/+server.ts +11 -0
  267. package/src/routes/api/ws-ticket/+server.ts +26 -5
  268. package/src/routes/sos/+page.svelte +195 -0
  269. package/src/routes/sos/[id]/+page.svelte +677 -0
  270. package/src/routes/terminals/[id]/+page.svelte +184 -43
  271. package/build/client/_app/immutable/assets/0.NV8k8wxG.css.br +0 -0
  272. package/build/client/_app/immutable/assets/9.v5KA95xm.css +0 -1
  273. package/build/client/_app/immutable/assets/9.v5KA95xm.css.br +0 -0
  274. package/build/client/_app/immutable/assets/9.v5KA95xm.css.gz +0 -0
  275. package/build/client/_app/immutable/chunks/8lO1IL7u.js.br +0 -0
  276. package/build/client/_app/immutable/chunks/B9WQy_3X.js.br +0 -0
  277. package/build/client/_app/immutable/chunks/B9WQy_3X.js.gz +0 -0
  278. package/build/client/_app/immutable/chunks/BRqaaL5D.js.br +0 -0
  279. package/build/client/_app/immutable/chunks/BRqaaL5D.js.gz +0 -0
  280. package/build/client/_app/immutable/chunks/C5VOyQCG.js.br +0 -0
  281. package/build/client/_app/immutable/chunks/C5VOyQCG.js.gz +0 -0
  282. package/build/client/_app/immutable/chunks/CR6bkGJW.js +0 -6
  283. package/build/client/_app/immutable/chunks/CR6bkGJW.js.br +0 -0
  284. package/build/client/_app/immutable/chunks/CR6bkGJW.js.gz +0 -0
  285. package/build/client/_app/immutable/chunks/C_9BZILB.js.br +0 -0
  286. package/build/client/_app/immutable/chunks/C_9BZILB.js.gz +0 -0
  287. package/build/client/_app/immutable/chunks/Cg3dlX05.js.br +0 -0
  288. package/build/client/_app/immutable/chunks/Cg3dlX05.js.gz +0 -0
  289. package/build/client/_app/immutable/chunks/DJvX78LW.js.br +0 -0
  290. package/build/client/_app/immutable/chunks/DJvX78LW.js.gz +0 -0
  291. package/build/client/_app/immutable/chunks/DYuMZGL5.js.br +0 -0
  292. package/build/client/_app/immutable/chunks/DYuMZGL5.js.gz +0 -0
  293. package/build/client/_app/immutable/chunks/DZQMsHM5.js.br +0 -0
  294. package/build/client/_app/immutable/chunks/DZQMsHM5.js.gz +0 -0
  295. package/build/client/_app/immutable/chunks/DZvnhU_8.js.br +0 -0
  296. package/build/client/_app/immutable/chunks/DZvnhU_8.js.gz +0 -0
  297. package/build/client/_app/immutable/chunks/nWG9RHyB.js +0 -3
  298. package/build/client/_app/immutable/chunks/nWG9RHyB.js.br +0 -0
  299. package/build/client/_app/immutable/chunks/nWG9RHyB.js.gz +0 -0
  300. package/build/client/_app/immutable/entry/app.f46Ko1hu.js +0 -2
  301. package/build/client/_app/immutable/entry/app.f46Ko1hu.js.br +0 -0
  302. package/build/client/_app/immutable/entry/app.f46Ko1hu.js.gz +0 -0
  303. package/build/client/_app/immutable/entry/start.BVDjNnXt.js +0 -1
  304. package/build/client/_app/immutable/entry/start.BVDjNnXt.js.br +0 -2
  305. package/build/client/_app/immutable/entry/start.BVDjNnXt.js.gz +0 -0
  306. package/build/client/_app/immutable/nodes/0.D_9EwVmq.js +0 -7
  307. package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.br +0 -0
  308. package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.gz +0 -0
  309. package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.br +0 -0
  310. package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.gz +0 -0
  311. package/build/client/_app/immutable/nodes/2.CdC092Za.js.br +0 -0
  312. package/build/client/_app/immutable/nodes/2.CdC092Za.js.gz +0 -0
  313. package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.br +0 -0
  314. package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.gz +0 -0
  315. package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.br +0 -0
  316. package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.gz +0 -0
  317. package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.br +0 -0
  318. package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.gz +0 -0
  319. package/build/client/_app/immutable/nodes/6.B3SEB_li.js.br +0 -0
  320. package/build/client/_app/immutable/nodes/6.B3SEB_li.js.gz +0 -0
  321. package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.br +0 -0
  322. package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.gz +0 -0
  323. package/build/client/_app/immutable/nodes/8.Bs362gyb.js.br +0 -0
  324. package/build/client/_app/immutable/nodes/8.Bs362gyb.js.gz +0 -0
  325. package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js +0 -2
  326. package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js.br +0 -0
  327. package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js.gz +0 -0
  328. package/build/server/chunks/1-C4BOGoJY.js +0 -9
  329. package/build/server/chunks/6-D8xbnTSo.js +0 -9
  330. package/build/server/chunks/7-CkVK06S0.js +0 -9
  331. package/build/server/chunks/8-C8qVhrds.js +0 -9
  332. package/build/server/chunks/8-C8qVhrds.js.map +0 -1
  333. package/build/server/chunks/9-fL5zqN0T.js +0 -9
  334. package/build/server/chunks/9-fL5zqN0T.js.map +0 -1
  335. package/build/server/chunks/Button-B5dU-ntz.js.map +0 -1
  336. package/build/server/chunks/Icon-C7Ml3GX6.js.map +0 -1
  337. package/build/server/chunks/Input-CPGO0sbS.js.map +0 -1
  338. package/build/server/chunks/Pill-CcrtCejm.js.map +0 -1
  339. package/build/server/chunks/Shimmer-C5jkvGr1.js.map +0 -1
  340. package/build/server/chunks/_error.svelte-CSIxs-ab.js.map +0 -1
  341. package/build/server/chunks/_layout.svelte-noB4j-v2.js.map +0 -1
  342. package/build/server/chunks/_page.svelte-B6qyh-K-.js.map +0 -1
  343. package/build/server/chunks/_page.svelte-BUkm2304.js.map +0 -1
  344. package/build/server/chunks/_page.svelte-BV0XyYJZ.js.map +0 -1
  345. package/build/server/chunks/_page.svelte-BfB8maoc.js.map +0 -1
  346. package/build/server/chunks/_page.svelte-C60lAagP.js.map +0 -1
  347. package/build/server/chunks/_page.svelte-Dmg-RFCg.js.map +0 -1
  348. package/build/server/chunks/_page.svelte-DnTpPnPR.js.map +0 -1
  349. package/build/server/chunks/_page.svelte-DuzZr5dA.js.map +0 -1
  350. package/build/server/chunks/_server.ts-BA_uWcPw.js.map +0 -1
  351. package/build/server/chunks/_server.ts-Bjbr7glm.js.map +0 -1
  352. package/build/server/chunks/_server.ts-BrqaMMAa.js.map +0 -1
  353. package/build/server/chunks/_server.ts-Bu3s5hfv.js.map +0 -1
  354. package/build/server/chunks/_server.ts-CyjDrcZN.js.map +0 -1
  355. package/build/server/chunks/_server.ts-DZ5naqSL.js.map +0 -1
  356. package/build/server/chunks/_server.ts-DZP2lhaY.js.map +0 -1
  357. package/build/server/chunks/cache-Me3zUAaD.js.map +0 -1
  358. package/build/server/chunks/client2-DDP30_vY.js +0 -7
  359. package/build/server/chunks/events-handler-Dm1mNPQP.js +0 -20
  360. package/build/server/chunks/events-handler-Dm1mNPQP.js.map +0 -1
  361. package/build/server/chunks/pty-manager-DmNSCKAr.js.map +0 -1
  362. package/build/server/chunks/registry-Kcw2UCMv.js.map +0 -1
  363. package/build/server/chunks/root-xvQIR1Bt.js.map +0 -1
  364. package/build/server/chunks/stores-C-LqoonT.js.map +0 -1
  365. /package/build/client/_app/immutable/assets/{8.BhoBXADL.css → 10.BhoBXADL.css} +0 -0
  366. /package/build/client/_app/immutable/assets/{8.BhoBXADL.css.br → 10.BhoBXADL.css.br} +0 -0
  367. /package/build/client/_app/immutable/assets/{8.BhoBXADL.css.gz → 10.BhoBXADL.css.gz} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-reader-DGfUbKaJ.js","sources":["../../../.svelte-kit/adapter-node/chunks/qwen-reader.js"],"sourcesContent":["import * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport { existsSync } from \"fs\";\nimport { homedir } from \"os\";\nimport * as path from \"path\";\nclass TurnBuilder {\n current = null;\n messages = [];\n /** Messages flushed so far (excludes the still-open run). */\n completed() {\n return this.messages;\n }\n flush() {\n if (this.current && this.current.parts.length > 0) {\n this.messages.push({\n id: `codex-${this.messages.length}`,\n parts: this.current.parts,\n role: this.current.role,\n timestamp: this.current.timestamp\n });\n }\n this.current = null;\n }\n push(role, part, timestamp) {\n const category = role === \"user\" ? \"user\" : part.type === \"tool_result\" ? \"system\" : \"assistant\";\n const messageRole = category === \"system\" ? \"system\" : role;\n if (this.current?.category !== category) {\n this.flush();\n this.current = { category, parts: [], role: messageRole, timestamp };\n }\n this.current.parts.push(part);\n }\n result() {\n this.flush();\n return this.messages;\n }\n}\nfunction parseCodexMeta(line) {\n try {\n const entry = JSON.parse(line);\n if (!isRecord$3(entry) || entry.type !== \"session_meta\" || !isRecord$3(entry.payload)) {\n return null;\n }\n const p = entry.payload;\n if (!str(p, \"id\") || !str(p, \"cwd\")) {\n return null;\n }\n return {\n cliVersion: str(p, \"cli_version\"),\n cwd: str(p, \"cwd\"),\n id: str(p, \"id\"),\n model: str(p, \"model\") || str(p, \"model_provider\"),\n startedAt: str(p, \"timestamp\") || str(entry, \"timestamp\")\n };\n } catch {\n return null;\n }\n}\nfunction parseCodexRollout(text) {\n const builder = new TurnBuilder();\n let meta = null;\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!isRecord$3(entry)) {\n continue;\n }\n const ts = str(entry, \"timestamp\");\n if (entry.type === \"session_meta\") {\n meta = parseCodexMeta(trimmed);\n continue;\n }\n if (entry.type !== \"response_item\" || !isRecord$3(entry.payload)) {\n continue;\n }\n const mapped = responseItemToPart(entry.payload);\n if (mapped) {\n builder.push(mapped.role, mapped.part, ts);\n }\n }\n return { messages: builder.result(), meta };\n}\nfunction isRecord$3(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction joinMessageText(content) {\n if (!Array.isArray(content)) {\n return typeof content === \"string\" ? content : \"\";\n }\n return content.filter((c) => isRecord$3(c)).filter((c) => c.type === \"input_text\" || c.type === \"output_text\" || c.type === \"text\").map((c) => str(c, \"text\")).join(\"\\n\").trim();\n}\nfunction parseToolInput(raw) {\n if (isRecord$3(raw)) {\n return raw;\n }\n if (typeof raw === \"string\") {\n try {\n const parsed = JSON.parse(raw);\n return isRecord$3(parsed) ? parsed : { raw };\n } catch {\n return { raw };\n }\n }\n return {};\n}\nfunction reasoningText(payload) {\n const summary = payload.summary;\n if (Array.isArray(summary) && summary.length > 0) {\n const text = summary.map((s) => typeof s === \"string\" ? s : isRecord$3(s) ? str(s, \"text\") : \"\").join(\"\\n\").trim();\n if (text) {\n return text;\n }\n }\n return typeof payload.content === \"string\" ? payload.content.trim() : \"\";\n}\nfunction responseItemToPart(p) {\n switch (p.type) {\n case \"custom_tool_call\":\n case \"function_call\": {\n const args = p.type === \"function_call\" ? p.arguments : p.input;\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(args),\n toolName: str(p, \"name\") || \"tool\",\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n }\n case \"custom_tool_call_output\":\n case \"function_call_output\":\n case \"tool_search_output\": {\n const output = typeof p.output === \"string\" ? p.output : JSON.stringify(p.output ?? \"\");\n return {\n part: {\n isError: /exit code:\\s*[1-9]/i.test(output),\n output: output.slice(0, 2e3),\n toolUseId: str(p, \"call_id\"),\n type: \"tool_result\"\n },\n role: \"assistant\"\n };\n }\n case \"message\": {\n if (p.role === \"developer\") {\n return null;\n }\n const content = joinMessageText(p.content);\n return content ? { part: { content, type: \"text\" }, role: p.role === \"user\" ? \"user\" : \"assistant\" } : null;\n }\n case \"reasoning\": {\n const think = reasoningText(p);\n return think ? { part: { content: think, type: \"thinking\" }, role: \"assistant\" } : null;\n }\n case \"tool_search_call\":\n case \"web_search_call\":\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(p.action ?? p.query),\n toolName: str(p, \"type\"),\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n default:\n return null;\n }\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nconst LIST_PREFIX_BYTES = 256 * 1024;\nconst MAX_FULL_READ_BYTES$2 = 16 * 1024 * 1024;\nconst APPROX_BYTES_PER_MESSAGE = 3e3;\nconst SYNTHETIC_PROMPT_PREFIXES = [\"<environment_context>\", \"<user_instructions>\", \"<permissions\"];\nfunction detectActiveCodexSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction findCodexRolloutById(sessionId) {\n if (!/^[0-9a-f-]+$/i.test(sessionId)) {\n return null;\n }\n const suffix = `-${sessionId}.jsonl`;\n return collectRolloutFiles().find((p) => path.basename(p).endsWith(suffix)) ?? null;\n}\nfunction findCodexRolloutForCwd(cwd, sinceMs) {\n let best = null;\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.birthtimeMs <= sinceMs) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta?.cwd === cwd && (!best || stat.birthtimeMs > best.birthtime)) {\n best = { birthtime: stat.birthtimeMs, path: filePath };\n }\n } catch {\n }\n }\n return best?.path ?? null;\n}\nfunction getCodexConversation(sessionId, offset = 0, limit = 200) {\n const filePath = findCodexRolloutById(sessionId);\n if (!filePath || !fs.existsSync(filePath)) {\n return [];\n }\n try {\n const { messages } = parseCodexRollout(readBoundedRolloutText(filePath));\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[codex] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCodexProjects() {\n const files = collectRolloutFiles();\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of files) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n let prefix;\n try {\n prefix = readPrefix$3(filePath);\n } catch {\n continue;\n }\n const nlIdx = prefix.indexOf(\"\\n\");\n const firstLine = nlIdx === -1 ? prefix : prefix.slice(0, nlIdx);\n const meta = parseCodexMeta(firstLine);\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.startedAt || stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: meta.id,\n messageCount: Math.max(1, Math.round(stat.size / APPROX_BYTES_PER_MESSAGE)),\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"codex\",\n summary: \"\",\n title: cleanTitle$2(firstUserPrompt(prefix))\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$5(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 readBoundedRolloutText(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$2) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$2;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$2);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$2, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction cleanTitle$2(prompt) {\n const firstLine = prompt.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!firstLine) {\n return \"Untitled Session\";\n }\n return firstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;\n}\nfunction codexSessionsDirs() {\n const home = homedir();\n return [path.join(home, \".codex\", \"sessions\"), path.join(home, \".codex\", \"archived_sessions\")];\n}\nfunction collectRolloutFiles() {\n const out = [];\n const walk = (dir) => {\n let entries;\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n walk(full);\n } else if (entry.name.startsWith(\"rollout-\") && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n }\n }\n };\n for (const root of codexSessionsDirs()) {\n walk(root);\n }\n return out;\n}\nfunction firstUserPrompt(prefixText) {\n for (const line of prefixText.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.includes('\"type\":\"message\"') || !trimmed.includes('\"role\":\"user\"')) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const text = (entry.payload?.content ?? []).filter((c) => c.type === \"input_text\" && typeof c.text === \"string\").map((c) => c.text ?? \"\").join(\"\\n\").trim();\n if (text && !SYNTHETIC_PROMPT_PREFIXES.some((p) => text.startsWith(p))) {\n return text;\n }\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction readPrefix$3(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(LIST_PREFIX_BYTES);\n const bytesRead = fs.readSync(fd, buf, 0, LIST_PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, bytesRead);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash$5(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst AMP_THREADS = path.join(homedir(), \".local\", \"share\", \"amp\", \"threads\");\nconst MAX_FILE_BYTES = 64 * 1024 * 1024;\nconst THREAD_FILE_RE = /^T-(.+)\\.json$/;\nconst SESSION_ID_RE$1 = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveAmpSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectThreadFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n const cwd = projectCwd(doc);\n if (id && cwd) {\n out.push({ cwd, id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getAmpConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return [];\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n if (!fs.existsSync(filePath)) {\n return [];\n }\n try {\n const doc = readThreadDoc(filePath);\n if (!doc) {\n return [];\n }\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const messages = [];\n let idx = 0;\n for (const raw of rawMessages) {\n const msg = ampMessageToConversationMessage(raw, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[amp] Failed to read conversation:\", err);\n return [];\n }\n}\nfunction listAmpProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectThreadFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n if (!id) {\n continue;\n }\n const cwd = projectCwd(doc) || id;\n const modified = lastModified(doc, stat);\n const created = typeof doc.created === \"string\" && doc.created ? doc.created : stat.birthtime.toISOString();\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const session = {\n created,\n gitBranch: \"\",\n id,\n messageCount: rawMessages.length,\n modified,\n projectPath: cwd,\n source: \"amp\",\n summary: \"\",\n title: cleanTitle$1(typeof doc.title === \"string\" ? doc.title : \"\")\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$4(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\") || cwd,\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 resolveAmpSessionFile(sessionId) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return null;\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n return fs.existsSync(filePath) ? filePath : null;\n}\nfunction ampBlockToPart(block) {\n switch (block.type) {\n case \"text\":\n return { content: typeof block.text === \"string\" ? block.text : \"\", type: \"text\" };\n case \"thinking\":\n return {\n content: typeof block.thinking === \"string\" ? block.thinking : \"\",\n type: \"thinking\"\n };\n case \"tool_result\": {\n const output = extractToolResultText(block.content);\n return {\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: typeof block.tool_use_id === \"string\" ? block.tool_use_id : \"\",\n type: \"tool_result\"\n };\n }\n case \"tool_use\":\n return {\n id: typeof block.id === \"string\" ? block.id : \"\",\n input: isRecord$2(block.input) ? block.input : {},\n toolName: typeof block.name === \"string\" ? block.name : \"tool\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction ampMessageToConversationMessage(raw, index) {\n if (!isRecord$2(raw)) {\n return null;\n }\n const role = raw.role;\n if (role !== \"user\" && role !== \"assistant\") {\n return null;\n }\n const parts = contentToParts(raw.content);\n if (parts.length === 0) {\n return null;\n }\n const msgRole = role === \"user\" ? \"user\" : \"assistant\";\n return {\n id: `amp-${msgRole}-${index}`,\n parts,\n role: msgRole,\n timestamp: \"\"\n };\n}\nfunction cleanTitle$1(raw) {\n const first = raw.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectThreadFiles() {\n let entries;\n try {\n entries = fs.readdirSync(AMP_THREADS, { withFileTypes: true });\n } catch {\n return [];\n }\n const files = [];\n for (const entry of entries) {\n if (!entry.isFile() || !THREAD_FILE_RE.test(entry.name)) {\n continue;\n }\n const full = path.join(AMP_THREADS, entry.name);\n try {\n const stat = fs.statSync(full);\n files.push({ mtime: stat.mtimeMs, path: full });\n } catch {\n }\n }\n files.sort((a, b) => b.mtime - a.mtime);\n return files.map((f) => f.path);\n}\nfunction contentToParts(content) {\n if (typeof content === \"string\" && content) {\n return [{ content, type: \"text\" }];\n }\n if (!Array.isArray(content)) {\n return [];\n }\n const parts = [];\n for (const item of content) {\n if (!isRecord$2(item)) {\n continue;\n }\n const part = ampBlockToPart(item);\n if (part) {\n parts.push(part);\n }\n }\n return parts;\n}\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (!Array.isArray(content)) {\n return \"\";\n }\n return content.filter((c) => isRecord$2(c) && c.type === \"text\").map((c) => typeof c.text === \"string\" ? c.text : \"\").join(\"\\n\");\n}\nfunction isRecord$2(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction lastModified(doc, stat) {\n if (isRecord$2(doc.meta)) {\n const traces = doc.meta.traces;\n if (Array.isArray(traces) && traces.length > 0) {\n const last = traces[traces.length - 1];\n if (isRecord$2(last)) {\n const et = last.endTime;\n if (typeof et === \"string\" && et) {\n return et;\n }\n if (typeof et === \"number\" && et > 0) {\n return new Date(et).toISOString();\n }\n }\n }\n }\n return stat.mtime.toISOString();\n}\nfunction projectCwd(doc) {\n if (isRecord$2(doc.env) && isRecord$2(doc.env.initial)) {\n const trees = doc.env.initial.trees;\n if (Array.isArray(trees) && trees.length > 0 && isRecord$2(trees[0])) {\n const dn = trees[0].displayName;\n if (typeof dn === \"string\" && dn) {\n return dn;\n }\n }\n }\n return \"\";\n}\nfunction readThreadDoc(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_FILE_BYTES) {\n return null;\n }\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n return isRecord$2(parsed) ? parsed : null;\n } catch {\n return null;\n }\n}\nfunction shortHash$4(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction threadId(filePath, doc) {\n const m = THREAD_FILE_RE.exec(path.basename(filePath));\n if (m?.[1]) {\n return m[1];\n }\n if (typeof doc.id === \"string\" && doc.id) {\n return doc.id;\n }\n return \"\";\n}\nconst PREFIX_BYTES$2 = 64 * 1024;\nconst MAX_FULL_READ_BYTES$1 = 16 * 1024 * 1024;\nconst COPILOT_SESSION_STATE = path.join(homedir(), \".copilot\", \"session-state\");\nconst SESSION_ID_RE = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveCopilotSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectCopilotFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta$1(readPrefix$2(filePath), filePath);\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getCopilotConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return [];\n }\n const filePath = resolveCopilotSessionFile(sessionId);\n if (!filePath) {\n return [];\n }\n try {\n const text = readBounded$1(filePath);\n const messages = parseCopilotText(text);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[copilot] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCopilotProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectCopilotFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const prefix = safeReadPrefix(filePath);\n if (!prefix) {\n continue;\n }\n const meta = readMeta$1(prefix, filePath);\n if (!meta) {\n continue;\n }\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"copilot\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$3(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 resolveCopilotSessionFile(sessionId) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return null;\n }\n for (const filePath of collectCopilotFiles()) {\n if (sessionIdFromFilePath(filePath) === sessionId) {\n return filePath;\n }\n }\n return null;\n}\nfunction collectCopilotFiles() {\n const out = [];\n let entries;\n try {\n entries = fs.readdirSync(COPILOT_SESSION_STATE, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n const full = path.join(COPILOT_SESSION_STATE, entry.name);\n if (entry.isFile() && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n } else if (entry.isDirectory()) {\n const eventsPath = path.join(full, \"events.jsonl\");\n try {\n fs.statSync(eventsPath);\n out.push(eventsPath);\n } catch {\n }\n }\n }\n return out;\n}\nfunction copilotEventToMessage(entry, pendingToolUseId) {\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const ts = typeof entry.timestamp === \"string\" ? entry.timestamp : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"user.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n if (!content) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-user-${ts}`;\n return {\n id,\n parts: [{ content, type: \"text\" }],\n role: \"user\",\n timestamp: ts\n };\n }\n if (type === \"assistant.reasoning\") {\n const text = typeof data.text === \"string\" ? data.text : \"\";\n if (!text) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-reasoning-${ts}`;\n return {\n id,\n parts: [{ content: text, type: \"thinking\" }],\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"assistant.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n const parts = [];\n const reasoningText2 = typeof data.reasoningText === \"string\" ? data.reasoningText : \"\";\n if (reasoningText2) {\n parts.push({ content: reasoningText2, type: \"thinking\" });\n }\n if (content) {\n parts.push({ content, type: \"text\" });\n }\n if (Array.isArray(data.toolRequests)) {\n for (const req of data.toolRequests) {\n if (!isRecord$1(req)) {\n continue;\n }\n const toolId = typeof req.toolCallId === \"string\" ? req.toolCallId : `copilot-tool-${ts}`;\n pendingToolUseId.value = toolId;\n let input = {};\n if (isRecord$1(req.arguments)) {\n input = req.arguments;\n } else if (typeof req.arguments === \"string\") {\n try {\n const parsed = JSON.parse(req.arguments);\n if (isRecord$1(parsed)) {\n input = parsed;\n }\n } catch {\n }\n }\n parts.push({\n id: toolId,\n input,\n toolName: typeof req.name === \"string\" ? req.name : \"tool\",\n type: \"tool_use\"\n });\n }\n }\n if (parts.length === 0) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-assistant-${ts}`;\n return {\n id,\n parts,\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"tool.execution_complete\") {\n const rawResult = data.result;\n const result = typeof rawResult === \"string\" ? rawResult : JSON.stringify(rawResult ?? \"\");\n const isError = data.isError === true || data.success === false;\n const toolCallId = typeof data.toolCallId === \"string\" ? data.toolCallId : pendingToolUseId.value;\n const toolUseId = toolCallId || pendingToolUseId.value || \"unknown\";\n const id = typeof data.id === \"string\" ? data.id : `copilot-tool-result-${ts}`;\n return {\n id,\n parts: [\n {\n isError,\n output: result.slice(0, 2e3),\n toolUseId,\n type: \"tool_result\"\n }\n ],\n role: \"system\",\n timestamp: ts\n };\n }\n return null;\n}\nfunction isRecord$1(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction parseCopilotText(text) {\n const messages = [];\n const pendingToolUseId = { value: \"\" };\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const msg = copilotEventToMessage(entry, pendingToolUseId);\n if (msg) {\n messages.push(msg);\n if (msg.parts[0]?.type === \"tool_result\") {\n pendingToolUseId.value = \"\";\n }\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readBounded$1(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$1) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$2(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$1;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$1);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$1, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readMeta$1(prefix, filePath) {\n let cwd = \"\";\n let gitBranch = \"\";\n let title = \"\";\n const id = sessionIdFromFilePath(filePath);\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"session.start\") {\n const context = isRecord$1(data.context) ? data.context : data;\n if (!cwd && typeof context.cwd === \"string\") {\n cwd = context.cwd;\n }\n if (!gitBranch && typeof context.branch === \"string\") {\n gitBranch = context.branch;\n }\n }\n if (!title && type === \"user.message\" && typeof data.content === \"string\") {\n title = data.content.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n if (cwd && title) {\n break;\n }\n }\n return cwd ? { cwd, gitBranch, id, title } : null;\n}\nfunction readPrefix$2(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$2);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$2, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction safeReadPrefix(filePath) {\n try {\n return readPrefix$2(filePath);\n } catch {\n return \"\";\n }\n}\nfunction sessionIdFromFilePath(filePath) {\n const base = path.basename(filePath);\n if (base === \"events.jsonl\") {\n return path.basename(path.dirname(filePath));\n }\n return base.replace(/\\.jsonl$/, \"\");\n}\nfunction shortHash$3(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CURSOR_PROJECTS = path.join(homedir(), \".cursor\", \"projects\");\nconst PREFIX_BYTES$1 = 64 * 1024;\nconst MAX_FULL_READ_BYTES = 16 * 1024 * 1024;\nfunction detectActiveCursorSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n out.push({\n cwd: decodeCursorProjectDir(encodedDir),\n id,\n startedAt: stat.birthtimeMs\n });\n } catch {\n }\n }\n return out;\n}\nfunction getCursorConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return [];\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n if (!found) {\n return [];\n }\n try {\n const messages = parseTranscriptFile(found.filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[cursor] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCursorProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n const cwd = decodeCursorProjectDir(encodedDir);\n const title = extractTitle(filePath);\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id,\n messageCount: estimateMessageCount(filePath, stat),\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"cursor\",\n summary: \"\",\n title\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$2(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 resolveCursorSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return null;\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n return found ? found.filePath : null;\n}\nfunction collectTranscriptFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CURSOR_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const transcriptsDir = path.join(CURSOR_PROJECTS, dir.name, \"agent-transcripts\");\n let entries;\n try {\n entries = fs.readdirSync(transcriptsDir, { withFileTypes: true });\n } catch {\n continue;\n }\n const jsonlStems = /* @__PURE__ */ new Set();\n for (const entry of entries) {\n if (!entry.isFile()) {\n continue;\n }\n if (entry.name.endsWith(\".jsonl\")) {\n jsonlStems.add(entry.name.slice(0, -6));\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.endsWith(\".txt\")) {\n continue;\n }\n const stem = entry.name.slice(0, -4);\n if (!jsonlStems.has(stem)) {\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n }\n return out;\n}\nfunction decodeCursorProjectDir(encoded) {\n if (encoded.includes(\"%2F\") || encoded.includes(\"%2f\")) {\n try {\n const decoded = decodeURIComponent(encoded.replace(/%2f/gi, \"/\"));\n if (decoded.startsWith(\"/\")) {\n return decoded;\n }\n } catch {\n }\n }\n if (encoded.startsWith(\"-\")) {\n const candidate = encoded.replace(/-/g, \"/\");\n return candidate;\n }\n return encoded;\n}\nfunction estimateMessageCount(filePath, stat) {\n const ext = path.extname(filePath);\n const avgBytesPerLine = ext === \".txt\" ? 200 : 500;\n return Math.max(1, Math.round(stat.size / avgBytesPerLine));\n}\nfunction extractTitle(filePath) {\n try {\n const prefix = readPrefix$1(filePath);\n const ext = path.extname(filePath);\n if (ext === \".jsonl\") {\n return titleFromJsonl(prefix);\n }\n return titleFromTxt(prefix);\n } catch {\n return \"Untitled Session\";\n }\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction jsonlLineToMessage(entry, idx) {\n const role = resolveRole(entry);\n if (!role) {\n return null;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n return null;\n }\n const rawContent = messageField.content;\n if (rawContent === void 0 || rawContent === null) {\n return null;\n }\n const parts = [];\n if (typeof rawContent === \"string\") {\n if (!rawContent) {\n return null;\n }\n parts.push({ content: rawContent, type: \"text\" });\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (!isRecord(block)) {\n continue;\n }\n const blockType = strOf(block, \"type\");\n if (blockType === \"text\") {\n const text = strOf(block, \"text\");\n if (text) {\n parts.push({ content: text, type: \"text\" });\n }\n } else if (blockType === \"thinking\") {\n const thinking = strOf(block, \"thinking\");\n if (thinking) {\n parts.push({ content: thinking, type: \"thinking\" });\n }\n } else if (blockType === \"tool_use\") {\n const input = block.input;\n parts.push({\n id: strOf(block, \"id\"),\n input: isRecord(input) ? input : {},\n toolName: strOf(block, \"name\") || \"Unknown\",\n type: \"tool_use\"\n });\n } else if (blockType === \"tool_result\") {\n const resultContent = block.content;\n let output = \"\";\n if (typeof resultContent === \"string\") {\n output = resultContent;\n } else if (Array.isArray(resultContent)) {\n output = resultContent.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const t = c.text;\n return typeof t === \"string\" ? t : \"\";\n }).join(\"\\n\");\n }\n const isErr = block.is_error;\n parts.push({\n isError: typeof isErr === \"boolean\" ? isErr : false,\n output: output.slice(0, 2e3),\n toolUseId: strOf(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n } else {\n return null;\n }\n if (parts.length === 0) {\n return null;\n }\n const id = strOf(entry, \"id\") || strOf(entry, \"uuid\") || `cursor-${role}-${String(idx)}`;\n const timestamp = strOf(entry, \"timestamp\") || strOf(entry, \"createdAt\") || \"\";\n return { id, parts, role, timestamp };\n}\nfunction jsonlToMessages(text) {\n const messages = [];\n let idx = 0;\n for (const raw of text.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry)) {\n continue;\n }\n const msg = jsonlLineToMessage(entry, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n } catch {\n }\n }\n return messages;\n}\nfunction parseTranscriptFile(filePath) {\n const ext = path.extname(filePath);\n const text = readBounded(filePath);\n if (ext === \".jsonl\") {\n return jsonlToMessages(text);\n }\n return parseTxtTranscript(text);\n}\nfunction parseTxtTranscript(text) {\n const messages = [];\n let currentRole = null;\n const currentLines = [];\n let idx = 0;\n const flush = () => {\n if (!currentRole || currentLines.length === 0) {\n return;\n }\n const content = currentLines.join(\"\\n\").trim();\n if (content) {\n messages.push({\n id: `cursor-${currentRole}-${String(idx)}`,\n parts: [{ content, type: \"text\" }],\n role: currentRole,\n timestamp: \"\"\n });\n idx++;\n }\n currentLines.length = 0;\n };\n for (const line of text.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n flush();\n currentRole = \"user\";\n const rest = line.slice(5).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (line.startsWith(\"assistant:\")) {\n flush();\n currentRole = \"assistant\";\n const rest = line.slice(10).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (currentRole) {\n currentLines.push(line);\n }\n }\n flush();\n return messages;\n}\nfunction readBounded(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES, start);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readPrefix$1(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$1);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$1, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction resolveRole(entry) {\n const raw = strOf(entry, \"role\") || strOf(entry, \"type\");\n switch (raw.toLowerCase()) {\n case \"assistant\":\n case \"bot\":\n case \"model\":\n return \"assistant\";\n case \"human\":\n case \"user\":\n return \"user\";\n default:\n return null;\n }\n}\nfunction shortHash$2(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction strOf(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction titleFromJsonl(prefix) {\n for (const raw of prefix.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry) || resolveRole(entry) !== \"user\") {\n continue;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n continue;\n }\n const rawContent = messageField.content;\n let text = \"\";\n if (typeof rawContent === \"string\") {\n text = rawContent;\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (isRecord(block) && block.type === \"text\") {\n const t = block.text;\n if (typeof t === \"string\" && t) {\n text = t;\n break;\n }\n }\n }\n }\n if (text) {\n return truncateTitle(text);\n }\n } catch {\n }\n }\n return \"Untitled Session\";\n}\nfunction titleFromTxt(prefix) {\n for (const line of prefix.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n const text = line.slice(5).trim();\n if (text) {\n return truncateTitle(text);\n }\n }\n }\n return \"Untitled Session\";\n}\nfunction transcriptId(filePath) {\n const base = path.basename(filePath);\n const stem = base.endsWith(\".jsonl\") ? base.slice(0, -6) : base.endsWith(\".txt\") ? base.slice(0, -4) : null;\n if (!stem || !/^[A-Za-z0-9_.-]+$/.test(stem)) {\n return null;\n }\n return stem;\n}\nfunction truncateTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nconst MAX_GEMINI_FILE_BYTES = 64 * 1024 * 1024;\nconst GEMINI_TMP = path.join(homedir(), \".gemini\", \"tmp\");\nconst GEMINI_PROJECTS_JSON = path.join(homedir(), \".gemini\", \"projects.json\");\nfunction detectActiveGeminiSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const out = [];\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatFiles = collectChatFiles(hashDir);\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const record = readChatFile(chatFile);\n if (record) {\n out.push({\n cwd,\n id: record.sessionId,\n startedAt: new Date(record.startTime).getTime()\n });\n }\n } catch {\n }\n }\n const logsPath = path.join(hashDir, \"logs.json\");\n try {\n const stat = fs.statSync(logsPath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const entries = readLogsJson(logsPath);\n if (entries.length > 0) {\n const last = entries[entries.length - 1];\n if (last) {\n const alreadyAdded = out.some((o) => o.id === last.sessionId && o.cwd === cwd);\n if (!alreadyAdded) {\n out.push({\n cwd,\n id: last.sessionId,\n startedAt: new Date(entries[0]?.timestamp ?? last.timestamp).getTime()\n });\n }\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction getGeminiConversation(sessionId, offset = 0, limit = 200) {\n const projectDirs = collectProjectHashDirs();\n for (const hashDir of projectDirs) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile) {\n return conversationFromChatFile(chatFile, offset, limit);\n }\n }\n for (const hashDir of projectDirs) {\n const messages = conversationFromLogsJson(hashDir, sessionId);\n if (messages.length > 0) {\n if (offset === 0 && messages.length > limit) {\n return messages.slice(messages.length - limit);\n }\n return messages.slice(offset, offset + limit);\n }\n }\n return [];\n}\nfunction listGeminiProjects() {\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const byCwd = /* @__PURE__ */ new Map();\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatSessions = collectChatSessions(hashDir, cwd);\n if (chatSessions.length > 0) {\n for (const session of chatSessions) {\n appendToMap(byCwd, cwd, session);\n }\n continue;\n }\n const logSessions = sessionsFromLogsJson(hashDir, cwd);\n for (const session of logSessions) {\n appendToMap(byCwd, cwd, session);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n const isRawHash = /^[0-9a-f]{64}$/i.test(cwd);\n projects.push({\n fullPath: cwd,\n id: shortHash$1(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: isRawHash ? `Gemini (${cwd.slice(0, 8)})` : segments.slice(-2).join(\"/\"),\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 resolveGeminiSessionFile(sessionId) {\n for (const hashDir of collectProjectHashDirs()) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile !== null) {\n return chatFile;\n }\n }\n return null;\n}\nfunction appendToMap(map, key, value) {\n let bucket = map.get(key);\n if (!bucket) {\n bucket = [];\n map.set(key, bucket);\n }\n bucket.push(value);\n}\nfunction buildHashToCwdMap() {\n const map = /* @__PURE__ */ new Map();\n try {\n const raw = fs.readFileSync(GEMINI_PROJECTS_JSON, \"utf-8\");\n const data = JSON.parse(raw);\n for (const [slugOrHash, absolutePath] of Object.entries(data)) {\n map.set(slugOrHash, absolutePath);\n const computed = crypto.createHash(\"sha256\").update(absolutePath).digest(\"hex\");\n map.set(computed, absolutePath);\n }\n } catch {\n }\n return map;\n}\nfunction cleanTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectChatFiles(hashDir) {\n const chatsDir = path.join(hashDir, \"chats\");\n try {\n return fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => path.join(chatsDir, e.name));\n } catch {\n return [];\n }\n}\nfunction collectChatSessions(hashDir, cwd) {\n const chatFiles = collectChatFiles(hashDir);\n const sessions = [];\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n const record = readChatFile(chatFile);\n if (!record) {\n continue;\n }\n const userMessages = record.messages.filter((m) => m.type === \"user\");\n const firstUserMsg = userMessages[0];\n let title = \"Untitled Session\";\n if (firstUserMsg) {\n title = cleanTitle(extractTextFromContent(firstUserMsg.content));\n }\n sessions.push({\n created: record.startTime,\n gitBranch: \"\",\n id: record.sessionId,\n messageCount: record.messages.length,\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: record.summary ?? \"\",\n title\n });\n } catch {\n }\n }\n return sessions;\n}\nfunction collectProjectHashDirs() {\n try {\n return fs.readdirSync(GEMINI_TMP, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => path.join(GEMINI_TMP, e.name));\n } catch {\n return [];\n }\n}\nfunction conversationFromChatFile(chatFile, offset, limit) {\n try {\n const record = readChatFile(chatFile);\n if (!record) {\n return [];\n }\n const messages = record.messages.filter((m) => m.type === \"user\" || m.type === \"gemini\").map(messageRecordToMessage);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[gemini] Failed to read chat file:\", err);\n return [];\n }\n}\nfunction conversationFromLogsJson(hashDir, sessionId) {\n const logsPath = path.join(hashDir, \"logs.json\");\n const entries = readLogsJson(logsPath);\n return entries.filter((e) => e.sessionId === sessionId).map(\n (entry) => ({\n id: `${entry.sessionId}-${String(entry.messageId)}`,\n parts: [{ content: entry.message, type: \"text\" }],\n role: \"user\",\n timestamp: entry.timestamp\n })\n );\n}\nfunction extractTextFromContent(content) {\n if (typeof content === \"string\") {\n return content;\n }\n return content.filter((p) => \"text\" in p).map((p) => p.text).join(\" \");\n}\nfunction findChatFileForSession(hashDir, sessionId) {\n if (!sessionId) {\n return null;\n }\n const chatsDir = path.join(hashDir, \"chats\");\n let names;\n try {\n names = fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => e.name);\n } catch {\n return null;\n }\n const shortId = sessionId.slice(0, 8);\n names.sort((a, b) => Number(b.includes(shortId)) - Number(a.includes(shortId)));\n for (const name of names) {\n const full = path.join(chatsDir, name);\n if (readChatFile(full)?.sessionId === sessionId) {\n return full;\n }\n }\n return null;\n}\nfunction isGeminiLogEntry(v) {\n if (typeof v !== \"object\" || v === null) {\n return false;\n }\n const obj = v;\n return typeof obj.sessionId === \"string\" && typeof obj.messageId === \"number\" && typeof obj.message === \"string\" && typeof obj.timestamp === \"string\";\n}\nfunction messageRecordToMessage(record) {\n const role = record.type === \"user\" ? \"user\" : \"assistant\";\n const parts = [];\n if (record.type === \"gemini\" && record.thoughts) {\n for (const thought of record.thoughts) {\n parts.push({ content: thought.summary ?? \"\", type: \"thinking\" });\n }\n }\n const rawContent = record.content;\n const contentParts = typeof rawContent === \"string\" ? [{ text: rawContent }] : rawContent;\n for (const part of contentParts) {\n if (\"functionCall\" in part) {\n parts.push({\n id: part.functionCall.id ?? part.functionCall.name,\n input: part.functionCall.args,\n toolName: part.functionCall.name,\n type: \"tool_use\"\n });\n } else if (\"thought\" in part && part.thought === true) {\n parts.push({ content: part.text, type: \"thinking\" });\n } else if (\"text\" in part) {\n parts.push({ content: part.text, type: \"text\" });\n }\n }\n if (record.type === \"gemini\" && record.toolCalls) {\n for (const tc of record.toolCalls) {\n const alreadyInParts = parts.some((p) => p.type === \"tool_use\" && p.id === tc.id);\n if (!alreadyInParts) {\n parts.push({\n id: tc.id,\n input: tc.args,\n toolName: tc.name,\n type: \"tool_use\"\n });\n }\n }\n }\n return {\n id: record.id,\n parts,\n role,\n timestamp: record.timestamp\n };\n}\nfunction readChatFile(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_GEMINI_FILE_BYTES) {\n return null;\n }\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\nfunction readLogsJson(logsPath) {\n try {\n if (fs.statSync(logsPath).size > MAX_GEMINI_FILE_BYTES) {\n return [];\n }\n const parsed = JSON.parse(fs.readFileSync(logsPath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed.filter(isGeminiLogEntry) : [];\n } catch {\n return [];\n }\n}\nfunction sessionsFromLogsJson(hashDir, cwd) {\n const logsPath = path.join(hashDir, \"logs.json\");\n let stat;\n try {\n stat = fs.statSync(logsPath);\n } catch {\n return [];\n }\n const entries = readLogsJson(logsPath);\n if (entries.length === 0) {\n return [];\n }\n const bySession = /* @__PURE__ */ new Map();\n for (const entry of entries) {\n let bucket = bySession.get(entry.sessionId);\n if (!bucket) {\n bucket = [];\n bySession.set(entry.sessionId, bucket);\n }\n bucket.push(entry);\n }\n const sessions = [];\n for (const [sessionId, sessionEntries] of bySession) {\n const first = sessionEntries[0];\n const last = sessionEntries[sessionEntries.length - 1];\n sessions.push({\n created: first?.timestamp ?? stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount: sessionEntries.length,\n modified: last?.timestamp ?? stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: \"\",\n title: cleanTitle(first?.message ?? \"\")\n });\n }\n return sessions;\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction resolveOpenCodeDbPath() {\n const home = process.env.HOME || \"\";\n const candidates = [];\n if (process.env.XDG_DATA_HOME) {\n candidates.push(path.join(process.env.XDG_DATA_HOME, \"opencode\", \"opencode.db\"));\n }\n candidates.push(path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\"));\n if (process.platform === \"darwin\") {\n candidates.push(path.join(home, \"Library\", \"Application Support\", \"opencode\", \"opencode.db\"));\n }\n for (const candidate of candidates) {\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return candidates[0] ?? path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\");\n}\nconst QWEN_PROJECTS = path.join(homedir(), \".qwen\", \"projects\");\nconst PREFIX_BYTES = 64 * 1024;\nconst MAX_QWEN_FILE_BYTES = 16 * 1024 * 1024;\nconst SYSTEM_TAG_PREFIXES = [\n \"<command-name>\",\n \"<local-command\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction detectActiveQwenSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectQwenFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getQwenConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return [];\n }\n const filePath = collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`);\n if (!filePath) {\n return [];\n }\n try {\n const messages = readQwenMessages(filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[qwen] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listQwenProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectQwenFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.started || stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"qwen\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 resolveQwenSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return null;\n }\n return collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`) ?? null;\n}\nfunction collectQwenFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(QWEN_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const chatsDir = path.join(QWEN_PROJECTS, dir.name, \"chats\");\n try {\n for (const f of fs.readdirSync(chatsDir)) {\n if (f.endsWith(\".jsonl\")) {\n out.push(path.join(chatsDir, f));\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction qwenLineToMessage(entry) {\n const type = entry.type;\n if (type !== \"user\" && type !== \"assistant\") {\n return null;\n }\n const message = entry.message ?? {};\n const rawParts = Array.isArray(message.parts) ? message.parts : [];\n const parts = [];\n for (const raw of rawParts) {\n if (typeof raw !== \"object\" || raw === null) {\n continue;\n }\n const p = raw;\n if (p.functionCall && typeof p.functionCall === \"object\") {\n const fc = p.functionCall;\n const toolName = typeof fc.name === \"string\" ? fc.name : \"tool\";\n parts.push({\n id: typeof fc.id === \"string\" ? fc.id : toolName,\n input: fc.args ?? {},\n toolName,\n type: \"tool_use\"\n });\n } else if (p.thought === true && typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"thinking\" });\n } else if (typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"text\" });\n }\n }\n if (parts.length === 0 && typeof message.content === \"string\" && message.content) {\n parts.push({ content: message.content, type: \"text\" });\n }\n if (parts.length === 0) {\n return null;\n }\n return {\n id: typeof entry.uuid === \"string\" ? entry.uuid : `qwen-${type}`,\n parts,\n role: type === \"user\" ? \"user\" : \"assistant\",\n timestamp: typeof entry.timestamp === \"string\" ? entry.timestamp : \"\"\n };\n}\nfunction readMeta(prefix) {\n let cwd = \"\";\n let id = \"\";\n let gitBranch = \"\";\n let started = \"\";\n let title = \"\";\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!cwd && typeof entry.cwd === \"string\") {\n cwd = entry.cwd;\n }\n if (!id && typeof entry.sessionId === \"string\") {\n id = entry.sessionId;\n }\n if (!gitBranch && typeof entry.gitBranch === \"string\") {\n gitBranch = entry.gitBranch;\n }\n if (!started && typeof entry.timestamp === \"string\") {\n started = entry.timestamp;\n }\n if (!title && entry.type === \"user\") {\n const msg = entry.message;\n let text = typeof msg?.content === \"string\" ? msg.content : \"\";\n if (!text && Array.isArray(msg?.parts)) {\n text = msg.parts.map(\n (p) => p && typeof p === \"object\" && typeof p.text === \"string\" ? p.text : \"\"\n ).join(\" \").trim();\n }\n if (text && !SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n title = text.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n }\n }\n return id && cwd ? { cwd, gitBranch, id, started, title } : null;\n}\nfunction readPrefix(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readQwenMessages(filePath) {\n const messages = [];\n for (const line of readQwenTextBounded(filePath).split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const msg = qwenLineToMessage(JSON.parse(trimmed));\n if (msg) {\n messages.push(msg);\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readQwenTextBounded(filePath) {\n const size = fs.statSync(filePath).size;\n if (size <= MAX_QWEN_FILE_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(MAX_QWEN_FILE_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_QWEN_FILE_BYTES, size - MAX_QWEN_FILE_BYTES);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nexport {\n detectActiveGeminiSessions as a,\n detectActiveQwenSessions as b,\n detectActiveCursorSessions as c,\n detectActiveCodexSessions as d,\n detectActiveCopilotSessions as e,\n detectActiveAmpSessions as f,\n getCodexConversation as g,\n listGeminiProjects as h,\n getGeminiConversation as i,\n listQwenProjects as j,\n getQwenConversation as k,\n listCodexProjects as l,\n listCursorProjects as m,\n getCursorConversation as n,\n listCopilotProjects as o,\n getCopilotConversation as p,\n listAmpProjects as q,\n resolveOpenCodeDbPath as r,\n getAmpConversation as s,\n resolveQwenSessionFile as t,\n resolveGeminiSessionFile as u,\n resolveCursorSessionFile as v,\n resolveCopilotSessionFile as w,\n resolveAmpSessionFile as x,\n findCodexRolloutForCwd as y\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qwen-reader-DGfUbKaJ.js","sources":["../../../.svelte-kit/adapter-node/chunks/qwen-reader.js"],"sourcesContent":["import * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport { existsSync } from \"fs\";\nimport { homedir } from \"os\";\nimport * as path from \"path\";\nclass TurnBuilder {\n current = null;\n messages = [];\n /** Messages flushed so far (excludes the still-open run). */\n completed() {\n return this.messages;\n }\n flush() {\n if (this.current && this.current.parts.length > 0) {\n this.messages.push({\n id: `codex-${this.messages.length}`,\n parts: this.current.parts,\n role: this.current.role,\n timestamp: this.current.timestamp\n });\n }\n this.current = null;\n }\n push(role, part, timestamp) {\n const category = role === \"user\" ? \"user\" : part.type === \"tool_result\" ? \"system\" : \"assistant\";\n const messageRole = category === \"system\" ? \"system\" : role;\n if (this.current?.category !== category) {\n this.flush();\n this.current = { category, parts: [], role: messageRole, timestamp };\n }\n this.current.parts.push(part);\n }\n result() {\n this.flush();\n return this.messages;\n }\n}\nfunction parseCodexMeta(line) {\n try {\n const entry = JSON.parse(line);\n if (!isRecord$3(entry) || entry.type !== \"session_meta\" || !isRecord$3(entry.payload)) {\n return null;\n }\n const p = entry.payload;\n if (!str(p, \"id\") || !str(p, \"cwd\")) {\n return null;\n }\n return {\n cliVersion: str(p, \"cli_version\"),\n cwd: str(p, \"cwd\"),\n id: str(p, \"id\"),\n model: str(p, \"model\") || str(p, \"model_provider\"),\n startedAt: str(p, \"timestamp\") || str(entry, \"timestamp\")\n };\n } catch {\n return null;\n }\n}\nfunction parseCodexRollout(text) {\n const builder = new TurnBuilder();\n let meta = null;\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!isRecord$3(entry)) {\n continue;\n }\n const ts = str(entry, \"timestamp\");\n if (entry.type === \"session_meta\") {\n meta = parseCodexMeta(trimmed);\n continue;\n }\n if (entry.type !== \"response_item\" || !isRecord$3(entry.payload)) {\n continue;\n }\n const mapped = responseItemToPart(entry.payload);\n if (mapped) {\n builder.push(mapped.role, mapped.part, ts);\n }\n }\n return { messages: builder.result(), meta };\n}\nfunction isRecord$3(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction joinMessageText(content) {\n if (!Array.isArray(content)) {\n return typeof content === \"string\" ? content : \"\";\n }\n return content.filter((c) => isRecord$3(c)).filter((c) => c.type === \"input_text\" || c.type === \"output_text\" || c.type === \"text\").map((c) => str(c, \"text\")).join(\"\\n\").trim();\n}\nfunction parseToolInput(raw) {\n if (isRecord$3(raw)) {\n return raw;\n }\n if (typeof raw === \"string\") {\n try {\n const parsed = JSON.parse(raw);\n return isRecord$3(parsed) ? parsed : { raw };\n } catch {\n return { raw };\n }\n }\n return {};\n}\nfunction reasoningText(payload) {\n const summary = payload.summary;\n if (Array.isArray(summary) && summary.length > 0) {\n const text = summary.map((s) => typeof s === \"string\" ? s : isRecord$3(s) ? str(s, \"text\") : \"\").join(\"\\n\").trim();\n if (text) {\n return text;\n }\n }\n return typeof payload.content === \"string\" ? payload.content.trim() : \"\";\n}\nfunction responseItemToPart(p) {\n switch (p.type) {\n case \"custom_tool_call\":\n case \"function_call\": {\n const args = p.type === \"function_call\" ? p.arguments : p.input;\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(args),\n toolName: str(p, \"name\") || \"tool\",\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n }\n case \"custom_tool_call_output\":\n case \"function_call_output\":\n case \"tool_search_output\": {\n const output = typeof p.output === \"string\" ? p.output : JSON.stringify(p.output ?? \"\");\n return {\n part: {\n isError: /exit code:\\s*[1-9]/i.test(output),\n output: output.slice(0, 2e3),\n toolUseId: str(p, \"call_id\"),\n type: \"tool_result\"\n },\n role: \"assistant\"\n };\n }\n case \"message\": {\n if (p.role === \"developer\") {\n return null;\n }\n const content = joinMessageText(p.content);\n return content ? { part: { content, type: \"text\" }, role: p.role === \"user\" ? \"user\" : \"assistant\" } : null;\n }\n case \"reasoning\": {\n const think = reasoningText(p);\n return think ? { part: { content: think, type: \"thinking\" }, role: \"assistant\" } : null;\n }\n case \"tool_search_call\":\n case \"web_search_call\":\n return {\n part: {\n id: str(p, \"call_id\"),\n input: parseToolInput(p.action ?? p.query),\n toolName: str(p, \"type\"),\n type: \"tool_use\"\n },\n role: \"assistant\"\n };\n default:\n return null;\n }\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nconst LIST_PREFIX_BYTES = 256 * 1024;\nconst MAX_FULL_READ_BYTES$2 = 16 * 1024 * 1024;\nconst APPROX_BYTES_PER_MESSAGE = 3e3;\nconst SYNTHETIC_PROMPT_PREFIXES = [\"<environment_context>\", \"<user_instructions>\", \"<permissions\"];\nfunction detectActiveCodexSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction findCodexRolloutById(sessionId) {\n if (!/^[0-9a-f-]+$/i.test(sessionId)) {\n return null;\n }\n const suffix = `-${sessionId}.jsonl`;\n return collectRolloutFiles().find((p) => path.basename(p).endsWith(suffix)) ?? null;\n}\nfunction findCodexRolloutForCwd(cwd, sinceMs) {\n let best = null;\n for (const filePath of collectRolloutFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.birthtimeMs <= sinceMs) {\n continue;\n }\n const meta = parseCodexMeta(readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\");\n if (meta?.cwd === cwd && (!best || stat.birthtimeMs > best.birthtime)) {\n best = { birthtime: stat.birthtimeMs, path: filePath };\n }\n } catch {\n }\n }\n return best?.path ?? null;\n}\nfunction getCodexConversation(sessionId, offset = 0, limit = 200) {\n const filePath = findCodexRolloutById(sessionId);\n if (!filePath || !fs.existsSync(filePath)) {\n return [];\n }\n try {\n const { messages } = parseCodexRollout(readBoundedRolloutText(filePath));\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[codex] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCodexProjects() {\n const files = collectRolloutFiles();\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of files) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n let prefix;\n try {\n prefix = readPrefix$3(filePath);\n } catch {\n continue;\n }\n const nlIdx = prefix.indexOf(\"\\n\");\n const firstLine = nlIdx === -1 ? prefix : prefix.slice(0, nlIdx);\n const meta = parseCodexMeta(firstLine);\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.startedAt || stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: meta.id,\n messageCount: Math.max(1, Math.round(stat.size / APPROX_BYTES_PER_MESSAGE)),\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"codex\",\n summary: \"\",\n title: cleanTitle$2(firstUserPrompt(prefix))\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$5(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 readBoundedRolloutText(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$2) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$3(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$2;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$2);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$2, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction cleanTitle$2(prompt) {\n const firstLine = prompt.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!firstLine) {\n return \"Untitled Session\";\n }\n return firstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;\n}\nfunction codexSessionsDirs() {\n const home = homedir();\n return [path.join(home, \".codex\", \"sessions\"), path.join(home, \".codex\", \"archived_sessions\")];\n}\nfunction collectRolloutFiles() {\n const out = [];\n const walk = (dir) => {\n let entries;\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n walk(full);\n } else if (entry.name.startsWith(\"rollout-\") && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n }\n }\n };\n for (const root of codexSessionsDirs()) {\n walk(root);\n }\n return out;\n}\nfunction firstUserPrompt(prefixText) {\n for (const line of prefixText.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.includes('\"type\":\"message\"') || !trimmed.includes('\"role\":\"user\"')) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const text = (entry.payload?.content ?? []).filter((c) => c.type === \"input_text\" && typeof c.text === \"string\").map((c) => c.text ?? \"\").join(\"\\n\").trim();\n if (text && !SYNTHETIC_PROMPT_PREFIXES.some((p) => text.startsWith(p))) {\n return text;\n }\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction readPrefix$3(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(LIST_PREFIX_BYTES);\n const bytesRead = fs.readSync(fd, buf, 0, LIST_PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, bytesRead);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash$5(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst AMP_THREADS = path.join(homedir(), \".local\", \"share\", \"amp\", \"threads\");\nconst MAX_FILE_BYTES = 64 * 1024 * 1024;\nconst THREAD_FILE_RE = /^T-(.+)\\.json$/;\nconst SESSION_ID_RE$1 = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveAmpSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectThreadFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n const cwd = projectCwd(doc);\n if (id && cwd) {\n out.push({ cwd, id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getAmpConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return [];\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n if (!fs.existsSync(filePath)) {\n return [];\n }\n try {\n const doc = readThreadDoc(filePath);\n if (!doc) {\n return [];\n }\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const messages = [];\n let idx = 0;\n for (const raw of rawMessages) {\n const msg = ampMessageToConversationMessage(raw, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[amp] Failed to read conversation:\", err);\n return [];\n }\n}\nfunction listAmpProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectThreadFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const doc = readThreadDoc(filePath);\n if (!doc) {\n continue;\n }\n const id = threadId(filePath, doc);\n if (!id) {\n continue;\n }\n const cwd = projectCwd(doc) || id;\n const modified = lastModified(doc, stat);\n const created = typeof doc.created === \"string\" && doc.created ? doc.created : stat.birthtime.toISOString();\n const rawMessages = Array.isArray(doc.messages) ? doc.messages : [];\n const session = {\n created,\n gitBranch: \"\",\n id,\n messageCount: rawMessages.length,\n modified,\n projectPath: cwd,\n source: \"amp\",\n summary: \"\",\n title: cleanTitle$1(typeof doc.title === \"string\" ? doc.title : \"\")\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$4(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\") || cwd,\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 resolveAmpSessionFile(sessionId) {\n if (!SESSION_ID_RE$1.test(sessionId)) {\n return null;\n }\n const filePath = path.join(AMP_THREADS, `T-${sessionId}.json`);\n return fs.existsSync(filePath) ? filePath : null;\n}\nfunction ampBlockToPart(block) {\n switch (block.type) {\n case \"text\":\n return { content: typeof block.text === \"string\" ? block.text : \"\", type: \"text\" };\n case \"thinking\":\n return {\n content: typeof block.thinking === \"string\" ? block.thinking : \"\",\n type: \"thinking\"\n };\n case \"tool_result\": {\n const output = extractToolResultText(block.content);\n return {\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: typeof block.tool_use_id === \"string\" ? block.tool_use_id : \"\",\n type: \"tool_result\"\n };\n }\n case \"tool_use\":\n return {\n id: typeof block.id === \"string\" ? block.id : \"\",\n input: isRecord$2(block.input) ? block.input : {},\n toolName: typeof block.name === \"string\" ? block.name : \"tool\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction ampMessageToConversationMessage(raw, index) {\n if (!isRecord$2(raw)) {\n return null;\n }\n const role = raw.role;\n if (role !== \"user\" && role !== \"assistant\") {\n return null;\n }\n const parts = contentToParts(raw.content);\n if (parts.length === 0) {\n return null;\n }\n const msgRole = role === \"user\" ? \"user\" : \"assistant\";\n return {\n id: `amp-${msgRole}-${index}`,\n parts,\n role: msgRole,\n timestamp: \"\"\n };\n}\nfunction cleanTitle$1(raw) {\n const first = raw.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectThreadFiles() {\n let entries;\n try {\n entries = fs.readdirSync(AMP_THREADS, { withFileTypes: true });\n } catch {\n return [];\n }\n const files = [];\n for (const entry of entries) {\n if (!entry.isFile() || !THREAD_FILE_RE.test(entry.name)) {\n continue;\n }\n const full = path.join(AMP_THREADS, entry.name);\n try {\n const stat = fs.statSync(full);\n files.push({ mtime: stat.mtimeMs, path: full });\n } catch {\n }\n }\n files.sort((a, b) => b.mtime - a.mtime);\n return files.map((f) => f.path);\n}\nfunction contentToParts(content) {\n if (typeof content === \"string\" && content) {\n return [{ content, type: \"text\" }];\n }\n if (!Array.isArray(content)) {\n return [];\n }\n const parts = [];\n for (const item of content) {\n if (!isRecord$2(item)) {\n continue;\n }\n const part = ampBlockToPart(item);\n if (part) {\n parts.push(part);\n }\n }\n return parts;\n}\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (!Array.isArray(content)) {\n return \"\";\n }\n return content.filter((c) => isRecord$2(c) && c.type === \"text\").map((c) => typeof c.text === \"string\" ? c.text : \"\").join(\"\\n\");\n}\nfunction isRecord$2(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction lastModified(doc, stat) {\n if (isRecord$2(doc.meta)) {\n const traces = doc.meta.traces;\n if (Array.isArray(traces) && traces.length > 0) {\n const last = traces[traces.length - 1];\n if (isRecord$2(last)) {\n const et = last.endTime;\n if (typeof et === \"string\" && et) {\n return et;\n }\n if (typeof et === \"number\" && et > 0) {\n return new Date(et).toISOString();\n }\n }\n }\n }\n return stat.mtime.toISOString();\n}\nfunction projectCwd(doc) {\n if (isRecord$2(doc.env) && isRecord$2(doc.env.initial)) {\n const trees = doc.env.initial.trees;\n if (Array.isArray(trees) && trees.length > 0 && isRecord$2(trees[0])) {\n const dn = trees[0].displayName;\n if (typeof dn === \"string\" && dn) {\n return dn;\n }\n }\n }\n return \"\";\n}\nfunction readThreadDoc(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_FILE_BYTES) {\n return null;\n }\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n return isRecord$2(parsed) ? parsed : null;\n } catch {\n return null;\n }\n}\nfunction shortHash$4(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction threadId(filePath, doc) {\n const m = THREAD_FILE_RE.exec(path.basename(filePath));\n if (m?.[1]) {\n return m[1];\n }\n if (typeof doc.id === \"string\" && doc.id) {\n return doc.id;\n }\n return \"\";\n}\nconst PREFIX_BYTES$2 = 64 * 1024;\nconst MAX_FULL_READ_BYTES$1 = 16 * 1024 * 1024;\nconst COPILOT_SESSION_STATE = path.join(homedir(), \".copilot\", \"session-state\");\nconst SESSION_ID_RE = /^[A-Za-z0-9_.-]+$/;\nfunction detectActiveCopilotSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectCopilotFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta$1(readPrefix$2(filePath), filePath);\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getCopilotConversation(sessionId, offset = 0, limit = 200) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return [];\n }\n const filePath = resolveCopilotSessionFile(sessionId);\n if (!filePath) {\n return [];\n }\n try {\n const text = readBounded$1(filePath);\n const messages = parseCopilotText(text);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[copilot] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCopilotProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectCopilotFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const prefix = safeReadPrefix(filePath);\n if (!prefix) {\n continue;\n }\n const meta = readMeta$1(prefix, filePath);\n if (!meta) {\n continue;\n }\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"copilot\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$3(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 resolveCopilotSessionFile(sessionId) {\n if (!SESSION_ID_RE.test(sessionId)) {\n return null;\n }\n for (const filePath of collectCopilotFiles()) {\n if (sessionIdFromFilePath(filePath) === sessionId) {\n return filePath;\n }\n }\n return null;\n}\nfunction collectCopilotFiles() {\n const out = [];\n let entries;\n try {\n entries = fs.readdirSync(COPILOT_SESSION_STATE, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n const full = path.join(COPILOT_SESSION_STATE, entry.name);\n if (entry.isFile() && entry.name.endsWith(\".jsonl\")) {\n out.push(full);\n } else if (entry.isDirectory()) {\n const eventsPath = path.join(full, \"events.jsonl\");\n try {\n fs.statSync(eventsPath);\n out.push(eventsPath);\n } catch {\n }\n }\n }\n return out;\n}\nfunction copilotEventToMessage(entry, pendingToolUseId) {\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const ts = typeof entry.timestamp === \"string\" ? entry.timestamp : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"user.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n if (!content) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-user-${ts}`;\n return {\n id,\n parts: [{ content, type: \"text\" }],\n role: \"user\",\n timestamp: ts\n };\n }\n if (type === \"assistant.reasoning\") {\n const text = typeof data.text === \"string\" ? data.text : \"\";\n if (!text) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-reasoning-${ts}`;\n return {\n id,\n parts: [{ content: text, type: \"thinking\" }],\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"assistant.message\") {\n const content = typeof data.content === \"string\" ? data.content : \"\";\n const parts = [];\n const reasoningText2 = typeof data.reasoningText === \"string\" ? data.reasoningText : \"\";\n if (reasoningText2) {\n parts.push({ content: reasoningText2, type: \"thinking\" });\n }\n if (content) {\n parts.push({ content, type: \"text\" });\n }\n if (Array.isArray(data.toolRequests)) {\n for (const req of data.toolRequests) {\n if (!isRecord$1(req)) {\n continue;\n }\n const toolId = typeof req.toolCallId === \"string\" ? req.toolCallId : `copilot-tool-${ts}`;\n pendingToolUseId.value = toolId;\n let input = {};\n if (isRecord$1(req.arguments)) {\n input = req.arguments;\n } else if (typeof req.arguments === \"string\") {\n try {\n const parsed = JSON.parse(req.arguments);\n if (isRecord$1(parsed)) {\n input = parsed;\n }\n } catch {\n }\n }\n parts.push({\n id: toolId,\n input,\n toolName: typeof req.name === \"string\" ? req.name : \"tool\",\n type: \"tool_use\"\n });\n }\n }\n if (parts.length === 0) {\n return null;\n }\n const id = typeof data.id === \"string\" ? data.id : `copilot-assistant-${ts}`;\n return {\n id,\n parts,\n role: \"assistant\",\n timestamp: ts\n };\n }\n if (type === \"tool.execution_complete\") {\n const rawResult = data.result;\n const result = typeof rawResult === \"string\" ? rawResult : JSON.stringify(rawResult ?? \"\");\n const isError = data.isError === true || data.success === false;\n const toolCallId = typeof data.toolCallId === \"string\" ? data.toolCallId : pendingToolUseId.value;\n const toolUseId = toolCallId || pendingToolUseId.value || \"unknown\";\n const id = typeof data.id === \"string\" ? data.id : `copilot-tool-result-${ts}`;\n return {\n id,\n parts: [\n {\n isError,\n output: result.slice(0, 2e3),\n toolUseId,\n type: \"tool_result\"\n }\n ],\n role: \"system\",\n timestamp: ts\n };\n }\n return null;\n}\nfunction isRecord$1(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction parseCopilotText(text) {\n const messages = [];\n const pendingToolUseId = { value: \"\" };\n for (const line of text.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n const msg = copilotEventToMessage(entry, pendingToolUseId);\n if (msg) {\n messages.push(msg);\n if (msg.parts[0]?.type === \"tool_result\") {\n pendingToolUseId.value = \"\";\n }\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readBounded$1(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES$1) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const head = readPrefix$2(filePath).split(\"\\n\")[0] ?? \"\";\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES$1;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES$1);\n const bytesRead = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES$1, start);\n const tail = buf.toString(\"utf-8\", 0, bytesRead);\n return `${head}\n${tail.slice(tail.indexOf(\"\\n\") + 1)}`;\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readMeta$1(prefix, filePath) {\n let cwd = \"\";\n let gitBranch = \"\";\n let title = \"\";\n const id = sessionIdFromFilePath(filePath);\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n const type = typeof entry.type === \"string\" ? entry.type : \"\";\n const data = isRecord$1(entry.data) ? entry.data : entry;\n if (type === \"session.start\") {\n const context = isRecord$1(data.context) ? data.context : data;\n if (!cwd && typeof context.cwd === \"string\") {\n cwd = context.cwd;\n }\n if (!gitBranch && typeof context.branch === \"string\") {\n gitBranch = context.branch;\n }\n }\n if (!title && type === \"user.message\" && typeof data.content === \"string\") {\n title = data.content.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n if (cwd && title) {\n break;\n }\n }\n return cwd ? { cwd, gitBranch, id, title } : null;\n}\nfunction readPrefix$2(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$2);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$2, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction safeReadPrefix(filePath) {\n try {\n return readPrefix$2(filePath);\n } catch {\n return \"\";\n }\n}\nfunction sessionIdFromFilePath(filePath) {\n const base = path.basename(filePath);\n if (base === \"events.jsonl\") {\n return path.basename(path.dirname(filePath));\n }\n return base.replace(/\\.jsonl$/, \"\");\n}\nfunction shortHash$3(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CURSOR_PROJECTS = path.join(homedir(), \".cursor\", \"projects\");\nconst PREFIX_BYTES$1 = 64 * 1024;\nconst MAX_FULL_READ_BYTES = 16 * 1024 * 1024;\nfunction detectActiveCursorSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n out.push({\n cwd: decodeCursorProjectDir(encodedDir),\n id,\n startedAt: stat.birthtimeMs\n });\n } catch {\n }\n }\n return out;\n}\nfunction getCursorConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return [];\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n if (!found) {\n return [];\n }\n try {\n const messages = parseTranscriptFile(found.filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[cursor] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listCursorProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const { encodedDir, filePath } of collectTranscriptFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const id = transcriptId(filePath);\n if (!id) {\n continue;\n }\n const cwd = decodeCursorProjectDir(encodedDir);\n const title = extractTitle(filePath);\n const session = {\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id,\n messageCount: estimateMessageCount(filePath, stat),\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"cursor\",\n summary: \"\",\n title\n };\n const bucket = byCwd.get(cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash$2(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 resolveCursorSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_.-]+$/.test(sessionId)) {\n return null;\n }\n const found = collectTranscriptFiles().find((e) => transcriptId(e.filePath) === sessionId);\n return found ? found.filePath : null;\n}\nfunction collectTranscriptFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CURSOR_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const transcriptsDir = path.join(CURSOR_PROJECTS, dir.name, \"agent-transcripts\");\n let entries;\n try {\n entries = fs.readdirSync(transcriptsDir, { withFileTypes: true });\n } catch {\n continue;\n }\n const jsonlStems = /* @__PURE__ */ new Set();\n for (const entry of entries) {\n if (!entry.isFile()) {\n continue;\n }\n if (entry.name.endsWith(\".jsonl\")) {\n jsonlStems.add(entry.name.slice(0, -6));\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.endsWith(\".txt\")) {\n continue;\n }\n const stem = entry.name.slice(0, -4);\n if (!jsonlStems.has(stem)) {\n out.push({ encodedDir: dir.name, filePath: path.join(transcriptsDir, entry.name) });\n }\n }\n }\n return out;\n}\nfunction decodeCursorProjectDir(encoded) {\n if (encoded.includes(\"%2F\") || encoded.includes(\"%2f\")) {\n try {\n const decoded = decodeURIComponent(encoded.replace(/%2f/gi, \"/\"));\n if (decoded.startsWith(\"/\")) {\n return decoded;\n }\n } catch {\n }\n }\n if (encoded.startsWith(\"-\")) {\n const candidate = encoded.replace(/-/g, \"/\");\n return candidate;\n }\n return encoded;\n}\nfunction estimateMessageCount(filePath, stat) {\n const ext = path.extname(filePath);\n const avgBytesPerLine = ext === \".txt\" ? 200 : 500;\n return Math.max(1, Math.round(stat.size / avgBytesPerLine));\n}\nfunction extractTitle(filePath) {\n try {\n const prefix = readPrefix$1(filePath);\n const ext = path.extname(filePath);\n if (ext === \".jsonl\") {\n return titleFromJsonl(prefix);\n }\n return titleFromTxt(prefix);\n } catch {\n return \"Untitled Session\";\n }\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction jsonlLineToMessage(entry, idx) {\n const role = resolveRole(entry);\n if (!role) {\n return null;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n return null;\n }\n const rawContent = messageField.content;\n if (rawContent === void 0 || rawContent === null) {\n return null;\n }\n const parts = [];\n if (typeof rawContent === \"string\") {\n if (!rawContent) {\n return null;\n }\n parts.push({ content: rawContent, type: \"text\" });\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (!isRecord(block)) {\n continue;\n }\n const blockType = strOf(block, \"type\");\n if (blockType === \"text\") {\n const text = strOf(block, \"text\");\n if (text) {\n parts.push({ content: text, type: \"text\" });\n }\n } else if (blockType === \"thinking\") {\n const thinking = strOf(block, \"thinking\");\n if (thinking) {\n parts.push({ content: thinking, type: \"thinking\" });\n }\n } else if (blockType === \"tool_use\") {\n const input = block.input;\n parts.push({\n id: strOf(block, \"id\"),\n input: isRecord(input) ? input : {},\n toolName: strOf(block, \"name\") || \"Unknown\",\n type: \"tool_use\"\n });\n } else if (blockType === \"tool_result\") {\n const resultContent = block.content;\n let output = \"\";\n if (typeof resultContent === \"string\") {\n output = resultContent;\n } else if (Array.isArray(resultContent)) {\n output = resultContent.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const t = c.text;\n return typeof t === \"string\" ? t : \"\";\n }).join(\"\\n\");\n }\n const isErr = block.is_error;\n parts.push({\n isError: typeof isErr === \"boolean\" ? isErr : false,\n output: output.slice(0, 2e3),\n toolUseId: strOf(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n } else {\n return null;\n }\n if (parts.length === 0) {\n return null;\n }\n const id = strOf(entry, \"id\") || strOf(entry, \"uuid\") || `cursor-${role}-${String(idx)}`;\n const timestamp = strOf(entry, \"timestamp\") || strOf(entry, \"createdAt\") || \"\";\n return { id, parts, role, timestamp };\n}\nfunction jsonlToMessages(text) {\n const messages = [];\n let idx = 0;\n for (const raw of text.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry)) {\n continue;\n }\n const msg = jsonlLineToMessage(entry, idx);\n if (msg) {\n messages.push(msg);\n idx++;\n }\n } catch {\n }\n }\n return messages;\n}\nfunction parseTranscriptFile(filePath) {\n const ext = path.extname(filePath);\n const text = readBounded(filePath);\n if (ext === \".jsonl\") {\n return jsonlToMessages(text);\n }\n return parseTxtTranscript(text);\n}\nfunction parseTxtTranscript(text) {\n const messages = [];\n let currentRole = null;\n const currentLines = [];\n let idx = 0;\n const flush = () => {\n if (!currentRole || currentLines.length === 0) {\n return;\n }\n const content = currentLines.join(\"\\n\").trim();\n if (content) {\n messages.push({\n id: `cursor-${currentRole}-${String(idx)}`,\n parts: [{ content, type: \"text\" }],\n role: currentRole,\n timestamp: \"\"\n });\n idx++;\n }\n currentLines.length = 0;\n };\n for (const line of text.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n flush();\n currentRole = \"user\";\n const rest = line.slice(5).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (line.startsWith(\"assistant:\")) {\n flush();\n currentRole = \"assistant\";\n const rest = line.slice(10).trim();\n if (rest) {\n currentLines.push(rest);\n }\n } else if (currentRole) {\n currentLines.push(line);\n }\n }\n flush();\n return messages;\n}\nfunction readBounded(filePath) {\n const stat = fs.statSync(filePath);\n if (stat.size <= MAX_FULL_READ_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const start = stat.size - MAX_FULL_READ_BYTES;\n const buf = Buffer.alloc(MAX_FULL_READ_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_FULL_READ_BYTES, start);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readPrefix$1(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES$1);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES$1, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction resolveRole(entry) {\n const raw = strOf(entry, \"role\") || strOf(entry, \"type\");\n switch (raw.toLowerCase()) {\n case \"assistant\":\n case \"bot\":\n case \"model\":\n return \"assistant\";\n case \"human\":\n case \"user\":\n return \"user\";\n default:\n return null;\n }\n}\nfunction shortHash$2(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction strOf(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction titleFromJsonl(prefix) {\n for (const raw of prefix.split(\"\\n\")) {\n const trimmed = raw.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const entry = JSON.parse(trimmed);\n if (!isRecord(entry) || resolveRole(entry) !== \"user\") {\n continue;\n }\n const messageField = entry.message;\n if (!isRecord(messageField)) {\n continue;\n }\n const rawContent = messageField.content;\n let text = \"\";\n if (typeof rawContent === \"string\") {\n text = rawContent;\n } else if (Array.isArray(rawContent)) {\n for (const block of rawContent) {\n if (isRecord(block) && block.type === \"text\") {\n const t = block.text;\n if (typeof t === \"string\" && t) {\n text = t;\n break;\n }\n }\n }\n }\n if (text) {\n return truncateTitle(text);\n }\n } catch {\n }\n }\n return \"Untitled Session\";\n}\nfunction titleFromTxt(prefix) {\n for (const line of prefix.split(\"\\n\")) {\n if (line.startsWith(\"user:\")) {\n const text = line.slice(5).trim();\n if (text) {\n return truncateTitle(text);\n }\n }\n }\n return \"Untitled Session\";\n}\nfunction transcriptId(filePath) {\n const base = path.basename(filePath);\n const stem = base.endsWith(\".jsonl\") ? base.slice(0, -6) : base.endsWith(\".txt\") ? base.slice(0, -4) : null;\n if (!stem || !/^[A-Za-z0-9_.-]+$/.test(stem)) {\n return null;\n }\n return stem;\n}\nfunction truncateTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nconst MAX_GEMINI_FILE_BYTES = 64 * 1024 * 1024;\nconst GEMINI_TMP = path.join(homedir(), \".gemini\", \"tmp\");\nconst GEMINI_PROJECTS_JSON = path.join(homedir(), \".gemini\", \"projects.json\");\nfunction detectActiveGeminiSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const out = [];\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatFiles = collectChatFiles(hashDir);\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const record = readChatFile(chatFile);\n if (record) {\n out.push({\n cwd,\n id: record.sessionId,\n startedAt: new Date(record.startTime).getTime()\n });\n }\n } catch {\n }\n }\n const logsPath = path.join(hashDir, \"logs.json\");\n try {\n const stat = fs.statSync(logsPath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const entries = readLogsJson(logsPath);\n if (entries.length > 0) {\n const last = entries[entries.length - 1];\n if (last) {\n const alreadyAdded = out.some((o) => o.id === last.sessionId && o.cwd === cwd);\n if (!alreadyAdded) {\n out.push({\n cwd,\n id: last.sessionId,\n startedAt: new Date(entries[0]?.timestamp ?? last.timestamp).getTime()\n });\n }\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction getGeminiConversation(sessionId, offset = 0, limit = 200) {\n const projectDirs = collectProjectHashDirs();\n for (const hashDir of projectDirs) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile) {\n return conversationFromChatFile(chatFile, offset, limit);\n }\n }\n for (const hashDir of projectDirs) {\n const messages = conversationFromLogsJson(hashDir, sessionId);\n if (messages.length > 0) {\n if (offset === 0 && messages.length > limit) {\n return messages.slice(messages.length - limit);\n }\n return messages.slice(offset, offset + limit);\n }\n }\n return [];\n}\nfunction listGeminiProjects() {\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const byCwd = /* @__PURE__ */ new Map();\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatSessions = collectChatSessions(hashDir, cwd);\n if (chatSessions.length > 0) {\n for (const session of chatSessions) {\n appendToMap(byCwd, cwd, session);\n }\n continue;\n }\n const logSessions = sessionsFromLogsJson(hashDir, cwd);\n for (const session of logSessions) {\n appendToMap(byCwd, cwd, session);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n const isRawHash = /^[0-9a-f]{64}$/i.test(cwd);\n projects.push({\n fullPath: cwd,\n id: shortHash$1(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: isRawHash ? `Gemini (${cwd.slice(0, 8)})` : segments.slice(-2).join(\"/\"),\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 resolveGeminiSessionFile(sessionId) {\n for (const hashDir of collectProjectHashDirs()) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile !== null) {\n return chatFile;\n }\n }\n return null;\n}\nfunction appendToMap(map, key, value) {\n let bucket = map.get(key);\n if (!bucket) {\n bucket = [];\n map.set(key, bucket);\n }\n bucket.push(value);\n}\nfunction buildHashToCwdMap() {\n const map = /* @__PURE__ */ new Map();\n try {\n const raw = fs.readFileSync(GEMINI_PROJECTS_JSON, \"utf-8\");\n const data = JSON.parse(raw);\n for (const [slugOrHash, absolutePath] of Object.entries(data)) {\n map.set(slugOrHash, absolutePath);\n const computed = crypto.createHash(\"sha256\").update(absolutePath).digest(\"hex\");\n map.set(computed, absolutePath);\n }\n } catch {\n }\n return map;\n}\nfunction cleanTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectChatFiles(hashDir) {\n const chatsDir = path.join(hashDir, \"chats\");\n try {\n return fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => path.join(chatsDir, e.name));\n } catch {\n return [];\n }\n}\nfunction collectChatSessions(hashDir, cwd) {\n const chatFiles = collectChatFiles(hashDir);\n const sessions = [];\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n const record = readChatFile(chatFile);\n if (!record) {\n continue;\n }\n const userMessages = record.messages.filter((m) => m.type === \"user\");\n const firstUserMsg = userMessages[0];\n let title = \"Untitled Session\";\n if (firstUserMsg) {\n title = cleanTitle(extractTextFromContent(firstUserMsg.content));\n }\n sessions.push({\n created: record.startTime,\n gitBranch: \"\",\n id: record.sessionId,\n messageCount: record.messages.length,\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: record.summary ?? \"\",\n title\n });\n } catch {\n }\n }\n return sessions;\n}\nfunction collectProjectHashDirs() {\n try {\n return fs.readdirSync(GEMINI_TMP, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => path.join(GEMINI_TMP, e.name));\n } catch {\n return [];\n }\n}\nfunction conversationFromChatFile(chatFile, offset, limit) {\n try {\n const record = readChatFile(chatFile);\n if (!record) {\n return [];\n }\n const messages = record.messages.filter((m) => m.type === \"user\" || m.type === \"gemini\").map(messageRecordToMessage);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[gemini] Failed to read chat file:\", err);\n return [];\n }\n}\nfunction conversationFromLogsJson(hashDir, sessionId) {\n const logsPath = path.join(hashDir, \"logs.json\");\n const entries = readLogsJson(logsPath);\n return entries.filter((e) => e.sessionId === sessionId).map(\n (entry) => ({\n id: `${entry.sessionId}-${String(entry.messageId)}`,\n parts: [{ content: entry.message, type: \"text\" }],\n role: \"user\",\n timestamp: entry.timestamp\n })\n );\n}\nfunction extractTextFromContent(content) {\n if (typeof content === \"string\") {\n return content;\n }\n return content.filter((p) => \"text\" in p).map((p) => p.text).join(\" \");\n}\nfunction findChatFileForSession(hashDir, sessionId) {\n if (!sessionId) {\n return null;\n }\n const chatsDir = path.join(hashDir, \"chats\");\n let names;\n try {\n names = fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => e.name);\n } catch {\n return null;\n }\n const shortId = sessionId.slice(0, 8);\n names.sort((a, b) => Number(b.includes(shortId)) - Number(a.includes(shortId)));\n for (const name of names) {\n const full = path.join(chatsDir, name);\n if (readChatFile(full)?.sessionId === sessionId) {\n return full;\n }\n }\n return null;\n}\nfunction isGeminiLogEntry(v) {\n if (typeof v !== \"object\" || v === null) {\n return false;\n }\n const obj = v;\n return typeof obj.sessionId === \"string\" && typeof obj.messageId === \"number\" && typeof obj.message === \"string\" && typeof obj.timestamp === \"string\";\n}\nfunction messageRecordToMessage(record) {\n const role = record.type === \"user\" ? \"user\" : \"assistant\";\n const parts = [];\n if (record.type === \"gemini\" && record.thoughts) {\n for (const thought of record.thoughts) {\n parts.push({ content: thought.summary ?? \"\", type: \"thinking\" });\n }\n }\n const rawContent = record.content;\n const contentParts = typeof rawContent === \"string\" ? [{ text: rawContent }] : rawContent;\n for (const part of contentParts) {\n if (\"functionCall\" in part) {\n parts.push({\n id: part.functionCall.id ?? part.functionCall.name,\n input: part.functionCall.args,\n toolName: part.functionCall.name,\n type: \"tool_use\"\n });\n } else if (\"thought\" in part && part.thought === true) {\n parts.push({ content: part.text, type: \"thinking\" });\n } else if (\"text\" in part) {\n parts.push({ content: part.text, type: \"text\" });\n }\n }\n if (record.type === \"gemini\" && record.toolCalls) {\n for (const tc of record.toolCalls) {\n const alreadyInParts = parts.some((p) => p.type === \"tool_use\" && p.id === tc.id);\n if (!alreadyInParts) {\n parts.push({\n id: tc.id,\n input: tc.args,\n toolName: tc.name,\n type: \"tool_use\"\n });\n }\n }\n }\n return {\n id: record.id,\n parts,\n role,\n timestamp: record.timestamp\n };\n}\nfunction readChatFile(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_GEMINI_FILE_BYTES) {\n return null;\n }\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\nfunction readLogsJson(logsPath) {\n try {\n if (fs.statSync(logsPath).size > MAX_GEMINI_FILE_BYTES) {\n return [];\n }\n const parsed = JSON.parse(fs.readFileSync(logsPath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed.filter(isGeminiLogEntry) : [];\n } catch {\n return [];\n }\n}\nfunction sessionsFromLogsJson(hashDir, cwd) {\n const logsPath = path.join(hashDir, \"logs.json\");\n let stat;\n try {\n stat = fs.statSync(logsPath);\n } catch {\n return [];\n }\n const entries = readLogsJson(logsPath);\n if (entries.length === 0) {\n return [];\n }\n const bySession = /* @__PURE__ */ new Map();\n for (const entry of entries) {\n let bucket = bySession.get(entry.sessionId);\n if (!bucket) {\n bucket = [];\n bySession.set(entry.sessionId, bucket);\n }\n bucket.push(entry);\n }\n const sessions = [];\n for (const [sessionId, sessionEntries] of bySession) {\n const first = sessionEntries[0];\n const last = sessionEntries[sessionEntries.length - 1];\n sessions.push({\n created: first?.timestamp ?? stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount: sessionEntries.length,\n modified: last?.timestamp ?? stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: \"\",\n title: cleanTitle(first?.message ?? \"\")\n });\n }\n return sessions;\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nfunction resolveOpenCodeDbPath() {\n const home = process.env.HOME || \"\";\n const candidates = [];\n if (process.env.XDG_DATA_HOME) {\n candidates.push(path.join(process.env.XDG_DATA_HOME, \"opencode\", \"opencode.db\"));\n }\n candidates.push(path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\"));\n if (process.platform === \"darwin\") {\n candidates.push(path.join(home, \"Library\", \"Application Support\", \"opencode\", \"opencode.db\"));\n }\n for (const candidate of candidates) {\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return candidates[0] ?? path.join(home, \".local\", \"share\", \"opencode\", \"opencode.db\");\n}\nconst QWEN_PROJECTS = path.join(homedir(), \".qwen\", \"projects\");\nconst PREFIX_BYTES = 64 * 1024;\nconst MAX_QWEN_FILE_BYTES = 16 * 1024 * 1024;\nconst SYSTEM_TAG_PREFIXES = [\n \"<command-name>\",\n \"<local-command\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction detectActiveQwenSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectQwenFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getQwenConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return [];\n }\n const filePath = collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`);\n if (!filePath) {\n return [];\n }\n try {\n const messages = readQwenMessages(filePath);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && 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(\"[qwen] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listQwenProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectQwenFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.started || stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"qwen\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\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 resolveQwenSessionFile(sessionId) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return null;\n }\n return collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`) ?? null;\n}\nfunction collectQwenFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(QWEN_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const chatsDir = path.join(QWEN_PROJECTS, dir.name, \"chats\");\n try {\n for (const f of fs.readdirSync(chatsDir)) {\n if (f.endsWith(\".jsonl\")) {\n out.push(path.join(chatsDir, f));\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction qwenLineToMessage(entry) {\n const type = entry.type;\n if (type !== \"user\" && type !== \"assistant\") {\n return null;\n }\n const message = entry.message ?? {};\n const rawParts = Array.isArray(message.parts) ? message.parts : [];\n const parts = [];\n for (const raw of rawParts) {\n if (typeof raw !== \"object\" || raw === null) {\n continue;\n }\n const p = raw;\n if (p.functionCall && typeof p.functionCall === \"object\") {\n const fc = p.functionCall;\n const toolName = typeof fc.name === \"string\" ? fc.name : \"tool\";\n parts.push({\n id: typeof fc.id === \"string\" ? fc.id : toolName,\n input: fc.args ?? {},\n toolName,\n type: \"tool_use\"\n });\n } else if (p.thought === true && typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"thinking\" });\n } else if (typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"text\" });\n }\n }\n if (parts.length === 0 && typeof message.content === \"string\" && message.content) {\n parts.push({ content: message.content, type: \"text\" });\n }\n if (parts.length === 0) {\n return null;\n }\n return {\n id: typeof entry.uuid === \"string\" ? entry.uuid : `qwen-${type}`,\n parts,\n role: type === \"user\" ? \"user\" : \"assistant\",\n timestamp: typeof entry.timestamp === \"string\" ? entry.timestamp : \"\"\n };\n}\nfunction readMeta(prefix) {\n let cwd = \"\";\n let id = \"\";\n let gitBranch = \"\";\n let started = \"\";\n let title = \"\";\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!cwd && typeof entry.cwd === \"string\") {\n cwd = entry.cwd;\n }\n if (!id && typeof entry.sessionId === \"string\") {\n id = entry.sessionId;\n }\n if (!gitBranch && typeof entry.gitBranch === \"string\") {\n gitBranch = entry.gitBranch;\n }\n if (!started && typeof entry.timestamp === \"string\") {\n started = entry.timestamp;\n }\n if (!title && entry.type === \"user\") {\n const msg = entry.message;\n let text = typeof msg?.content === \"string\" ? msg.content : \"\";\n if (!text && Array.isArray(msg?.parts)) {\n text = msg.parts.map(\n (p) => p && typeof p === \"object\" && typeof p.text === \"string\" ? p.text : \"\"\n ).join(\" \").trim();\n }\n if (text && !SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n title = text.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n }\n }\n return id && cwd ? { cwd, gitBranch, id, started, title } : null;\n}\nfunction readPrefix(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readQwenMessages(filePath) {\n const messages = [];\n for (const line of readQwenTextBounded(filePath).split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const msg = qwenLineToMessage(JSON.parse(trimmed));\n if (msg) {\n messages.push(msg);\n }\n } catch {\n }\n }\n return messages;\n}\nfunction readQwenTextBounded(filePath) {\n const size = fs.statSync(filePath).size;\n if (size <= MAX_QWEN_FILE_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(MAX_QWEN_FILE_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_QWEN_FILE_BYTES, size - MAX_QWEN_FILE_BYTES);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nexport {\n detectActiveGeminiSessions as a,\n detectActiveQwenSessions as b,\n detectActiveCursorSessions as c,\n detectActiveCodexSessions as d,\n detectActiveCopilotSessions as e,\n detectActiveAmpSessions as f,\n resolveQwenSessionFile as g,\n resolveGeminiSessionFile as h,\n resolveCursorSessionFile as i,\n resolveCopilotSessionFile as j,\n resolveAmpSessionFile as k,\n findCodexRolloutForCwd as l,\n listCodexProjects as m,\n getCodexConversation as n,\n listGeminiProjects as o,\n getGeminiConversation as p,\n listQwenProjects as q,\n resolveOpenCodeDbPath as r,\n getQwenConversation as s,\n listCursorProjects as t,\n getCursorConversation as u,\n listCopilotProjects as v,\n getCopilotConversation as w,\n listAmpProjects as x,\n getAmpConversation as y\n};\n"],"names":[],"mappings":"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"}