@juspay/shooter 1.9.2 → 1.10.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 (234) hide show
  1. package/build/client/_app/immutable/assets/ColorPicker.CV4IKef4.css +1 -0
  2. package/build/client/_app/immutable/assets/ColorPicker.CV4IKef4.css.br +0 -0
  3. package/build/client/_app/immutable/assets/ColorPicker.CV4IKef4.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/BFXEYMV8.js +3 -0
  5. package/build/client/_app/immutable/chunks/BFXEYMV8.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BFXEYMV8.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/BRqaaL5D.js +5 -0
  8. package/build/client/_app/immutable/chunks/BRqaaL5D.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/BRqaaL5D.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/C5VOyQCG.js +1 -0
  11. package/build/client/_app/immutable/chunks/C5VOyQCG.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/C5VOyQCG.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{B-XSrufh.js → C_9BZILB.js} +1 -1
  14. package/build/client/_app/immutable/chunks/C_9BZILB.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/C_9BZILB.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/Cg3dlX05.js +2 -0
  17. package/build/client/_app/immutable/chunks/Cg3dlX05.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/Cg3dlX05.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{WigD-5P0.js → CmtInjm0.js} +1 -1
  20. package/build/client/_app/immutable/chunks/CmtInjm0.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/CmtInjm0.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/DYuMZGL5.js +1 -0
  23. package/build/client/_app/immutable/chunks/DYuMZGL5.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/DYuMZGL5.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/DZQMsHM5.js +1 -0
  26. package/build/client/_app/immutable/chunks/DZQMsHM5.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/DZQMsHM5.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/DZvnhU_8.js +21 -0
  29. package/build/client/_app/immutable/chunks/DZvnhU_8.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/DZvnhU_8.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/{DjIci1dg.js → DfKeHoAm.js} +1 -1
  32. package/build/client/_app/immutable/chunks/DfKeHoAm.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/DfKeHoAm.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/Pw0jDB7M.js +1 -0
  35. package/build/client/_app/immutable/chunks/Pw0jDB7M.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/Pw0jDB7M.js.gz +0 -0
  37. package/build/client/_app/immutable/entry/app.Dp9YhfEg.js +2 -0
  38. package/build/client/_app/immutable/entry/app.Dp9YhfEg.js.br +0 -0
  39. package/build/client/_app/immutable/entry/app.Dp9YhfEg.js.gz +0 -0
  40. package/build/client/_app/immutable/entry/start.Bc5yZsyK.js +1 -0
  41. package/build/client/_app/immutable/entry/start.Bc5yZsyK.js.br +2 -0
  42. package/build/client/_app/immutable/entry/start.Bc5yZsyK.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{0.HapN5UGE.js → 0.B-M6sgow.js} +2 -2
  44. package/build/client/_app/immutable/nodes/0.B-M6sgow.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/0.B-M6sgow.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{1.IBlbkVOD.js → 1.C8aY7Yn3.js} +1 -1
  47. package/build/client/_app/immutable/nodes/1.C8aY7Yn3.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/1.C8aY7Yn3.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{2.BSGzQPKE.js → 2.YJZruh1H.js} +1 -1
  50. package/build/client/_app/immutable/nodes/2.YJZruh1H.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/2.YJZruh1H.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{3.CVaviSxa.js → 3.VV-tRemY.js} +1 -1
  53. package/build/client/_app/immutable/nodes/3.VV-tRemY.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/3.VV-tRemY.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{4.DgZG6DiA.js → 4.BSVqdrrD.js} +3 -3
  56. package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/4.BSVqdrrD.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{5.BsPQpbNC.js → 5.Cfj35gpY.js} +1 -1
  59. package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/5.Cfj35gpY.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{6.DqlYBRxO.js → 6.CDJA8Na9.js} +1 -1
  62. package/build/client/_app/immutable/nodes/6.CDJA8Na9.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/6.CDJA8Na9.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{7.C-mKfSQ6.js → 7.BX9znBYU.js} +1 -1
  65. package/build/client/_app/immutable/nodes/7.BX9znBYU.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/7.BX9znBYU.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{8.CWs7RaU8.js → 8.CmdrNdfj.js} +2 -2
  68. package/build/client/_app/immutable/nodes/8.CmdrNdfj.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/8.CmdrNdfj.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{9.CjYdYDhF.js → 9.BSleOtKF.js} +1 -1
  71. package/build/client/_app/immutable/nodes/9.BSleOtKF.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/9.BSleOtKF.js.gz +0 -0
  73. package/build/client/_app/version.json +1 -1
  74. package/build/client/_app/version.json.br +0 -0
  75. package/build/client/_app/version.json.gz +0 -0
  76. package/build/server/chunks/{0-D9OfRI2k.js → 0-vSdphvn2.js} +4 -4
  77. package/build/server/chunks/{0-D9OfRI2k.js.map → 0-vSdphvn2.js.map} +1 -1
  78. package/build/server/chunks/1-B5tn1ob0.js +9 -0
  79. package/build/server/chunks/{1-DgGFkvlg.js.map → 1-B5tn1ob0.js.map} +1 -1
  80. package/build/server/chunks/{2-SWCYKisx.js → 2-CUbzGnZ8.js} +4 -4
  81. package/build/server/chunks/{2-SWCYKisx.js.map → 2-CUbzGnZ8.js.map} +1 -1
  82. package/build/server/chunks/{3-i9IbPZ0L.js → 3-BR90tKg7.js} +4 -4
  83. package/build/server/chunks/{3-i9IbPZ0L.js.map → 3-BR90tKg7.js.map} +1 -1
  84. package/build/server/chunks/{4-BzsFX_T-.js → 4-CbejE1SC.js} +4 -4
  85. package/build/server/chunks/{4-BzsFX_T-.js.map → 4-CbejE1SC.js.map} +1 -1
  86. package/build/server/chunks/{5-BnyMNyuy.js → 5-BwqumuR1.js} +4 -4
  87. package/build/server/chunks/{5-BnyMNyuy.js.map → 5-BwqumuR1.js.map} +1 -1
  88. package/build/server/chunks/6-cW7umWCt.js +9 -0
  89. package/build/server/chunks/{6-BIsh7BZP.js.map → 6-cW7umWCt.js.map} +1 -1
  90. package/build/server/chunks/7-D3cb9T2g.js +9 -0
  91. package/build/server/chunks/{7-BtO1NV6d.js.map → 7-D3cb9T2g.js.map} +1 -1
  92. package/build/server/chunks/8-BEgZo4wA.js +9 -0
  93. package/build/server/chunks/{8-Cm04OX_8.js.map → 8-BEgZo4wA.js.map} +1 -1
  94. package/build/server/chunks/9-Dy8aTTtf.js +9 -0
  95. package/build/server/chunks/{9-D1iRD-KU.js.map → 9-Dy8aTTtf.js.map} +1 -1
  96. package/build/server/chunks/{Button-DVLTQJyD.js → Button-Dpueno77.js} +9 -9
  97. package/build/server/chunks/Button-Dpueno77.js.map +1 -0
  98. package/build/server/chunks/{Icon-BXE5-3Zt.js → Icon-aOLx5ELI.js} +7 -7
  99. package/build/server/chunks/Icon-aOLx5ELI.js.map +1 -0
  100. package/build/server/chunks/{Input-CgEj-A6D.js → Input-Cq7ZdLxS.js} +8 -8
  101. package/build/server/chunks/{Input-CgEj-A6D.js.map → Input-Cq7ZdLxS.js.map} +1 -1
  102. package/build/server/chunks/{Pill-CfGbZF-f.js → Pill-Bn597jm0.js} +5 -5
  103. package/build/server/chunks/Pill-Bn597jm0.js.map +1 -0
  104. package/build/server/chunks/Shimmer-5o7MVwXF.js +10 -0
  105. package/build/server/chunks/Shimmer-5o7MVwXF.js.map +1 -0
  106. package/build/server/chunks/{_error.svelte-DTYKLBYi.js → _error.svelte-C85mEsv9.js} +8 -8
  107. package/build/server/chunks/{_error.svelte-DTYKLBYi.js.map → _error.svelte-C85mEsv9.js.map} +1 -1
  108. package/build/server/chunks/{_layout.svelte-C0TOcumt.js → _layout.svelte-rpYLLajc.js} +10 -10
  109. package/build/server/chunks/{_layout.svelte-C0TOcumt.js.map → _layout.svelte-rpYLLajc.js.map} +1 -1
  110. package/build/server/chunks/{_page.svelte-DWJcHYX2.js → _page.svelte-B6O0uTrK.js} +4 -4
  111. package/build/server/chunks/{_page.svelte-DWJcHYX2.js.map → _page.svelte-B6O0uTrK.js.map} +1 -1
  112. package/build/server/chunks/{_page.svelte-BDyAukVH.js → _page.svelte-BfCXobKv.js} +11 -11
  113. package/build/server/chunks/{_page.svelte-BDyAukVH.js.map → _page.svelte-BfCXobKv.js.map} +1 -1
  114. package/build/server/chunks/{_page.svelte-HCIg_ijq.js → _page.svelte-CA46TyHk.js} +5 -5
  115. package/build/server/chunks/{_page.svelte-HCIg_ijq.js.map → _page.svelte-CA46TyHk.js.map} +1 -1
  116. package/build/server/chunks/{_page.svelte-Cn_oMd4r.js → _page.svelte-CCpVmMpU.js} +9 -9
  117. package/build/server/chunks/{_page.svelte-Cn_oMd4r.js.map → _page.svelte-CCpVmMpU.js.map} +1 -1
  118. package/build/server/chunks/{_page.svelte-DiHgZ-Qm.js → _page.svelte-D0FBtMtH.js} +11 -11
  119. package/build/server/chunks/{_page.svelte-DiHgZ-Qm.js.map → _page.svelte-D0FBtMtH.js.map} +1 -1
  120. package/build/server/chunks/{_page.svelte-BXZjHaxR.js → _page.svelte-DUj1mSq0.js} +7 -7
  121. package/build/server/chunks/{_page.svelte-BXZjHaxR.js.map → _page.svelte-DUj1mSq0.js.map} +1 -1
  122. package/build/server/chunks/{_page.svelte-DF8N4KBc.js → _page.svelte-DjADcbfZ.js} +34 -34
  123. package/build/server/chunks/_page.svelte-DjADcbfZ.js.map +1 -0
  124. package/build/server/chunks/{_page.svelte-CnavwBE6.js → _page.svelte-fkR4xqGu.js} +20 -20
  125. package/build/server/chunks/_page.svelte-fkR4xqGu.js.map +1 -0
  126. package/build/server/chunks/{_server.ts-DkPPTUPo.js → _server.ts-BBLuxvp6.js} +5 -2
  127. package/build/server/chunks/{_server.ts-DkPPTUPo.js.map → _server.ts-BBLuxvp6.js.map} +1 -1
  128. package/build/server/chunks/{_server.ts-BMcbwZ2r.js → _server.ts-HGYjOWF2.js} +3 -2
  129. package/build/server/chunks/{_server.ts-BMcbwZ2r.js.map → _server.ts-HGYjOWF2.js.map} +1 -1
  130. package/build/server/chunks/{cache-DQLC_4X6.js → cache-5_eamjtv.js} +6 -6
  131. package/build/server/chunks/cache-5_eamjtv.js.map +1 -0
  132. package/build/server/chunks/{client-DFS_oze8.js → client-w1WsLDGu.js} +4 -4
  133. package/build/server/chunks/{client-DFS_oze8.js.map → client-w1WsLDGu.js.map} +1 -1
  134. package/build/server/chunks/client2-B5wCRDQi.js +7 -0
  135. package/build/server/chunks/{client2-CuecdIgG.js.map → client2-B5wCRDQi.js.map} +1 -1
  136. package/build/server/chunks/index-CoD1IJuy.js.map +1 -1
  137. package/build/server/chunks/{index-Ce_T9BSa.js → index-DMikC9Qy.js} +327 -126
  138. package/build/server/chunks/index-DMikC9Qy.js.map +1 -0
  139. package/build/server/chunks/{index-server-DuadcihK.js → index-server-DHNcb_Bd.js} +2 -2
  140. package/build/server/chunks/{index-server-DuadcihK.js.map → index-server-DHNcb_Bd.js.map} +1 -1
  141. package/build/server/chunks/{index2-3-jnyNZ0.js → index2-BTTf6mSG.js} +2 -2
  142. package/build/server/chunks/{index2-3-jnyNZ0.js.map → index2-BTTf6mSG.js.map} +1 -1
  143. package/build/server/chunks/pending-requests-B-JNGxpk.js +96 -0
  144. package/build/server/chunks/pending-requests-B-JNGxpk.js.map +1 -0
  145. package/build/server/chunks/{root-CodmFd7L.js → root-DhBbA8QD.js} +20 -15
  146. package/build/server/chunks/root-DhBbA8QD.js.map +1 -0
  147. package/build/server/chunks/{state.svelte-BJz4uYyw.js → state.svelte-M8y8rROy.js} +3 -3
  148. package/build/server/chunks/{state.svelte-BJz4uYyw.js.map → state.svelte-M8y8rROy.js.map} +1 -1
  149. package/build/server/chunks/{stores-fLftuVrV.js → stores-CwkRmCHA.js} +4 -4
  150. package/build/server/chunks/{stores-fLftuVrV.js.map → stores-CwkRmCHA.js.map} +1 -1
  151. package/build/server/index.js +227 -123
  152. package/build/server/index.js.map +1 -1
  153. package/build/server/manifest.js +13 -13
  154. package/build/server/manifest.js.map +1 -1
  155. package/package.json +11 -4
  156. package/src/lib/modules/server/apn/notification-history.ts +3 -2
  157. package/src/lib/modules/server/apn/pending-requests.ts +115 -27
  158. package/build/client/_app/immutable/assets/ColorPicker.Hf6zQzuB.css +0 -1
  159. package/build/client/_app/immutable/assets/ColorPicker.Hf6zQzuB.css.br +0 -0
  160. package/build/client/_app/immutable/assets/ColorPicker.Hf6zQzuB.css.gz +0 -0
  161. package/build/client/_app/immutable/chunks/3MMtouT7.js +0 -2
  162. package/build/client/_app/immutable/chunks/3MMtouT7.js.br +0 -0
  163. package/build/client/_app/immutable/chunks/3MMtouT7.js.gz +0 -0
  164. package/build/client/_app/immutable/chunks/780RSrro.js +0 -1
  165. package/build/client/_app/immutable/chunks/780RSrro.js.br +0 -0
  166. package/build/client/_app/immutable/chunks/780RSrro.js.gz +0 -0
  167. package/build/client/_app/immutable/chunks/B-XSrufh.js.br +0 -0
  168. package/build/client/_app/immutable/chunks/B-XSrufh.js.gz +0 -0
  169. package/build/client/_app/immutable/chunks/B-aj0tWo.js +0 -3
  170. package/build/client/_app/immutable/chunks/B-aj0tWo.js.br +0 -0
  171. package/build/client/_app/immutable/chunks/B-aj0tWo.js.gz +0 -0
  172. package/build/client/_app/immutable/chunks/BTu-2gkj.js +0 -21
  173. package/build/client/_app/immutable/chunks/BTu-2gkj.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/BTu-2gkj.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/CMQw-Fc-.js +0 -1
  176. package/build/client/_app/immutable/chunks/CMQw-Fc-.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/CMQw-Fc-.js.gz +0 -0
  178. package/build/client/_app/immutable/chunks/Ce0VRwE1.js +0 -1
  179. package/build/client/_app/immutable/chunks/Ce0VRwE1.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/Ce0VRwE1.js.gz +0 -0
  181. package/build/client/_app/immutable/chunks/DFPEaIHz.js +0 -1
  182. package/build/client/_app/immutable/chunks/DFPEaIHz.js.br +0 -0
  183. package/build/client/_app/immutable/chunks/DFPEaIHz.js.gz +0 -0
  184. package/build/client/_app/immutable/chunks/DdpA9n1s.js +0 -5
  185. package/build/client/_app/immutable/chunks/DdpA9n1s.js.br +0 -4
  186. package/build/client/_app/immutable/chunks/DdpA9n1s.js.gz +0 -0
  187. package/build/client/_app/immutable/chunks/DjIci1dg.js.br +0 -0
  188. package/build/client/_app/immutable/chunks/DjIci1dg.js.gz +0 -0
  189. package/build/client/_app/immutable/chunks/WigD-5P0.js.br +0 -0
  190. package/build/client/_app/immutable/chunks/WigD-5P0.js.gz +0 -0
  191. package/build/client/_app/immutable/entry/app.ueUUTVo4.js +0 -2
  192. package/build/client/_app/immutable/entry/app.ueUUTVo4.js.br +0 -0
  193. package/build/client/_app/immutable/entry/app.ueUUTVo4.js.gz +0 -0
  194. package/build/client/_app/immutable/entry/start.CQhGkr1I.js +0 -1
  195. package/build/client/_app/immutable/entry/start.CQhGkr1I.js.br +0 -2
  196. package/build/client/_app/immutable/entry/start.CQhGkr1I.js.gz +0 -0
  197. package/build/client/_app/immutable/nodes/0.HapN5UGE.js.br +0 -0
  198. package/build/client/_app/immutable/nodes/0.HapN5UGE.js.gz +0 -0
  199. package/build/client/_app/immutable/nodes/1.IBlbkVOD.js.br +0 -0
  200. package/build/client/_app/immutable/nodes/1.IBlbkVOD.js.gz +0 -0
  201. package/build/client/_app/immutable/nodes/2.BSGzQPKE.js.br +0 -0
  202. package/build/client/_app/immutable/nodes/2.BSGzQPKE.js.gz +0 -0
  203. package/build/client/_app/immutable/nodes/3.CVaviSxa.js.br +0 -0
  204. package/build/client/_app/immutable/nodes/3.CVaviSxa.js.gz +0 -0
  205. package/build/client/_app/immutable/nodes/4.DgZG6DiA.js.br +0 -0
  206. package/build/client/_app/immutable/nodes/4.DgZG6DiA.js.gz +0 -0
  207. package/build/client/_app/immutable/nodes/5.BsPQpbNC.js.br +0 -0
  208. package/build/client/_app/immutable/nodes/5.BsPQpbNC.js.gz +0 -0
  209. package/build/client/_app/immutable/nodes/6.DqlYBRxO.js.br +0 -0
  210. package/build/client/_app/immutable/nodes/6.DqlYBRxO.js.gz +0 -0
  211. package/build/client/_app/immutable/nodes/7.C-mKfSQ6.js.br +0 -0
  212. package/build/client/_app/immutable/nodes/7.C-mKfSQ6.js.gz +0 -0
  213. package/build/client/_app/immutable/nodes/8.CWs7RaU8.js.br +0 -0
  214. package/build/client/_app/immutable/nodes/8.CWs7RaU8.js.gz +0 -0
  215. package/build/client/_app/immutable/nodes/9.CjYdYDhF.js.br +0 -0
  216. package/build/client/_app/immutable/nodes/9.CjYdYDhF.js.gz +0 -0
  217. package/build/server/chunks/1-DgGFkvlg.js +0 -9
  218. package/build/server/chunks/6-BIsh7BZP.js +0 -9
  219. package/build/server/chunks/7-BtO1NV6d.js +0 -9
  220. package/build/server/chunks/8-Cm04OX_8.js +0 -9
  221. package/build/server/chunks/9-D1iRD-KU.js +0 -9
  222. package/build/server/chunks/Button-DVLTQJyD.js.map +0 -1
  223. package/build/server/chunks/Icon-BXE5-3Zt.js.map +0 -1
  224. package/build/server/chunks/Pill-CfGbZF-f.js.map +0 -1
  225. package/build/server/chunks/Shimmer-D9TPXvO4.js +0 -10
  226. package/build/server/chunks/Shimmer-D9TPXvO4.js.map +0 -1
  227. package/build/server/chunks/_page.svelte-CnavwBE6.js.map +0 -1
  228. package/build/server/chunks/_page.svelte-DF8N4KBc.js.map +0 -1
  229. package/build/server/chunks/cache-DQLC_4X6.js.map +0 -1
  230. package/build/server/chunks/client2-CuecdIgG.js +0 -7
  231. package/build/server/chunks/index-Ce_T9BSa.js.map +0 -1
  232. package/build/server/chunks/pending-requests-D8UiTw7L.js +0 -44
  233. package/build/server/chunks/pending-requests-D8UiTw7L.js.map +0 -1
  234. package/build/server/chunks/root-CodmFd7L.js.map +0 -1
@@ -0,0 +1 @@
1
+ import{p as ge,a as r,f as i,d as kt,i as g,g as yt,h as bt,s as R,j as U,b as L}from"./Cg3dlX05.js";import{c as s,O as wt,r as a,t as A,p as Et,s as Se,q as St,F as Tt,g as e,P as It,d as o,b as pe,w as Dt,B as Me,A as P,x as c}from"./DYuMZGL5.js";import{a as zt,s as ce,P as ye,B as Ge,e as be,i as He,A as Ve,I as Ct,h as Te}from"./DZvnhU_8.js";import{r as Ie}from"./BDcFu3l7.js";import{S as Ye}from"./C_9BZILB.js";var Pt=i('<div><div class="accordion-content svelte-14pncvc"><!></div></div>');function De(B,n){let $=ge(n,"expand",3,!1);var ee=Pt();let te;var we=s(ee),ze=s(we);zt(ze,()=>n.children??wt),a(we),a(ee),A(()=>te=ce(ee,1,`accordion ${n.classes??""??""}`,"svelte-14pncvc",te,{expanded:$()})),r(B,ee)}function At(B,n){return B==="Bash"?n.command||n.description||"":B==="Read"||B==="Edit"||B==="Write"?n.file_path||"":B==="Grep"||B==="Glob"?n.pattern||"":B==="Agent"?n.description||n.prompt?.slice(0,50)||"":JSON.stringify(n).slice(0,60)}var Bt=i('<div class="chatview-header svelte-1tpzk7f"><div class="chatview-header-left svelte-1tpzk7f"><!> <span class="chatview-title svelte-1tpzk7f">Session</span></div> <div class="chatview-header-right svelte-1tpzk7f"><span><span class="connection-status-dot"></span> </span> <!></div></div>'),Gt=i('<div class="chatview-empty svelte-1tpzk7f"><p class="chatview-empty-text svelte-1tpzk7f">Waiting for session messages...</p></div>'),Ht=i('<div class="chat-bubble chat-bubble-user"></div>'),Ot=i('<div class="chat-message chat-message-user"><div><!> <div class="chat-timestamp"> </div></div> <!></div>'),Ut=i('<div class="chat-tool-body"> </div>'),Ft=i('<div class="chat-tool-card svelte-1tpzk7f"><div class="chat-tool-header" role="button" tabindex="0"><span>&#9654;</span> <!> <span class="chat-tool-description"> </span></div> <!></div>'),Kt=i('<div class="chat-tool-group-body svelte-1tpzk7f"></div>'),Rt=i('<div class="chat-tool-group svelte-1tpzk7f"><div class="chat-tool-group-header svelte-1tpzk7f" role="button" tabindex="0"><span>&#9654;</span> <span class="chat-tool-group-summary svelte-1tpzk7f"> </span></div> <!></div>'),Lt=i('<div class="chat-bubble chat-bubble-assistant"></div>'),Nt=i('<div class="chat-tool-body"> </div>'),Wt=i('<div class="chat-tool-card"><div class="chat-tool-header" role="button" tabindex="0"><span>&#9654;</span> <!> <span class="chat-tool-description"> </span></div> <!></div>'),jt=i('<div class="chat-thinking-body"></div>'),qt=i('<div class="chat-thinking"><div class="chat-thinking-header" role="button" tabindex="0"> </div> <!></div>'),Jt=i('<div class="chat-message chat-message-assistant"><!> <div><!> <div class="chat-timestamp"> </div></div></div>'),Mt=i("<div> </div>"),Vt=i('<div class="chat-message chat-message-system"><div class="chat-tool-card"><div class="chat-tool-header" role="button" tabindex="0"><span>&#9654;</span> <!></div> <!></div></div>'),Yt=i('<div class="chat-message chat-message-system"><div class="chat-bubble chat-bubble-system"></div></div>'),Qt=i('<div class="chatview-ended svelte-1tpzk7f"><!> <span>Session has ended</span></div>'),Xt=i('<div class="chatview-details-toggle svelte-1tpzk7f"><!></div> <!> <!>',1),Zt=i('<div class="chat-input-bar"><!> <!></div>'),$t=i('<div class="chatview-wrapper svelte-1tpzk7f"><!> <div class="chat-container chatview-scroll svelte-1tpzk7f"><!></div> <!></div>');function oa(B,n){Et(n,!0);const $=ge(n,"connectionState",3,"idle"),ee=ge(n,"newestFirst",3,!1),te=ge(n,"sessionEnded",3,!1),we=ge(n,"showHeader",3,!1),ze=ge(n,"showInput",3,!0),Oe=c(()=>te()||(n.sendDisabled!==void 0?n.sendDisabled:$()!=="connected"));let me=Se(""),q=Se(null),Ce=Se(!0);const ae=new Ye,Ee=new Ye,Ue="shooter:chatview:showDetails";let D=Se(St(localStorage.getItem(Ue)==="true"));function Qe(){pe(D,!e(D)),localStorage.setItem(Ue,String(e(D)))}function Xe(t,u){const _=[];let k=[],z=0;function G(){if(k.length!==0){if(k.length===1)_.push(k[0]);else{const N=k.map(C=>C.toolName),E=[...new Set(N)],l=`Used ${k.length} tools: ${E.join(", ")}`;_.push({groupId:`toolgroup-${u}-${z}`,summary:l,tools:k,type:"tool_group"}),z++}k=[]}}for(const N of t)N.type==="tool_use"?k.push(N):(G(),_.push(N));return G(),_}function Ze(t){return t.type==="tool_group"}function $e(t){return t.parts.every(u=>u.type==="tool_result")}Tt(()=>{n.messages,et()});async function et(){!e(Ce)||!e(q)||(await It(),ee()?e(q).scrollTop=0:e(q).scrollTop=e(q).scrollHeight)}function tt(){if(!e(q))return;const{clientHeight:t,scrollHeight:u,scrollTop:_}=e(q);ee()?pe(Ce,_<100):pe(Ce,u-_-t<100)}function Fe(){const t=e(me).trim();t&&(pe(me,""),n.onSendInput?.(t))}function at(t){t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),Fe())}function J(t){ae.has(t)?ae.delete(t):ae.add(t)}function Ke(t){Ee.has(t)?Ee.delete(t):Ee.add(t)}function Re(t){return new Date(t).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function Le(t){return At(t.toolName,t.input)}function Ne(t){return JSON.stringify(t,null,2)}function st(t){return t.type==="tool_use"}var Pe=$t(),We=s(Pe);{var rt=t=>{var u=Bt(),_=s(u),k=s(_);ye(k,{text:"LIVE",classes:"pill-live"}),Me(2),a(_);var z=o(_,2),G=s(z),N=o(s(G));a(G);var E=o(G,2);{var l=C=>{Ge(C,{classes:"btn-danger btn-sm",onclick:()=>{n.onCancel()},text:"Cancel"})};g(E,C=>{!te()&&n.onCancel&&C(l)})}a(z),a(u),A(()=>{ce(G,1,`connection-status ${$()??""}`,"svelte-1tpzk7f"),R(N,` ${$()==="connected"?"Connected":$()==="connecting"||$()==="reconnecting"?"Connecting...":"Disconnected"}`)}),r(t,u)};g(We,t=>{we()&&t(rt)})}var xe=o(We,2),nt=s(xe);{var ot=t=>{var u=Gt();r(t,u)},it=t=>{var u=Xt(),_=P(u),k=s(_);{let E=c(()=>e(D)?"active":""),l=c(()=>e(D)?"▼":"▶"),C=c(()=>e(D)?"Hide details":"Show details");Ge(k,{get classes(){return`chatview-details-btn ${e(E)??""}`},onclick:Qe,get text(){return`${e(l)??""} ${e(C)??""}`}})}a(_);var z=o(_,2);be(z,17,()=>n.messages,E=>E.id,(E,l)=>{var C=U(),dt=P(C);{var ct=W=>{var F=Ot(),M=s(F),se=s(M);be(se,17,()=>e(l).parts,He,(j,d)=>{var m=U(),_e=P(m);{var ke=ne=>{var oe=Ht();Te(oe,()=>Ie(e(d).content),!0),a(oe),r(ne,oe)};g(_e,ne=>{e(d).type==="text"&&ne(ke)})}r(j,m)});var re=o(se,2),V=s(re,!0);a(re),a(M);var ue=o(M,2);Ve(ue,{alt:"User",name:"User",size:"small",classes:"avatar-user"}),a(F),A(j=>R(V,j),[()=>Re(e(l).timestamp)]),r(W,F)},ut=W=>{var F=Jt(),M=s(F);Ve(M,{alt:"Claude",name:"Claude",size:"small",classes:"avatar-assistant"});var se=o(M,2),re=s(se);be(re,17,()=>Xe(e(l).parts,e(l).id),He,(j,d)=>{var m=U(),_e=P(m);{var ke=y=>{const f=c(()=>e(D)||Ee.has(e(d).groupId));var x=Rt(),p=s(x),h=s(p);let K;var S=o(h,2),T=s(S,!0);a(S),a(p);var X=o(p,2);{var Z=I=>{var v=Kt();be(v,21,()=>e(d).tools,H=>H.id,(H,b)=>{const ie=c(()=>e(b).id),le=c(()=>e(D)||ae.has(e(ie)));var O=Ft(),w=s(O),ve=s(w);let he;var je=o(ve,2);ye(je,{get text(){return e(b).toolName},classes:"pill-tool-name"});var qe=o(je,2),ft=s(qe,!0);a(qe),a(w);var ht=o(w,2);De(ht,{get expand(){return e(le)},children:(de,ea)=>{var Je=U(),pt=P(Je);{var gt=Ae=>{var Be=Ut(),mt=s(Be,!0);a(Be),A(xt=>R(mt,xt),[()=>Ne(e(b).input)]),r(Ae,Be)};g(pt,Ae=>{e(le)&&Ae(gt)})}r(de,Je)},$$slots:{default:!0}}),a(O),A(de=>{he=ce(ve,1,"chat-tool-chevron",null,he,{expanded:e(le)}),R(ft,de)},[()=>Le(e(b))]),L("click",w,()=>{J(e(ie))}),L("keydown",w,de=>{(de.key==="Enter"||de.key===" ")&&(de.preventDefault(),J(e(ie)))}),r(H,O)}),a(v),r(I,v)};g(X,I=>{e(f)&&I(Z)})}a(x),A(()=>{K=ce(h,1,"chat-tool-group-chevron svelte-1tpzk7f",null,K,{expanded:e(f)}),R(T,e(d).summary)}),L("click",p,()=>{Ke(e(d).groupId)}),L("keydown",p,I=>{(I.key==="Enter"||I.key===" ")&&(I.preventDefault(),Ke(e(d).groupId))}),r(y,x)},ne=c(()=>Ze(e(d))),oe=y=>{var f=Lt();Te(f,()=>Ie(e(d).content),!0),a(f),r(y,f)},Y=y=>{const f=c(()=>e(d).id),x=c(()=>e(D)||ae.has(e(f)));var p=Wt(),h=s(p),K=s(h);let S;var T=o(K,2);ye(T,{get text(){return e(d).toolName},classes:"pill-tool-name"});var X=o(T,2),Z=s(X,!0);a(X),a(h);var I=o(h,2);De(I,{get expand(){return e(x)},children:(v,H)=>{var b=U(),ie=P(b);{var le=O=>{var w=Nt(),ve=s(w,!0);a(w),A(he=>R(ve,he),[()=>Ne(e(d).input)]),r(O,w)};g(ie,O=>{e(x)&&O(le)})}r(v,b)},$$slots:{default:!0}}),a(p),A(v=>{S=ce(K,1,"chat-tool-chevron",null,S,{expanded:e(x)}),R(Z,v)},[()=>Le(e(d))]),L("click",h,()=>{J(e(f))}),L("keydown",h,v=>{(v.key==="Enter"||v.key===" ")&&(v.preventDefault(),J(e(f)))}),r(y,p)},Q=c(()=>st(e(d))),fe=y=>{const f=c(()=>`thinking-${e(l).id}`),x=c(()=>e(D)||ae.has(e(f)));var p=qt(),h=s(p),K=s(h);a(h);var S=o(h,2);De(S,{get expand(){return e(x)},children:(T,X)=>{var Z=U(),I=P(Z);{var v=H=>{var b=jt();Te(b,()=>Ie(e(d).content),!0),a(b),r(H,b)};g(I,H=>{e(x)&&H(v)})}r(T,Z)},$$slots:{default:!0}}),a(p),A(()=>R(K,`💭 Thinking... ${e(x)?"&#9660;":"&#9654;"}`)),L("click",h,()=>{J(e(f))}),L("keydown",h,T=>{(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),J(e(f)))}),r(y,p)};g(_e,y=>{e(ne)?y(ke):e(d).type==="text"?y(oe,1):e(Q)?y(Y,2):e(d).type==="thinking"&&y(fe,3)})}r(j,m)});var V=o(re,2),ue=s(V,!0);a(V),a(se),a(F),A(j=>R(ue,j),[()=>Re(e(l).timestamp)]),r(W,F)},_t=W=>{var F=U(),M=P(F);{var se=V=>{var ue=U(),j=P(ue);be(j,17,()=>e(l).parts,He,(d,m)=>{var _e=U(),ke=P(_e);{var ne=Y=>{var Q=U(),fe=P(Q);{var y=f=>{const x=c(()=>`result-${e(m).toolUseId}`),p=c(()=>ae.has(e(x)));var h=Vt(),K=s(h),S=s(K),T=s(S);let X;var Z=o(T,2);{let v=c(()=>e(m).isError?"❌ Tool Error":"✅ Tool Result"),H=c(()=>e(m).isError?"pill-tool-error":"pill-tool-success");ye(Z,{get text(){return e(v)},get classes(){return e(H)}})}a(S);var I=o(S,2);De(I,{get expand(){return e(p)},children:(v,H)=>{var b=U(),ie=P(b);{var le=O=>{var w=Mt();let ve;var he=s(w,!0);a(w),A(()=>{ve=ce(w,1,"chat-tool-result",null,ve,{"chat-tool-result-success":!e(m).isError,"chat-tool-result-error":e(m).isError}),R(he,e(m).output)}),r(O,w)};g(ie,O=>{e(p)&&O(le)})}r(v,b)},$$slots:{default:!0}}),a(K),a(h),A(()=>X=ce(T,1,"chat-tool-chevron",null,X,{expanded:e(p)})),L("click",S,()=>{J(e(x))}),L("keydown",S,v=>{(v.key==="Enter"||v.key===" ")&&(v.preventDefault(),J(e(x)))}),r(f,h)};g(fe,f=>{e(D)&&f(y)})}r(Y,Q)},oe=Y=>{var Q=Yt(),fe=s(Q);Te(fe,()=>Ie(e(m).content),!0),a(fe),a(Q),r(Y,Q)};g(ke,Y=>{e(m).type==="tool_result"?Y(ne):e(m).type==="text"&&Y(oe,1)})}r(d,_e)}),r(V,ue)},re=c(()=>e(D)||!$e(e(l)));g(M,V=>{e(re)&&V(se)})}r(W,F)};g(dt,W=>{e(l).role==="user"?W(ct):e(l).role==="assistant"?W(ut,1):e(l).role==="system"&&W(_t,2)})}r(E,C)});var G=o(z,2);{var N=E=>{var l=Qt(),C=s(l);ye(C,{text:"ENDED",classes:"pill-badge-ended"}),Me(2),a(l),r(E,l)};g(G,E=>{te()&&E(N)})}r(t,u)};g(nt,t=>{n.messages.length===0?t(ot):t(it,-1)})}a(xe),yt(xe,t=>pe(q,t),()=>e(q));var lt=o(xe,2);{var vt=t=>{var u=Zt(),_=s(u);{let z=c(()=>te()?"Session ended":"Send a message... (Shift+Enter for new line)");Ct(_,{dataType:"text",useTextArea:!0,get placeholder(){return e(z)},get disable(){return e(Oe)},onKeyDown:at,classes:"chat-input-field",get value(){return e(me)},set value(G){pe(me,G,!0)}})}var k=o(_,2);{let z=c(()=>e(Oe)||!e(me).trim());Ge(k,{classes:"btn-primary btn-sm",get disabled(){return e(z)},onclick:Fe,text:"Send"})}a(u),r(t,u)};g(lt,t=>{ze()&&t(vt)})}a(Pe),bt("scroll",xe,tt),r(B,Pe),Dt()}kt(["click","keydown"]);export{oa as C};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.B-M6sgow.js","../chunks/Cg3dlX05.js","../chunks/DYuMZGL5.js","../chunks/DZvnhU_8.js","../assets/ColorPicker.CV4IKef4.css","../chunks/BFXEYMV8.js","../chunks/DfKeHoAm.js","../chunks/Bn-6X1BO.js","../chunks/CG453M9q.js","../chunks/CSjf4fBs.js","../assets/0.BZLcOr5z.css","../nodes/1.C8aY7Yn3.js","../chunks/DZQMsHM5.js","../assets/1.B_AnTlN1.css","../nodes/2.YJZruh1H.js","../chunks/BRqaaL5D.js","../chunks/xs1Xl3_e.js","../chunks/gQJcRhou.js","../chunks/BDcFu3l7.js","../chunks/BLszSzTT.js","../chunks/C_9BZILB.js","../chunks/CRkG7oE4.js","../chunks/pRcLbE0d.js","../chunks/C5VOyQCG.js","../assets/2.DjiwkLqE.css","../nodes/3.VV-tRemY.js","../assets/3.DHxQoulp.css","../nodes/4.BSVqdrrD.js","../chunks/DzuS5Nbr.js","../assets/4.D4EDSN4H.css","../nodes/5.Cfj35gpY.js","../assets/5.C5qz-NeI.css","../nodes/6.CDJA8Na9.js","../chunks/CmtInjm0.js","../assets/6.DzV0p3l-.css","../nodes/7.BX9znBYU.js","../chunks/Pw0jDB7M.js","../assets/ChatView.Bnlg-oAF.css","../assets/7.CEbRAOOf.css","../nodes/8.CmdrNdfj.js","../assets/8.BhoBXADL.css","../nodes/9.BSleOtKF.js","../chunks/PPVm8Dsz.js","../assets/9.v5KA95xm.css"])))=>i.map(i=>d[i]);
2
+ import{_}from"../chunks/PPVm8Dsz.js";import{j as V,Q as H,f as Q,R as U,S as W,T as X,m as q,l as j,U as z,n as J,b,V as K,g as u,W as Z,X as $,Y as tt,p as et,E as rt,F as at,v as st,P as ot,A as R,d as nt,w as it,s as O,c as ct,r as _t,t as ut,x as p}from"../chunks/DYuMZGL5.js";import{B as mt,k as dt,m as lt,u as ft,p as T,i as A,a as v,j as x,f as k,g as D,t as ht,s as vt}from"../chunks/Cg3dlX05.js";function I(s,t,a){var n;V&&(n=J,H());var o=new mt(s);Q(()=>{var e=t()??null;if(V){var r=W(n),c=r===z,P=e!==null;if(c!==P){var g=X();q(g),o.anchor=g,j(!1),o.ensure(e,e&&(f=>a(f,e))),j(!0);return}}o.ensure(e,e&&(f=>a(f,e)))},U)}function gt(s){return class extends Et{constructor(t){super({component:s,...t})}}}class Et{#e;#t;constructor(t){var a=new Map,n=(e,r)=>{var c=tt(r,!1,!1);return a.set(e,c),c};const o=new Proxy({...t.props||{},$$events:{}},{get(e,r){return u(a.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===K?!0:(u(a.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,c){return b(a.get(r)??n(r,c),c),Reflect.set(e,r,c)}});this.#t=(t.hydrate?dt:lt)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&Z(),this.#e=o.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||$(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(o,e)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,a){this.#e[t]=this.#e[t]||[];const n=(...o)=>a.call(this,...o);return this.#e[t].push(n),()=>{this.#e[t]=this.#e[t].filter(o=>o!==n)}}$destroy(){this.#t.$destroy()}}const xt={};var yt=k('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Rt=k("<!> <!>",1);function bt(s,t){et(t,!0);let a=T(t,"components",23,()=>[]),n=T(t,"data_0",3,null),o=T(t,"data_1",3,null);rt(()=>t.stores.page.set(t.page)),at(()=>{t.stores,t.page,t.constructors,a(),t.form,n(),o(),t.stores.page.notify()});let e=O(!1),r=O(!1),c=O(null);st(()=>{const i=t.stores.page.subscribe(()=>{u(e)&&(b(r,!0),ot().then(()=>{b(c,document.title||"untitled page",!0)}))});return b(e,!0),i});const P=p(()=>t.constructors[1]);var g=Rt(),f=R(g);{var S=i=>{const m=p(()=>t.constructors[0]);var d=x(),E=R(d);I(E,()=>u(m),(l,h)=>{D(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(y,Ot)=>{var L=x(),N=R(L);I(N,()=>u(P),(Y,B)=>{D(B(Y,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),G=>a()[1]=G,()=>a()?.[1])}),v(y,L)},$$slots:{default:!0}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)},C=i=>{const m=p(()=>t.constructors[0]);var d=x(),E=R(d);I(E,()=>u(m),(l,h)=>{D(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)};A(f,i=>{t.constructors[1]?i(S):i(C,-1)})}var F=nt(f,2);{var M=i=>{var m=yt(),d=ct(m);{var E=l=>{var h=ht();ut(()=>vt(h,u(c))),v(l,h)};A(d,l=>{u(r)&&l(E)})}_t(m),v(i,m)};A(F,i=>{u(e)&&i(M)})}v(s,g),it()}const Dt=gt(bt),It=[()=>_(()=>import("../nodes/0.B-M6sgow.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url),()=>_(()=>import("../nodes/1.C8aY7Yn3.js"),__vite__mapDeps([11,1,2,12,5,6,3,4,13]),import.meta.url),()=>_(()=>import("../nodes/2.YJZruh1H.js"),__vite__mapDeps([14,1,2,3,4,12,5,7,15,8,16,17,18,19,20,21,22,23,24]),import.meta.url),()=>_(()=>import("../nodes/3.VV-tRemY.js"),__vite__mapDeps([25,1,2,12,5,3,4,17,18,19,20,21,22,26]),import.meta.url),()=>_(()=>import("../nodes/4.BSVqdrrD.js"),__vite__mapDeps([27,1,2,3,4,12,28,17,18,22,29]),import.meta.url),()=>_(()=>import("../nodes/5.Cfj35gpY.js"),__vite__mapDeps([30,1,2,3,4,21,17,18,22,31]),import.meta.url),()=>_(()=>import("../nodes/6.CDJA8Na9.js"),__vite__mapDeps([32,1,2,3,4,12,5,33,28,7,15,16,17,18,19,23,34]),import.meta.url),()=>_(()=>import("../nodes/7.BX9znBYU.js"),__vite__mapDeps([35,1,2,12,3,4,33,5,16,18,36,20,37,38]),import.meta.url),()=>_(()=>import("../nodes/8.CmdrNdfj.js"),__vite__mapDeps([39,1,2,3,4,12,5,15,8,9,16,17,18,23,40]),import.meta.url),()=>_(()=>import("../nodes/9.BSleOtKF.js"),__vite__mapDeps([41,42,1,2,12,3,4,5,6,28,36,18,20,37,23,43]),import.meta.url)],Lt=[0],Vt={"/":[-3],"/activity":[-4],"/config":[-5],"/neurolink":[-6],"/project":[6],"/session/[id]":[7],"/terminals":[8],"/terminals/[id]":[9]},w={handleError:(({error:s})=>{console.error(s)}),reroute:(()=>{}),transport:{}},Pt=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.decode])),jt=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.encode])),kt=!1,wt=(s,t)=>Pt[s](t);export{wt as decode,Pt as decoders,Vt as dictionary,jt as encoders,kt as hash,w as hooks,xt as matchers,It as nodes,Dt as root,Lt as server_loads};
@@ -0,0 +1 @@
1
+ import{l as o,a as r}from"../chunks/BFXEYMV8.js";export{o as load_css,r as start};
@@ -0,0 +1,2 @@
1
+ )�import{l as o,a as r}from"../chunks/BFXEYMV8.js";export{o as load_css,r as start};
2
+ 
@@ -1,7 +1,7 @@
1
- import{a as $,c as F,f as K,e as M}from"../chunks/3MMtouT7.js";import{p as U,F as V,q as z,t as G,v as H,b as m,c as a,d as i,g as l,r as s,A as w,s as J,w as _}from"../chunks/Ce0VRwE1.js";import{P as Q,B as X,a as Y,c as h,s as y}from"../chunks/BTu-2gkj.js";import{g as Z}from"../chunks/B-aj0tWo.js";import{p as tt}from"../chunks/DjIci1dg.js";import{B as et}from"../chunks/Bn-6X1BO.js";import{S as at}from"../chunks/CG453M9q.js";import{T as st}from"../chunks/CSjf4fBs.js";const rt=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
1
+ import{a as A,c as F,f as K,e as M}from"../chunks/Cg3dlX05.js";import{p as U,F as V,v as z,t as G,w as H,b as m,c as a,d as i,g as l,r as s,B as w,s as J,x as _}from"../chunks/DYuMZGL5.js";import{P as Q,B as X,a as Y,c as h,s as y}from"../chunks/DZvnhU_8.js";import{g as Z}from"../chunks/BFXEYMV8.js";import{p as tt}from"../chunks/DfKeHoAm.js";import{B as et}from"../chunks/Bn-6X1BO.js";import{S as at}from"../chunks/CG453M9q.js";import{T as st}from"../chunks/CSjf4fBs.js";const rt=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
2
2
  <rect x="3" y="3" width="7" height="7"/>
3
3
  <rect x="14" y="3" width="7" height="7"/>
4
4
  <rect x="3" y="14" width="7" height="7"/>
5
5
  <rect x="14" y="14" width="7" height="7"/>
6
6
  </svg>
7
- `;var nt=K('<div class="app"><header class="header"><div class="header-content"><a href="/" class="logo"><img src="/app-icon.png" alt="Shooter" class="logo-icon" width="24" height="24"/> <span class="logo-text">Shooter</span></a> <div class="nav-right svelte-12qhfyh"><!> <!></div></div></header> <div class="content-area svelte-12qhfyh"><!></div> <nav class="bottom-tabs svelte-12qhfyh"><div class="bottom-tabs-inner svelte-12qhfyh"><a href="/"><!> <span>Dashboard</span></a> <a href="/activity"><!> <span>Activity</span></a> <a href="/terminals"><!> <span>Terminals</span></a></div></nav></div>');function gt(D,r){U(r,!0);const n=()=>M(tt,"$page",O),[O,W]=F();V(()=>{if(r.data?.aiProviders&&(window.__aiProviders=r.data.aiProviders,r.data.neurolinkProvider)){const t=window.process;t?.env&&(t.env.NEUROLINK_PROVIDER=r.data.neurolinkProvider)}});let o=J("unknown");const j={degraded:"Degraded",error:"Offline",healthy:"Online",unknown:"Checking"},L={degraded:"pill-status-degraded",error:"pill-status-offline",healthy:"pill-status-online",unknown:"pill-status-unknown"};z(()=>{k();const t=setInterval(()=>{k()},3e4);return()=>{clearInterval(t)}});async function k(){try{const t=await fetch("/api/health");if(!t.ok){m(o,"error");return}const e=await t.json();m(o,e.status==="healthy"||e.status==="degraded"||e.status==="error"?e.status:"unknown",!0)}catch{m(o,"error")}}var d=nt(),u=a(d),b=a(u),S=i(a(b),2),x=a(S);{let t=_(()=>j[l(o)]||"Checking"),e=_(()=>L[l(o)]||"pill-status-unknown");Q(x,{get text(){return l(t)},get classes(){return l(e)}})}var R=i(x,2);{const t=f=>{h(f,{get svg(){return at},classes:"icon-18"})};let e=_(()=>n().url.pathname==="/config"?"btn-gear-active":"");X(R,{get classes(){return`btn-gear ${l(e)??""}`},onclick:()=>{Z("/config")},ariaLabel:"Settings",icon:t,$$slots:{icon:!0}})}s(S),s(b),s(u);var g=i(u,2),T=a(g);Y(T,()=>r.children),s(g);var q=i(g,2),P=a(q),c=a(P);let B;var A=a(c);h(A,{get svg(){return rt},classes:"icon-26"}),w(2),s(c);var v=i(c,2);let I;var E=a(v);h(E,{get svg(){return et},classes:"icon-26"}),w(2),s(v);var p=i(v,2);let C;var N=a(p);h(N,{get svg(){return st},classes:"icon-26"}),w(2),s(p),s(P),s(q),s(d),G((t,e,f)=>{B=y(c,1,"tab-item svelte-12qhfyh",null,B,t),I=y(v,1,"tab-item svelte-12qhfyh",null,I,e),C=y(p,1,"tab-item svelte-12qhfyh",null,C,f)},[()=>({active:n().url.pathname==="/"||n().url.pathname.startsWith("/project")||n().url.pathname.startsWith("/session")}),()=>({active:n().url.pathname.startsWith("/activity")}),()=>({active:n().url.pathname.startsWith("/terminals")})]),$(D,d),H(),W()}export{gt as component};
7
+ `;var nt=K('<div class="app"><header class="header"><div class="header-content"><a href="/" class="logo"><img src="/app-icon.png" alt="Shooter" class="logo-icon" width="24" height="24"/> <span class="logo-text">Shooter</span></a> <div class="nav-right svelte-12qhfyh"><!> <!></div></div></header> <div class="content-area svelte-12qhfyh"><!></div> <nav class="bottom-tabs svelte-12qhfyh"><div class="bottom-tabs-inner svelte-12qhfyh"><a href="/"><!> <span>Dashboard</span></a> <a href="/activity"><!> <span>Activity</span></a> <a href="/terminals"><!> <span>Terminals</span></a></div></nav></div>');function gt(D,r){U(r,!0);const n=()=>M(tt,"$page",O),[O,W]=F();V(()=>{if(r.data?.aiProviders&&(window.__aiProviders=r.data.aiProviders,r.data.neurolinkProvider)){const t=window.process;t?.env&&(t.env.NEUROLINK_PROVIDER=r.data.neurolinkProvider)}});let o=J("unknown");const j={degraded:"Degraded",error:"Offline",healthy:"Online",unknown:"Checking"},L={degraded:"pill-status-degraded",error:"pill-status-offline",healthy:"pill-status-online",unknown:"pill-status-unknown"};z(()=>{k();const t=setInterval(()=>{k()},3e4);return()=>{clearInterval(t)}});async function k(){try{const t=await fetch("/api/health");if(!t.ok){m(o,"error");return}const e=await t.json();m(o,e.status==="healthy"||e.status==="degraded"||e.status==="error"?e.status:"unknown",!0)}catch{m(o,"error")}}var d=nt(),u=a(d),b=a(u),S=i(a(b),2),x=a(S);{let t=_(()=>j[l(o)]||"Checking"),e=_(()=>L[l(o)]||"pill-status-unknown");Q(x,{get text(){return l(t)},get classes(){return l(e)}})}var R=i(x,2);{const t=f=>{h(f,{get svg(){return at},classes:"icon-18"})};let e=_(()=>n().url.pathname==="/config"?"btn-gear-active":"");X(R,{get classes(){return`btn-gear ${l(e)??""}`},onclick:()=>{Z("/config")},ariaLabel:"Settings",icon:t,$$slots:{icon:!0}})}s(S),s(b),s(u);var g=i(u,2),T=a(g);Y(T,()=>r.children),s(g);var P=i(g,2),q=a(P),c=a(q);let B;var E=a(c);h(E,{get svg(){return rt},classes:"icon-26"}),w(2),s(c);var v=i(c,2);let I;var N=a(v);h(N,{get svg(){return et},classes:"icon-26"}),w(2),s(v);var p=i(v,2);let C;var $=a(p);h($,{get svg(){return st},classes:"icon-26"}),w(2),s(p),s(q),s(P),s(d),G((t,e,f)=>{B=y(c,1,"tab-item svelte-12qhfyh",null,B,t),I=y(v,1,"tab-item svelte-12qhfyh",null,I,e),C=y(p,1,"tab-item svelte-12qhfyh",null,C,f)},[()=>({active:n().url.pathname==="/"||n().url.pathname.startsWith("/project")||n().url.pathname.startsWith("/session")}),()=>({active:n().url.pathname.startsWith("/activity")}),()=>({active:n().url.pathname.startsWith("/terminals")})]),A(D,d),H(),W()}export{gt as component};
@@ -1 +1 @@
1
- import{i as b,a as c,c as J,f as K,s as k,e as L,t as d}from"../chunks/3MMtouT7.js";import{B as M,D as N,F as w,G as P,I as y,J as q,g as G,K as z,L as C,M as O,p as Q,t as j,v as R,c as f,d as g,N as U,$ as V,r as v}from"../chunks/Ce0VRwE1.js";import{h as W}from"../chunks/DFPEaIHz.js";import{g as X}from"../chunks/B-aj0tWo.js";import{p as Y}from"../chunks/DjIci1dg.js";import{B as $}from"../chunks/BTu-2gkj.js";function Z(n=!1){const r=M,s=r.l.u;if(!s)return;let p=()=>z(r.s);if(n){let i=0,a={};const _=C(()=>{let l=!1;const m=r.s;for(const o in m)m[o]!==a[o]&&(a[o]=m[o],l=!0);return l&&i++,i});p=()=>G(_)}s.b.length&&N(()=>{B(r,p),y(s.b)}),w(()=>{const i=P(()=>s.m.map(q));return()=>{for(const a of i)typeof a=="function"&&a()}}),s.a.length&&w(()=>{B(r,p),y(s.a)})}function B(n,r){if(n.l.s)for(const s of n.l.s)G(s);r()}O();var ee=K('<main class="error-page svelte-1j96wlh"><div class="error-content svelte-1j96wlh"><div class="error-code svelte-1j96wlh"> </div> <h1 class="error-title svelte-1j96wlh"><!></h1> <p class="error-message svelte-1j96wlh"><!></p> <div class="error-actions svelte-1j96wlh"><!> <!></div></div></main>');function ie(n,r){Q(r,!1);const s=()=>L(Y,"$page",p),[p,i]=J();Z();var a=ee();W("1j96wlh",e=>{U(()=>{V.title="Error - Shooter"})});var _=f(a),l=f(_),m=f(l,!0);v(l);var o=g(l,2),S=f(o);{var T=e=>{var t=d("Page not found");c(e,t)},A=e=>{var t=d("Something went wrong");c(e,t)};b(S,e=>{s().status===404?e(T):e(A,-1)})}v(o);var u=g(o,2),D=f(u);{var E=e=>{var t=d();j(()=>k(t,s().error.message)),c(e,t)},F=e=>{var t=d("The page you're looking for doesn't exist or has been moved.");c(e,t)},H=e=>{var t=d("An unexpected error occurred. Try refreshing or going back.");c(e,t)};b(D,e=>{s().error?.message?e(E):s().status===404?e(F,1):e(H,-1)})}v(u);var h=g(u,2),x=f(h);$(x,{text:"Go Home",classes:"btn-primary",onclick:()=>{X("/")}});var I=g(x,2);$(I,{text:"Go Back",classes:"btn-secondary",onclick:()=>{history.back()}}),v(h),v(_),v(a),j(()=>k(m,s().status)),c(n,a),R(),i()}export{ie as component};
1
+ import{i as b,a as c,c as J,f as K,s as k,e as L,t as d}from"../chunks/Cg3dlX05.js";import{D as M,E as N,F as w,G as P,I as y,J as q,g as G,K as z,L as C,M as O,p as Q,t as j,w as R,c as f,d as g,N as U,$ as V,r as v}from"../chunks/DYuMZGL5.js";import{h as W}from"../chunks/DZQMsHM5.js";import{g as X}from"../chunks/BFXEYMV8.js";import{p as Y}from"../chunks/DfKeHoAm.js";import{B as $}from"../chunks/DZvnhU_8.js";function Z(n=!1){const r=M,s=r.l.u;if(!s)return;let p=()=>z(r.s);if(n){let i=0,a={};const _=C(()=>{let l=!1;const m=r.s;for(const o in m)m[o]!==a[o]&&(a[o]=m[o],l=!0);return l&&i++,i});p=()=>G(_)}s.b.length&&N(()=>{B(r,p),y(s.b)}),w(()=>{const i=P(()=>s.m.map(q));return()=>{for(const a of i)typeof a=="function"&&a()}}),s.a.length&&w(()=>{B(r,p),y(s.a)})}function B(n,r){if(n.l.s)for(const s of n.l.s)G(s);r()}O();var ee=K('<main class="error-page svelte-1j96wlh"><div class="error-content svelte-1j96wlh"><div class="error-code svelte-1j96wlh"> </div> <h1 class="error-title svelte-1j96wlh"><!></h1> <p class="error-message svelte-1j96wlh"><!></p> <div class="error-actions svelte-1j96wlh"><!> <!></div></div></main>');function ie(n,r){Q(r,!1);const s=()=>L(Y,"$page",p),[p,i]=J();Z();var a=ee();W("1j96wlh",e=>{U(()=>{V.title="Error - Shooter"})});var _=f(a),l=f(_),m=f(l,!0);v(l);var o=g(l,2),E=f(o);{var S=e=>{var t=d("Page not found");c(e,t)},T=e=>{var t=d("Something went wrong");c(e,t)};b(E,e=>{s().status===404?e(S):e(T,-1)})}v(o);var u=g(o,2),A=f(u);{var D=e=>{var t=d();j(()=>k(t,s().error.message)),c(e,t)},F=e=>{var t=d("The page you're looking for doesn't exist or has been moved.");c(e,t)},H=e=>{var t=d("An unexpected error occurred. Try refreshing or going back.");c(e,t)};b(A,e=>{s().error?.message?e(D):s().status===404?e(F,1):e(H,-1)})}v(u);var h=g(u,2),x=f(h);$(x,{text:"Go Home",classes:"btn-primary",onclick:()=>{X("/")}});var I=g(x,2);$(I,{text:"Go Back",classes:"btn-secondary",onclick:()=>{history.back()}}),v(h),v(_),v(a),j(()=>k(m,s().status)),c(n,a),R(),i()}export{ie as component};
@@ -1,4 +1,4 @@
1
- import{d as vt,i as D,s as C,b as Fe,a as h,f as p}from"../chunks/3MMtouT7.js";import{p as ze,c,r as l,d as v,g as r,t as B,v as je,w as M,z as me,s as q,o as et,b as _,q as ft,x as gt,N as mt,$ as ht,A as Ge}from"../chunks/Ce0VRwE1.js";import{P as tt,k as pt,d as Re,s as _t,g as St,e as de,j as Le,B as Te,c as De,b as yt,i as Ue}from"../chunks/BTu-2gkj.js";import{h as bt}from"../chunks/DFPEaIHz.js";import{g as Ve}from"../chunks/B-aj0tWo.js";import{B as wt}from"../chunks/Bn-6X1BO.js";import{R as Ct,S as We}from"../chunks/DdpA9n1s.js";import{S as xt}from"../chunks/CG453M9q.js";import{c as kt,s as At,g as Et}from"../chunks/xs1Xl3_e.js";import{i as Nt}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as It}from"../chunks/BLszSzTT.js";import{S as Pt}from"../chunks/B-XSrufh.js";import{i as Tt,N as Dt}from"../chunks/CRkG7oE4.js";import{d as Ot}from"../chunks/pRcLbE0d.js";import{E as He}from"../chunks/CMQw-Fc-.js";var Rt=p('<p class="goal-text svelte-1qbe2oo"> </p>'),zt=p('<span class="summarizing svelte-1qbe2oo">Analyzing…</span>'),jt=p('<span class="summary-text svelte-1qbe2oo"> </span>'),Lt=p('<span class="summary-fallback svelte-1qbe2oo"> </span>'),Mt=p('<span class="stat stat-error svelte-1qbe2oo"> </span>'),qt=p('<div class="card svelte-1qbe2oo" role="button" tabindex="0"><div class="card-header svelte-1qbe2oo"><span class="project-name svelte-1qbe2oo"> </span> <!></div> <!> <div class="summary-row svelte-1qbe2oo"><!></div> <div class="stats-row svelte-1qbe2oo"><span class="stat svelte-1qbe2oo"><span></span> </span> <span class="stat svelte-1qbe2oo"> </span> <!> <span class="stat stat-path svelte-1qbe2oo"> </span></div></div>');function Je(t,e){ze(e,!0);function s(d){const u=Math.floor(d/1e3);if(u<60)return`${u}s`;const i=Math.floor(u/60);return i<60?`${i}m ${u%60}s`:`${Math.floor(i/60)}h ${i%60}m`}function n(d){const u=d.replace(/\/$/,"").split("/");return u.length<=2?d:u.slice(-2).join("/")}const a=M(()=>e.card.status==="running"&&e.card.isActive?"var(--ds-green-700)":e.card.status==="running"?"var(--ds-blue-700)":e.card.status==="idle"?"var(--ds-amber-700)":e.card.status==="error"?"var(--ds-red-700)":"var(--ds-gray-600)"),o=M(()=>e.card.status==="running"&&e.card.isActive||e.card.status==="running"?"● Running":e.card.status==="idle"?"◎ Idle":e.card.status==="exited"?"○ Done":e.card.status==="error"?"✕ Error":e.card.status),S=M(()=>e.card.status==="running"&&e.card.isActive?"status-pill status-pill--running-active":e.card.status==="running"?"status-pill status-pill--running":e.card.status==="idle"?"status-pill status-pill--idle":e.card.status==="exited"?"status-pill status-pill--exited":e.card.status==="error"?"status-pill status-pill--error":"status-pill"),y=M(()=>e.card.toolCallCount===0?"Waiting for activity…":e.card.toolCallCount===1?"1 tool call so far":`${e.card.toolCallCount} tool calls so far`);function E(d){(d.key==="Enter"||d.key===" ")&&(d.key===" "&&d.preventDefault(),e.onclick?.())}var b=qt(),g=c(b),f=c(g),x=c(f,!0);l(f);var k=v(f,2);tt(k,{get text(){return r(o)},get classes(){return r(S)}}),l(g);var T=v(g,2);{var Se=d=>{var u=Rt(),i=c(u,!0);l(u),B(()=>C(i,e.card.goal)),h(d,u)};D(T,d=>{e.card.goal&&d(Se)})}var $=v(T,2),ye=c($);{var be=d=>{var u=zt();h(d,u)},ee=d=>{var u=jt(),i=c(u,!0);l(u),B(()=>C(i,e.card.summary)),h(d,u)},te=d=>{var u=Lt(),i=c(u,!0);l(u),B(()=>C(i,r(y))),h(d,u)};D(ye,d=>{e.card.isSummarizing?d(be):e.card.summary?d(ee,1):e.card.status==="running"&&d(te,2)})}l($);var W=v($,2),F=c(W),ae=c(F),we=v(ae);l(F);var se=v(F,2),Ce=c(se);l(se);var re=v(se,2);{var xe=d=>{var u=Mt(),i=c(u);l(u),B(()=>C(i,`${e.card.errorCount??""} errors`)),h(d,u)};D(re,d=>{e.card.errorCount>0&&d(xe)})}var oe=v(re,2),ke=c(oe,!0);l(oe),l(W),l(b),B((d,u)=>{pt(b,`--status-color: ${r(a)??""}`),Re(b,"aria-label",`Open ${e.card.projectName??""} session`),C(x,e.card.projectName),_t(ae,1,St(e.card.status==="running"&&e.card.isActive?"status-dot-active":"status-dot-static"),"svelte-1qbe2oo"),C(we,` ${d??""}`),C(Ce,`${e.card.toolCallCount??""} tools`),Re(oe,"title",e.card.cwd),C(ke,u)},[()=>s(e.card.duration),()=>n(e.card.cwd)]),Fe("click",b,function(...d){e.onclick?.apply(this,d)}),Fe("keydown",b,E),h(t,b),je()}vt(["click","keydown"]);var Bt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Active</h3> <!></div>'),Kt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Recent</h3> <!></div>'),Yt=p("<!> <!>",1);function Ft(t,e){ze(e,!0);const s=M(()=>e.cards.filter(g=>g.status==="running")),n=M(()=>e.cards.filter(g=>g.status!=="running"));function a(g){e.onCardClick?.(g)}var o=Yt(),S=me(o);{var y=g=>{var f=Bt(),x=v(c(f),2);de(x,17,()=>r(s),k=>k.terminalId,(k,T)=>{Je(k,{get card(){return r(T)},onclick:()=>{a(r(T))}})}),l(f),h(g,f)};D(S,g=>{r(s).length>0&&g(y)})}var E=v(S,2);{var b=g=>{var f=Kt(),x=v(c(f),2);de(x,17,()=>r(n),k=>k.terminalId,(k,T)=>{Je(k,{get card(){return r(T)},onclick:()=>{a(r(T))}})}),l(f),h(g,f)};D(E,g=>{r(n).length>0&&g(b)})}h(t,o),je()}const Gt=new Set(["agent-question","terminal-exited","tool-failed"]);let fe=null,ge=null,he=null;class Ut{async summarize(e){const s=this.chooseTone(e),n=s==="conversational"?this.buildConversationalPrompt(e):this.buildStatusReportPrompt(e);try{const a=await Vt();if(!a)return console.log("[SessionSummarizer] NeuroLink not available, using fallback."),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s};const o=await a.generate({input:{text:n},...he?{model:he.model,provider:he.provider}:{}}),S=Ht(o.content??"").trim()||this.fallbackText(e);return{generatedAt:new Date().toISOString(),text:S,tone:s}}catch(a){return console.warn("[SessionSummarizer] summarize failed:",a instanceof Error?a.message:String(a)),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s}}}buildConversationalPrompt(e){const s=e.goal??"unknown",n=e.recentEvents.map(a=>{const o=[a.type];return a.tool&&o.push(`tool=${a.tool}`),a.error&&o.push(`error=${a.error}`),a.command&&o.push(`command=${a.command}`),o.join(" ")}).join(", ");return`You are monitoring a coding session. Based on the context below, write ONE sentence (max 100 chars) describing what's happening in plain English. Be specific about what Claude did or is doing.
1
+ import{d as vt,i as D,s as C,b as Fe,a as h,f as p}from"../chunks/Cg3dlX05.js";import{p as ze,c,r as l,d as v,g as r,t as B,w as je,x as M,A as me,s as q,q as et,b as _,v as ft,y as gt,N as mt,$ as ht,B as Ge}from"../chunks/DYuMZGL5.js";import{P as tt,k as pt,d as Re,s as _t,g as St,e as de,j as Le,B as Te,c as De,b as yt,i as Ue}from"../chunks/DZvnhU_8.js";import{h as bt}from"../chunks/DZQMsHM5.js";import{g as Ve}from"../chunks/BFXEYMV8.js";import{B as wt}from"../chunks/Bn-6X1BO.js";import{R as Ct,S as We}from"../chunks/BRqaaL5D.js";import{S as xt}from"../chunks/CG453M9q.js";import{c as kt,s as At,g as Et}from"../chunks/xs1Xl3_e.js";import{i as Nt}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as It}from"../chunks/BLszSzTT.js";import{S as Pt}from"../chunks/C_9BZILB.js";import{i as Tt,N as Dt}from"../chunks/CRkG7oE4.js";import{d as Ot}from"../chunks/pRcLbE0d.js";import{E as He}from"../chunks/C5VOyQCG.js";var Rt=p('<p class="goal-text svelte-1qbe2oo"> </p>'),zt=p('<span class="summarizing svelte-1qbe2oo">Analyzing…</span>'),jt=p('<span class="summary-text svelte-1qbe2oo"> </span>'),Lt=p('<span class="summary-fallback svelte-1qbe2oo"> </span>'),Mt=p('<span class="stat stat-error svelte-1qbe2oo"> </span>'),qt=p('<div class="card svelte-1qbe2oo" role="button" tabindex="0"><div class="card-header svelte-1qbe2oo"><span class="project-name svelte-1qbe2oo"> </span> <!></div> <!> <div class="summary-row svelte-1qbe2oo"><!></div> <div class="stats-row svelte-1qbe2oo"><span class="stat svelte-1qbe2oo"><span></span> </span> <span class="stat svelte-1qbe2oo"> </span> <!> <span class="stat stat-path svelte-1qbe2oo"> </span></div></div>');function Je(t,e){ze(e,!0);function s(d){const u=Math.floor(d/1e3);if(u<60)return`${u}s`;const i=Math.floor(u/60);return i<60?`${i}m ${u%60}s`:`${Math.floor(i/60)}h ${i%60}m`}function n(d){const u=d.replace(/\/$/,"").split("/");return u.length<=2?d:u.slice(-2).join("/")}const a=M(()=>e.card.status==="running"&&e.card.isActive?"var(--ds-green-700)":e.card.status==="running"?"var(--ds-blue-700)":e.card.status==="idle"?"var(--ds-amber-700)":e.card.status==="error"?"var(--ds-red-700)":"var(--ds-gray-600)"),o=M(()=>e.card.status==="running"&&e.card.isActive||e.card.status==="running"?"● Running":e.card.status==="idle"?"◎ Idle":e.card.status==="exited"?"○ Done":e.card.status==="error"?"✕ Error":e.card.status),S=M(()=>e.card.status==="running"&&e.card.isActive?"status-pill status-pill--running-active":e.card.status==="running"?"status-pill status-pill--running":e.card.status==="idle"?"status-pill status-pill--idle":e.card.status==="exited"?"status-pill status-pill--exited":e.card.status==="error"?"status-pill status-pill--error":"status-pill"),y=M(()=>e.card.toolCallCount===0?"Waiting for activity…":e.card.toolCallCount===1?"1 tool call so far":`${e.card.toolCallCount} tool calls so far`);function E(d){(d.key==="Enter"||d.key===" ")&&(d.key===" "&&d.preventDefault(),e.onclick?.())}var b=qt(),g=c(b),f=c(g),x=c(f,!0);l(f);var k=v(f,2);tt(k,{get text(){return r(o)},get classes(){return r(S)}}),l(g);var T=v(g,2);{var Se=d=>{var u=Rt(),i=c(u,!0);l(u),B(()=>C(i,e.card.goal)),h(d,u)};D(T,d=>{e.card.goal&&d(Se)})}var $=v(T,2),ye=c($);{var be=d=>{var u=zt();h(d,u)},ee=d=>{var u=jt(),i=c(u,!0);l(u),B(()=>C(i,e.card.summary)),h(d,u)},te=d=>{var u=Lt(),i=c(u,!0);l(u),B(()=>C(i,r(y))),h(d,u)};D(ye,d=>{e.card.isSummarizing?d(be):e.card.summary?d(ee,1):e.card.status==="running"&&d(te,2)})}l($);var W=v($,2),F=c(W),ae=c(F),we=v(ae);l(F);var se=v(F,2),Ce=c(se);l(se);var re=v(se,2);{var xe=d=>{var u=Mt(),i=c(u);l(u),B(()=>C(i,`${e.card.errorCount??""} errors`)),h(d,u)};D(re,d=>{e.card.errorCount>0&&d(xe)})}var oe=v(re,2),ke=c(oe,!0);l(oe),l(W),l(b),B((d,u)=>{pt(b,`--status-color: ${r(a)??""}`),Re(b,"aria-label",`Open ${e.card.projectName??""} session`),C(x,e.card.projectName),_t(ae,1,St(e.card.status==="running"&&e.card.isActive?"status-dot-active":"status-dot-static"),"svelte-1qbe2oo"),C(we,` ${d??""}`),C(Ce,`${e.card.toolCallCount??""} tools`),Re(oe,"title",e.card.cwd),C(ke,u)},[()=>s(e.card.duration),()=>n(e.card.cwd)]),Fe("click",b,function(...d){e.onclick?.apply(this,d)}),Fe("keydown",b,E),h(t,b),je()}vt(["click","keydown"]);var Bt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Active</h3> <!></div>'),Kt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Recent</h3> <!></div>'),Yt=p("<!> <!>",1);function Ft(t,e){ze(e,!0);const s=M(()=>e.cards.filter(g=>g.status==="running")),n=M(()=>e.cards.filter(g=>g.status!=="running"));function a(g){e.onCardClick?.(g)}var o=Yt(),S=me(o);{var y=g=>{var f=Bt(),x=v(c(f),2);de(x,17,()=>r(s),k=>k.terminalId,(k,T)=>{Je(k,{get card(){return r(T)},onclick:()=>{a(r(T))}})}),l(f),h(g,f)};D(S,g=>{r(s).length>0&&g(y)})}var E=v(S,2);{var b=g=>{var f=Kt(),x=v(c(f),2);de(x,17,()=>r(n),k=>k.terminalId,(k,T)=>{Je(k,{get card(){return r(T)},onclick:()=>{a(r(T))}})}),l(f),h(g,f)};D(E,g=>{r(n).length>0&&g(b)})}h(t,o),je()}const Gt=new Set(["agent-question","terminal-exited","tool-failed"]);let fe=null,ge=null,he=null;class Ut{async summarize(e){const s=this.chooseTone(e),n=s==="conversational"?this.buildConversationalPrompt(e):this.buildStatusReportPrompt(e);try{const a=await Vt();if(!a)return console.log("[SessionSummarizer] NeuroLink not available, using fallback."),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s};const o=await a.generate({input:{text:n},...he?{model:he.model,provider:he.provider}:{}}),S=Ht(o.content??"").trim()||this.fallbackText(e);return{generatedAt:new Date().toISOString(),text:S,tone:s}}catch(a){return console.warn("[SessionSummarizer] summarize failed:",a instanceof Error?a.message:String(a)),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s}}}buildConversationalPrompt(e){const s=e.goal??"unknown",n=e.recentEvents.map(a=>{const o=[a.type];return a.tool&&o.push(`tool=${a.tool}`),a.error&&o.push(`error=${a.error}`),a.command&&o.push(`command=${a.command}`),o.join(" ")}).join(", ");return`You are monitoring a coding session. Based on the context below, write ONE sentence (max 100 chars) describing what's happening in plain English. Be specific about what Claude did or is doing.
2
2
 
3
3
  Goal: ${s}
4
4
  Recent events: ${n}
@@ -1,4 +1,4 @@
1
- import{i as P,s as h,a as g,t as Be,f as A}from"../chunks/3MMtouT7.js";import{s as b,o as ke,b as _,g as n,p as Ee,q as Pe,x as Ge,c as u,d as p,r as d,t as E,A as He,v as Ne,w as N,N as Ve,$ as We}from"../chunks/Ce0VRwE1.js";import{h as Je}from"../chunks/DFPEaIHz.js";import{g as ce}from"../chunks/B-aj0tWo.js";import{j as ue,e as le,B as qe,s as Ae,b as Xe}from"../chunks/BTu-2gkj.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/B-XSrufh.js";import{i as et,N as tt}from"../chunks/CRkG7oE4.js";import{d as ot}from"../chunks/pRcLbE0d.js";const rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
1
+ import{i as P,s as h,a as g,t as Be,f as A}from"../chunks/Cg3dlX05.js";import{s as b,q as ke,b as _,g as n,p as Ee,v as Pe,y as Ge,c as u,d as p,r as d,t as E,B as He,w as Ne,x as N,N as Ve,$ as We}from"../chunks/DYuMZGL5.js";import{h as Je}from"../chunks/DZQMsHM5.js";import{g as ce}from"../chunks/BFXEYMV8.js";import{j as ue,e as le,B as qe,s as Ae,b as Xe}from"../chunks/DZvnhU_8.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/C_9BZILB.js";import{i as et,N as tt}from"../chunks/CRkG7oE4.js";import{d as ot}from"../chunks/pRcLbE0d.js";const rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
2
2
 
3
3
  ${t?`Project: ${t}
4
4
  `:""}Events:
@@ -1,11 +1,11 @@
1
- import{a as d,f as u,i as Q,s as D}from"../chunks/3MMtouT7.js";import{c as v,g as e,r as c,t as U,p as be,v as Ce,d as g,q as Oe,N as De,z as J,b as t,w as x,s as b,$ as je,A as we}from"../chunks/Ce0VRwE1.js";import{e as xe,l as Le,s as W,i as $e,a as Je,B as F,I as ie,c as se,b as Me,d as Ee}from"../chunks/BTu-2gkj.js";import{h as Fe}from"../chunks/DFPEaIHz.js";import{A as Ge}from"../chunks/DzuS5Nbr.js";import{i as ze}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{P as Ve}from"../chunks/pRcLbE0d.js";var He=u("<div><!></div>"),We=u("<div></div>");function Xe(h,o){var f=We();xe(f,21,()=>o.steps,$e,(s,w,l)=>{var S=He();let i;var I=v(S);Le(I,{get onclick(){return o.onhandleStepClick},get label(){return e(w).label},get icon(){return e(w).icon},stepIndex:l+1}),c(S),U(()=>i=W(S,1,"step-container svelte-vrgjs2",null,i,{"active-step":o.currentStepIndex===l,"completed-step":o.currentStepIndex>l})),d(s,S)}),c(f),U(()=>W(f,1,`container ${o.classes??""??""}`,"svelte-vrgjs2")),d(h,f)}var Ye=u('<div class="card-description svelte-qdre9c"> </div>'),Ze=u('<div class="card-header svelte-qdre9c"><div class="card-title svelte-qdre9c"> </div> <!></div>'),et=u('<div><!> <div class="card-content svelte-qdre9c"><!></div></div>');function G(h,o){be(o,!0);var f=et(),s=v(f);{var w=i=>{var I=Ze(),q=v(I),j=v(q,!0);c(q);var L=g(q,2);{var B=T=>{var M=Ye(),z=v(M,!0);c(M),U(()=>D(z,o.description)),d(T,M)};Q(L,T=>{typeof o.description=="string"&&o.description.length>0&&T(B)})}c(I),U(()=>D(j,o.title)),d(i,I)};Q(s,i=>{typeof o.title=="string"&&o.title.length>0&&i(w)})}var l=g(s,2),S=v(l);Je(S,()=>o.children),c(l),c(f),U(()=>W(f,1,`card ${o.classes??""??""}`,"svelte-qdre9c")),d(h,f),Ce()}function H(h){return h instanceof Error?h.message:typeof h=="string"?h:String(h)}function tt(){return Pe()!==null}async function rt(){const h=Pe();if(!h)throw new Error("Scanner not available");return h()}function Pe(){if(typeof window>"u")return null;const h=window.ShooterBridge?.scanner;if(h&&typeof h.scan=="function")return()=>h.scan();const o=window.ShooterNativeBridge?.scanner;return o&&typeof o.scan=="function"?()=>o.scan():null}const Se=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1
+ import{a as d,f as u,i as Q,s as D}from"../chunks/Cg3dlX05.js";import{c as v,g as e,r as c,t as U,p as ke,w as Ce,d as g,v as Oe,N as De,A as J,b as t,x,s as k,$ as Le,B as we}from"../chunks/DYuMZGL5.js";import{e as xe,l as je,s as W,i as $e,a as Je,B as F,I as ie,c as se,b as Me,d as Ee}from"../chunks/DZvnhU_8.js";import{h as Fe}from"../chunks/DZQMsHM5.js";import{A as Ge}from"../chunks/DzuS5Nbr.js";import{i as ze}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{P as Ve}from"../chunks/pRcLbE0d.js";var He=u("<div><!></div>"),We=u("<div></div>");function Xe(h,o){var f=We();xe(f,21,()=>o.steps,$e,(s,w,l)=>{var S=He();let i;var I=v(S);je(I,{get onclick(){return o.onhandleStepClick},get label(){return e(w).label},get icon(){return e(w).icon},stepIndex:l+1}),c(S),U(()=>i=W(S,1,"step-container svelte-dvxh34",null,i,{"active-step":o.currentStepIndex===l,"completed-step":o.currentStepIndex>l})),d(s,S)}),c(f),U(()=>W(f,1,`container ${o.classes??""??""}`,"svelte-dvxh34")),d(h,f)}var Ye=u('<div class="card-description svelte-15b0v7e"> </div>'),Ze=u('<div class="card-header svelte-15b0v7e"><div class="card-title svelte-15b0v7e"> </div> <!></div>'),et=u('<div><!> <div class="card-content svelte-15b0v7e"><!></div></div>');function G(h,o){ke(o,!0);var f=et(),s=v(f);{var w=i=>{var I=Ze(),T=v(I),L=v(T,!0);c(T);var j=g(T,2);{var q=A=>{var M=Ye(),z=v(M,!0);c(M),U(()=>D(z,o.description)),d(A,M)};Q(j,A=>{typeof o.description=="string"&&o.description.length>0&&A(q)})}c(I),U(()=>D(L,o.title)),d(i,I)};Q(s,i=>{typeof o.title=="string"&&o.title.length>0&&i(w)})}var l=g(s,2),S=v(l);Je(S,()=>o.children),c(l),c(f),U(()=>W(f,1,`card ${o.classes??""??""}`,"svelte-15b0v7e")),d(h,f),Ce()}function H(h){return h instanceof Error?h.message:typeof h=="string"?h:String(h)}function tt(){return Pe()!==null}async function rt(){const h=Pe();if(!h)throw new Error("Scanner not available");return h()}function Pe(){if(typeof window>"u")return null;const h=window.ShooterBridge?.scanner;if(h&&typeof h.scan=="function")return()=>h.scan();const o=window.ShooterNativeBridge?.scanner;return o&&typeof o.scan=="function"?()=>o.scan():null}const Se=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
2
  <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/>
3
3
  <polyline points="22 4 12 14.01 9 11.01"/>
4
4
  </svg>
5
5
  `,nt=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
6
6
  <polygon points="5 3 19 12 5 21 5 3"/>
7
7
  </svg>
8
- `,ke=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
8
+ `,be=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
9
9
  <circle cx="12" cy="12" r="10"/>
10
10
  <line x1="15" y1="9" x2="9" y2="15"/>
11
11
  <line x1="9" y1="9" x2="15" y2="15"/>
@@ -13,4 +13,4 @@ import{a as d,f as u,i as Q,s as D}from"../chunks/3MMtouT7.js";import{c as v,g a
13
13
  `;var at=u('<meta name="description" content="Configure notification system settings"/>'),ot=u(`<!> <!> <p class="input-help svelte-1gp6n77">Find this in your <code class="svelte-1gp6n77">~/.shooter/.env</code> file. Run <code class="svelte-1gp6n77">shooter setup</code> to generate
14
14
  one.</p> <!> <p class="input-help svelte-1gp6n77">Optional — only needed for iOS/Android push notifications.</p>`,1),it=u("<!> Test Connection",1),st=u(`<p class="qr-description svelte-1gp6n77">Scan the QR code shown on your server's settings page to auto-configure the
15
15
  connection.</p> <!>`,1),ct=u('<p class="qr-server-url svelte-1gp6n77">Server: <code class="svelte-1gp6n77"> </code></p>'),lt=u('<div class="qr-container svelte-1gp6n77"><img alt="QR code for mobile app pairing" class="qr-image svelte-1gp6n77"/></div> <p class="qr-hint svelte-1gp6n77">Scan this QR code with the Shooter iOS or Android app to connect.</p> <!>',1),dt=u('<div class="qr-placeholder svelte-1gp6n77"><p class="qr-loading-text svelte-1gp6n77">Generating QR code...</p></div>'),vt=u('<p class="qr-error svelte-1gp6n77"> </p>'),ut=u(`<p class="qr-description svelte-1gp6n77">Generate a QR code containing your server URL and API key. Your mobile app can
16
- scan it to auto-configure the connection.</p>`),gt=u("<!> <!>",1),ft=u('<div class="qr-section svelte-1gp6n77"><!></div>'),pt=u('<div class="provider-row svelte-1gp6n77"><!> <span class="provider-label svelte-1gp6n77"> </span> <span> </span></div>'),ht=u('<div class="active-provider svelte-1gp6n77">Active: <strong> </strong></div>'),mt=u('<div class="active-provider svelte-1gp6n77">Auto-detected from configured keys</div>'),yt=u('<p class="ai-help svelte-1gp6n77">Run <code class="svelte-1gp6n77">shooter setup</code> to configure AI providers for summaries.</p>'),_t=u('<div class="ai-providers svelte-1gp6n77"><!> <!></div>'),wt=u('<p class="danger-description svelte-1gp6n77">Clear all saved configuration data from this device.</p> <!>',1),St=u('<main class="main"><div class="settings-container svelte-1gp6n77"><div style="margin-bottom: var(--space-4);"><a href="/" class="back-link">← Back to Projects</a></div> <div class="page-header"><h1 class="page-title">Settings</h1> <p class="page-description">Configure your API credentials and notification preferences</p></div> <div class="settings-grid svelte-1gp6n77"><section class="settings-section svelte-1gp6n77"><!> <!> <div class="button-group svelte-1gp6n77"><!> <!></div></section> <aside class="settings-sidebar svelte-1gp6n77"><!> <!> <!> <!></aside></div></div></main>');function qt(h,o){be(o,!0);let f=b(""),s=b(""),w=b(""),l=b(""),S=b(!1),i=b(""),I=b(!1),q=b(""),j=b(""),L=b(!1),B=b(""),T=b(!1),M=b(!1),z=!1,V=b(!1);async function Re(){if(!e(s).trim()){t(B,"Save an API key first to generate a QR code");return}t(L,!0),t(B,""),t(q,""),t(j,"");try{const r=await fetch("/api/qr-config",{headers:{Authorization:`Bearer ${e(s).trim()}`}});if(!r.ok){const a=await r.json();t(B,a.error||"Failed to generate QR code",!0);return}const n=await r.json();t(q,n.dataUrl,!0),t(j,n.serverUrl,!0)}catch(r){t(B,`Network error: ${H(r)}`)}finally{t(L,!1)}}async function Ue(){t(V,!0),t(l,""),t(i,"");try{const r=await rt();try{const n=JSON.parse(r);typeof n.serverUrl=="string"&&n.serverUrl&&t(f,n.serverUrl,!0),typeof n.apiKey=="string"&&n.apiKey&&t(s,n.apiKey,!0),await Z();const a=e(i);a!=="error"&&a!=="warning"&&(t(l,"Configuration updated from QR code"),t(i,"success"))}catch{t(l,"Invalid QR code data"),t(i,"error")}}catch(r){const n=H(r);n!=="cancelled"&&(t(l,`Scanner error: ${n}`),t(i,"error"))}finally{t(V,!1)}}function X(){return typeof window>"u"?null:window.ShooterBridge?window.ShooterBridge:window.ShooterNativeBridge?window.ShooterNativeBridge:null}function Y(){return window.location.origin}function ce(){const r=X();if(r&&!z){t(I,!0);try{const n=JSON.parse(r.getConfig?.()??"{}");n.serverUrl&&t(f,n.serverUrl,!0),n.apiKey&&t(s,n.apiKey,!0);const a=r.getFcmToken?.();a&&t(w,a,!0),z=!0}catch{}}t(T,tt(),!0)}Oe(()=>{{const r=window.location.hash.slice(1);if(r){const n=new URLSearchParams(r),a=n.get("key"),p=n.get("url");a&&(t(s,a,!0),p&&t(f,p,!0),Z(),window.history.replaceState({},"",window.location.pathname))}if(!e(s))try{const n=localStorage.getItem("shooter_config");if(n){const a=JSON.parse(n);ze(a)?(a.apiKey&&t(s,a.apiKey,!0),a.deviceToken&&t(w,a.deviceToken,!0),a.serverUrl&&t(f,a.serverUrl,!0)):localStorage.removeItem("shooter_config")}}catch{}if(ce(),e(f)||t(f,Y(),!0),t(M,!0),!e(T)){const n=setInterval(()=>{ce(),e(T)&&clearInterval(n)},200);setTimeout(()=>{clearInterval(n)},3e3)}}});async function Z(){t(S,!0),t(l,""),t(i,"");try{const r=e(f).trim().replace(/\/+$/,"");localStorage.setItem("shooter_config",JSON.stringify({apiKey:e(s).trim(),deviceToken:e(w).trim(),lastUpdated:Date.now(),serverUrl:r||Y()}));const n=X();n&&n.saveConfig?.(JSON.stringify({apiKey:e(s).trim(),serverUrl:r||Y()})),(await fetch("/api/health")).ok?(t(l,"Configuration saved successfully"),t(i,"success")):(t(l,"Configuration saved but system health check failed"),t(i,"warning"))}catch(r){t(l,`Configuration failed: ${H(r)}`),t(i,"error")}t(S,!1)}async function Ie(){if(!e(s).trim()){t(l,"API key is required for testing"),t(i,"error");return}t(S,!0),t(l,""),t(i,"");try{const r={data:{source:"config-test",timestamp:Date.now()},message:`Configuration test at ${new Date().toLocaleTimeString()}`,title:"Configuration Test"};e(w).trim()&&(r.deviceToken=e(w).trim());const n=await fetch("/api/notify",{body:JSON.stringify(r),headers:{Authorization:`Bearer ${e(s)}`,"Content-Type":"application/json"},method:"POST"}),a=await n.json();n.ok?(t(l,"Test notification sent successfully"),t(i,"success")):(t(l,`Test failed: ${typeof a.error=="string"?a.error:"Unknown error"}`),t(i,"error"))}catch(r){t(l,`Network error: ${H(r)}`),t(i,"error")}t(S,!1)}function qe(){{localStorage.removeItem("shooter_config"),t(f,typeof window<"u"?window.location.origin:"",!0),t(s,""),t(w,""),t(l,"Configuration cleared"),t(i,"success");const r=X();r&&r.saveConfig?.(JSON.stringify({apiKey:"",serverUrl:""}))}}var ee=St();Fe("1gp6n77",r=>{var n=at();De(()=>{je.title="Settings - Shooter"}),d(r,n)});var le=v(ee),de=g(v(le),4),te=v(de),ve=v(te);G(ve,{title:"Server Configuration",description:"Configure server connection and credentials",children:(r,n)=>{var a=ot(),p=J(a);ie(p,{name:"serverUrl",label:"Server URL",dataType:"text",placeholder:"https://shooter.breezehq.dev",infoMessage:"Base URL of your Shooter server. Apps will reload with this URL on next launch.",get value(){return e(f)},set value(C){t(f,C,!0)}});var P=g(p,2);ie(P,{name:"apiKey",label:"API Key",dataType:"password",placeholder:"Enter your API key",infoMessage:"Required for sending notifications",get value(){return e(s)},set value(C){t(s,C,!0)}});var K=g(P,4);{let C=x(()=>e(I)?"Waiting for token...":"64-character hex string"),R=x(()=>e(I)&&e(w)?"Auto-detected from app":"Device token from app registration");ie(K,{name:"deviceToken",label:"Device Token",dataType:"text",get placeholder(){return e(C)},get infoMessage(){return e(R)},classes:"input-mono",get value(){return e(w)},set value(A){t(w,A,!0)}})}we(2),d(r,a)},$$slots:{default:!0}});var ue=g(ve,2);{var Te=r=>{const n=x(()=>e(i)==="success"?Se:e(i)==="error"?ke:Ge);{const a=P=>{se(P,{get svg(){return e(n)},classes:"icon-16"})};let p=x(()=>e(i)||"info");Me(r,{get text(){return e(l)},get classes(){return`banner-${e(p)??""}`},icon:a,$$slots:{icon:!0}})}};Q(ue,r=>{e(l)&&r(Te)})}var ge=g(ue,2),fe=v(ge);{let r=x(()=>e(S)||!e(s).trim());F(fe,{classes:"btn-secondary",onclick:Ie,get disabled(){return e(r)},children:(n,a)=>{var p=it(),P=J(p);{var K=C=>{se(C,{get svg(){return nt},classes:"icon-14"})};Q(P,C=>{e(S)||C(K)})}we(),d(n,p)},$$slots:{default:!0}})}var Ae=g(fe,2);{let r=x(()=>e(S)||!e(s).trim());F(Ae,{classes:"btn-primary",onclick:Z,get disabled(){return e(r)},get showLoader(){return e(S)},text:"Save Changes"})}c(ge),c(te);var pe=g(te,2),he=v(pe);G(he,{title:"Setup Guide",children:(r,n)=>{{let a=x(()=>e(s).trim()&&e(w).trim()?2:e(s).trim()?1:0);Xe(r,{steps:[{label:"Get API Key"},{label:"Find Device Token"},{label:"Test Connection"}],get currentStepIndex(){return e(a)},classes:"setup-stepper"})}},$$slots:{default:!0}});var me=g(he,2);{let r=x(()=>e(T)?"Scan a QR code to connect":"Scan to connect your mobile app");G(me,{title:"Mobile App Setup",get description(){return e(r)},children:(n,a)=>{var p=ft(),P=v(p);{var K=R=>{var A=st(),m=g(J(A),2);{let _=x(()=>e(V)?"Scanning...":"Scan QR Code");F(m,{classes:"btn-secondary btn-sm",onclick:Ue,get disabled(){return e(V)},get text(){return e(_)}})}d(R,A)},C=R=>{var A=gt(),m=J(A);{var _=y=>{var k=lt(),O=J(k),ne=v(O);c(O);var Ne=g(O,4);{var Qe=ae=>{var oe=ct(),_e=g(v(oe)),Ke=v(_e,!0);c(_e),c(oe),U(()=>D(Ke,e(j))),d(ae,oe)};Q(Ne,ae=>{e(j)&&ae(Qe)})}U(()=>Ee(ne,"src",e(q))),d(y,k)},N=y=>{var k=dt();d(y,k)},$=y=>{var k=vt(),O=v(k,!0);c(k),U(()=>D(O,e(B))),d(y,k)},E=y=>{var k=ut();d(y,k)};Q(m,y=>{e(q)?y(_):e(L)?y(N,1):e(B)?y($,2):y(E,-1)})}var re=g(m,2);{let y=x(()=>e(L)||!e(s).trim()),k=x(()=>e(q)?"Regenerate QR Code":"Generate QR Code");F(re,{classes:"btn-secondary btn-sm",onclick:Re,get disabled(){return e(y)},get text(){return e(k)}})}d(R,A)};Q(P,R=>{e(T)?R(K):R(C,-1)})}c(p),d(n,p)},$$slots:{default:!0}})}var ye=g(me,2);G(ye,{title:"AI Providers",description:"NeuroLink-powered summaries and AI features",children:(r,n)=>{var a=_t(),p=v(a);xe(p,17,()=>Ve,m=>m.id,(m,_)=>{var N=pt(),$=v(N);{let ne=x(()=>o.data.aiProviders[e(_).id]?Se:ke);se($,{get svg(){return e(ne)},classes:"icon-14"})}var E=g($,2),re=v(E,!0);c(E);var y=g(E,2);let k;var O=v(y,!0);c(y),c(N),U(()=>{D(re,e(_).label),k=W(y,1,"provider-status svelte-1gp6n77",null,k,{configured:o.data.aiProviders[e(_).id]}),D(O,o.data.aiProviders[e(_).id]?"configured":"not configured")}),d(m,N)});var P=g(p,2);{var K=m=>{var _=ht(),N=g(v(_)),$=v(N,!0);c(N),c(_),U(()=>D($,o.data.activeProvider)),d(m,_)},C=m=>{var _=mt();d(m,_)},R=x(()=>Object.values(o.data.aiProviders).some(Boolean)),A=m=>{var _=yt();d(m,_)};Q(P,m=>{o.data.activeProvider?m(K):e(R)?m(C,1):m(A,-1)})}c(a),d(r,a)},$$slots:{default:!0}});var Be=g(ye,2);G(Be,{title:"Danger Zone",children:(r,n)=>{var a=wt(),p=g(J(a),2);F(p,{classes:"btn-danger btn-sm",onclick:qe,text:"Clear Configuration"}),d(r,a)},$$slots:{default:!0}}),c(pe),c(de),c(le),c(ee),d(h,ee),Ce()}export{qt as component};
16
+ scan it to auto-configure the connection.</p>`),gt=u("<!> <!>",1),ft=u('<div class="qr-section svelte-1gp6n77"><!></div>'),pt=u('<div class="provider-row svelte-1gp6n77"><!> <span class="provider-label svelte-1gp6n77"> </span> <span> </span></div>'),ht=u('<div class="active-provider svelte-1gp6n77">Active: <strong> </strong></div>'),mt=u('<div class="active-provider svelte-1gp6n77">Auto-detected from configured keys</div>'),yt=u('<p class="ai-help svelte-1gp6n77">Run <code class="svelte-1gp6n77">shooter setup</code> to configure AI providers for summaries.</p>'),_t=u('<div class="ai-providers svelte-1gp6n77"><!> <!></div>'),wt=u('<p class="danger-description svelte-1gp6n77">Clear all saved configuration data from this device.</p> <!>',1),St=u('<main class="main"><div class="settings-container svelte-1gp6n77"><div style="margin-bottom: var(--space-4);"><a href="/" class="back-link">← Back to Projects</a></div> <div class="page-header"><h1 class="page-title">Settings</h1> <p class="page-description">Configure your API credentials and notification preferences</p></div> <div class="settings-grid svelte-1gp6n77"><section class="settings-section svelte-1gp6n77"><!> <!> <div class="button-group svelte-1gp6n77"><!> <!></div></section> <aside class="settings-sidebar svelte-1gp6n77"><!> <!> <!> <!></aside></div></div></main>');function Tt(h,o){ke(o,!0);let f=k(""),s=k(""),w=k(""),l=k(""),S=k(!1),i=k(""),I=k(!1),T=k(""),L=k(""),j=k(!1),q=k(""),A=k(!1),M=k(!1),z=!1,V=k(!1);async function Re(){if(!e(s).trim()){t(q,"Save an API key first to generate a QR code");return}t(j,!0),t(q,""),t(T,""),t(L,"");try{const r=await fetch("/api/qr-config",{headers:{Authorization:`Bearer ${e(s).trim()}`}});if(!r.ok){const a=await r.json();t(q,a.error||"Failed to generate QR code",!0);return}const n=await r.json();t(T,n.dataUrl,!0),t(L,n.serverUrl,!0)}catch(r){t(q,`Network error: ${H(r)}`)}finally{t(j,!1)}}async function Ue(){t(V,!0),t(l,""),t(i,"");try{const r=await rt();try{const n=JSON.parse(r);typeof n.serverUrl=="string"&&n.serverUrl&&t(f,n.serverUrl,!0),typeof n.apiKey=="string"&&n.apiKey&&t(s,n.apiKey,!0),await Z();const a=e(i);a!=="error"&&a!=="warning"&&(t(l,"Configuration updated from QR code"),t(i,"success"))}catch{t(l,"Invalid QR code data"),t(i,"error")}}catch(r){const n=H(r);n!=="cancelled"&&(t(l,`Scanner error: ${n}`),t(i,"error"))}finally{t(V,!1)}}function X(){return typeof window>"u"?null:window.ShooterBridge?window.ShooterBridge:window.ShooterNativeBridge?window.ShooterNativeBridge:null}function Y(){return window.location.origin}function ce(){const r=X();if(r&&!z){t(I,!0);try{const n=JSON.parse(r.getConfig?.()??"{}");n.serverUrl&&t(f,n.serverUrl,!0),n.apiKey&&t(s,n.apiKey,!0);const a=r.getFcmToken?.();a&&t(w,a,!0),z=!0}catch{}}t(A,tt(),!0)}Oe(()=>{{const r=window.location.hash.slice(1);if(r){const n=new URLSearchParams(r),a=n.get("key"),p=n.get("url");a&&(t(s,a,!0),p&&t(f,p,!0),Z(),window.history.replaceState({},"",window.location.pathname))}if(!e(s))try{const n=localStorage.getItem("shooter_config");if(n){const a=JSON.parse(n);ze(a)?(a.apiKey&&t(s,a.apiKey,!0),a.deviceToken&&t(w,a.deviceToken,!0),a.serverUrl&&t(f,a.serverUrl,!0)):localStorage.removeItem("shooter_config")}}catch{}if(ce(),e(f)||t(f,Y(),!0),t(M,!0),!e(A)){const n=setInterval(()=>{ce(),e(A)&&clearInterval(n)},200);setTimeout(()=>{clearInterval(n)},3e3)}}});async function Z(){t(S,!0),t(l,""),t(i,"");try{const r=e(f).trim().replace(/\/+$/,"");localStorage.setItem("shooter_config",JSON.stringify({apiKey:e(s).trim(),deviceToken:e(w).trim(),lastUpdated:Date.now(),serverUrl:r||Y()}));const n=X();n&&n.saveConfig?.(JSON.stringify({apiKey:e(s).trim(),serverUrl:r||Y()})),(await fetch("/api/health")).ok?(t(l,"Configuration saved successfully"),t(i,"success")):(t(l,"Configuration saved but system health check failed"),t(i,"warning"))}catch(r){t(l,`Configuration failed: ${H(r)}`),t(i,"error")}t(S,!1)}async function Ie(){if(!e(s).trim()){t(l,"API key is required for testing"),t(i,"error");return}t(S,!0),t(l,""),t(i,"");try{const r={data:{source:"config-test",timestamp:Date.now()},message:`Configuration test at ${new Date().toLocaleTimeString()}`,title:"Configuration Test"};e(w).trim()&&(r.deviceToken=e(w).trim());const n=await fetch("/api/notify",{body:JSON.stringify(r),headers:{Authorization:`Bearer ${e(s)}`,"Content-Type":"application/json"},method:"POST"}),a=await n.json();n.ok?(t(l,"Test notification sent successfully"),t(i,"success")):(t(l,`Test failed: ${typeof a.error=="string"?a.error:"Unknown error"}`),t(i,"error"))}catch(r){t(l,`Network error: ${H(r)}`),t(i,"error")}t(S,!1)}function Te(){{localStorage.removeItem("shooter_config"),t(f,typeof window<"u"?window.location.origin:"",!0),t(s,""),t(w,""),t(l,"Configuration cleared"),t(i,"success");const r=X();r&&r.saveConfig?.(JSON.stringify({apiKey:"",serverUrl:""}))}}var ee=St();Fe("1gp6n77",r=>{var n=at();De(()=>{Le.title="Settings - Shooter"}),d(r,n)});var le=v(ee),de=g(v(le),4),te=v(de),ve=v(te);G(ve,{title:"Server Configuration",description:"Configure server connection and credentials",children:(r,n)=>{var a=ot(),p=J(a);ie(p,{name:"serverUrl",label:"Server URL",dataType:"text",placeholder:"https://shooter.breezehq.dev",infoMessage:"Base URL of your Shooter server. Apps will reload with this URL on next launch.",get value(){return e(f)},set value(C){t(f,C,!0)}});var P=g(p,2);ie(P,{name:"apiKey",label:"API Key",dataType:"password",placeholder:"Enter your API key",infoMessage:"Required for sending notifications",get value(){return e(s)},set value(C){t(s,C,!0)}});var K=g(P,4);{let C=x(()=>e(I)?"Waiting for token...":"64-character hex string"),R=x(()=>e(I)&&e(w)?"Auto-detected from app":"Device token from app registration");ie(K,{name:"deviceToken",label:"Device Token",dataType:"text",get placeholder(){return e(C)},get infoMessage(){return e(R)},classes:"input-mono",get value(){return e(w)},set value(B){t(w,B,!0)}})}we(2),d(r,a)},$$slots:{default:!0}});var ue=g(ve,2);{var Ae=r=>{const n=x(()=>e(i)==="success"?Se:e(i)==="error"?be:Ge);{const a=P=>{se(P,{get svg(){return e(n)},classes:"icon-16"})};let p=x(()=>e(i)||"info");Me(r,{get text(){return e(l)},get classes(){return`banner-${e(p)??""}`},icon:a,$$slots:{icon:!0}})}};Q(ue,r=>{e(l)&&r(Ae)})}var ge=g(ue,2),fe=v(ge);{let r=x(()=>e(S)||!e(s).trim());F(fe,{classes:"btn-secondary",onclick:Ie,get disabled(){return e(r)},children:(n,a)=>{var p=it(),P=J(p);{var K=C=>{se(C,{get svg(){return nt},classes:"icon-14"})};Q(P,C=>{e(S)||C(K)})}we(),d(n,p)},$$slots:{default:!0}})}var Be=g(fe,2);{let r=x(()=>e(S)||!e(s).trim());F(Be,{classes:"btn-primary",onclick:Z,get disabled(){return e(r)},get showLoader(){return e(S)},text:"Save Changes"})}c(ge),c(te);var pe=g(te,2),he=v(pe);G(he,{title:"Setup Guide",children:(r,n)=>{{let a=x(()=>e(s).trim()&&e(w).trim()?2:e(s).trim()?1:0);Xe(r,{steps:[{label:"Get API Key"},{label:"Find Device Token"},{label:"Test Connection"}],get currentStepIndex(){return e(a)},classes:"setup-stepper"})}},$$slots:{default:!0}});var me=g(he,2);{let r=x(()=>e(A)?"Scan a QR code to connect":"Scan to connect your mobile app");G(me,{title:"Mobile App Setup",get description(){return e(r)},children:(n,a)=>{var p=ft(),P=v(p);{var K=R=>{var B=st(),m=g(J(B),2);{let _=x(()=>e(V)?"Scanning...":"Scan QR Code");F(m,{classes:"btn-secondary btn-sm",onclick:Ue,get disabled(){return e(V)},get text(){return e(_)}})}d(R,B)},C=R=>{var B=gt(),m=J(B);{var _=y=>{var b=lt(),O=J(b),ne=v(O);c(O);var Ne=g(O,4);{var Qe=ae=>{var oe=ct(),_e=g(v(oe)),Ke=v(_e,!0);c(_e),c(oe),U(()=>D(Ke,e(L))),d(ae,oe)};Q(Ne,ae=>{e(L)&&ae(Qe)})}U(()=>Ee(ne,"src",e(T))),d(y,b)},N=y=>{var b=dt();d(y,b)},$=y=>{var b=vt(),O=v(b,!0);c(b),U(()=>D(O,e(q))),d(y,b)},E=y=>{var b=ut();d(y,b)};Q(m,y=>{e(T)?y(_):e(j)?y(N,1):e(q)?y($,2):y(E,-1)})}var re=g(m,2);{let y=x(()=>e(j)||!e(s).trim()),b=x(()=>e(T)?"Regenerate QR Code":"Generate QR Code");F(re,{classes:"btn-secondary btn-sm",onclick:Re,get disabled(){return e(y)},get text(){return e(b)}})}d(R,B)};Q(P,R=>{e(A)?R(K):R(C,-1)})}c(p),d(n,p)},$$slots:{default:!0}})}var ye=g(me,2);G(ye,{title:"AI Providers",description:"NeuroLink-powered summaries and AI features",children:(r,n)=>{var a=_t(),p=v(a);xe(p,17,()=>Ve,m=>m.id,(m,_)=>{var N=pt(),$=v(N);{let ne=x(()=>o.data.aiProviders[e(_).id]?Se:be);se($,{get svg(){return e(ne)},classes:"icon-14"})}var E=g($,2),re=v(E,!0);c(E);var y=g(E,2);let b;var O=v(y,!0);c(y),c(N),U(()=>{D(re,e(_).label),b=W(y,1,"provider-status svelte-1gp6n77",null,b,{configured:o.data.aiProviders[e(_).id]}),D(O,o.data.aiProviders[e(_).id]?"configured":"not configured")}),d(m,N)});var P=g(p,2);{var K=m=>{var _=ht(),N=g(v(_)),$=v(N,!0);c(N),c(_),U(()=>D($,o.data.activeProvider)),d(m,_)},C=m=>{var _=mt();d(m,_)},R=x(()=>Object.values(o.data.aiProviders).some(Boolean)),B=m=>{var _=yt();d(m,_)};Q(P,m=>{o.data.activeProvider?m(K):e(R)?m(C,1):m(B,-1)})}c(a),d(r,a)},$$slots:{default:!0}});var qe=g(ye,2);G(qe,{title:"Danger Zone",children:(r,n)=>{var a=wt(),p=g(J(a),2);F(p,{classes:"btn-danger btn-sm",onclick:Te,text:"Clear Configuration"}),d(r,a)},$$slots:{default:!0}}),c(pe),c(de),c(le),c(ee),d(h,ee),Ce()}export{Tt as component};
@@ -1 +1 @@
1
- import{d as q,i as T,b as H,a as k,f as N,s as V}from"../chunks/3MMtouT7.js";import{p as z,s as n,o as J,q as Q,v as W,g as t,b as r,w as _,d as g,c as b,r as c,t as X}from"../chunks/Ce0VRwE1.js";import{e as K,I as Z,B as ee,s as te,i as ae,P as I}from"../chunks/BTu-2gkj.js";import{i as se,N as S}from"../chunks/CRkG7oE4.js";import{P as O}from"../chunks/pRcLbE0d.js";var re=N('<div class="provider-bar svelte-sjabew"></div>'),ie=N("<div> </div>"),oe=N('<div class="page svelte-sjabew"><header class="svelte-sjabew"><h1 class="svelte-sjabew">NeuroLink</h1> <span class="version svelte-sjabew">new NeuroLink()</span> <!></header> <!> <div class="log svelte-sjabew" id="log"></div> <div class="input-bar svelte-sjabew"><!> <!></div></div>');function pe(M,p){z(p,!0);let u=n(null),m=n(null),h=n(J([])),d=n(""),v=n(!1),f=n(!1),o=n("litellm");function i(e,a="info"){r(h,[...t(h),{text:e,type:a}],!0)}function R(){const e=globalThis.process;if(!e?.env)return;const a=e.env;p.data.litellmBaseUrl&&(a.LITELLM_BASE_URL=p.data.litellmBaseUrl),p.data.litellmModel&&(a.LITELLM_MODEL=p.data.litellmModel);const s=window.__aiProviders;s?.["google-ai"]&&(a.GOOGLE_AI_API_KEY="proxy-via-server"),s?.anthropic&&(a.ANTHROPIC_API_KEY="proxy-via-server"),s?.openai&&(a.OPENAI_API_KEY="proxy-via-server"),s?.mistral&&(a.MISTRAL_API_KEY="proxy-via-server")}Q(async()=>{$(),se(),R(),i("Loading NeuroLink from CDN..."),i(S,"dim");try{r(u,await import(S),!0),i(`Loaded! ${Object.keys(t(u)??{}).length} exports`,"pass"),r(m,new(t(u)).NeuroLink({provider:t(o)}),!0),i(`NeuroLink ready · provider: ${t(o)}`,"pass"),r(f,!0)}catch(e){i(`Failed to load: ${e instanceof Error?e.message:String(e)}`,"fail")}});function D(e){!t(u)||e===t(o)||(r(o,e,!0),r(m,new(t(u)).NeuroLink({provider:e}),!0),i(`Switched to provider: ${e}`,"dim"))}function $(){typeof globalThis.process>"u"&&(globalThis.process={cwd:()=>"/",env:{},platform:"browser",version:"v24.0.0"}),typeof globalThis.global>"u"&&(globalThis.global=globalThis)}async function P(){if(!t(d).trim()||!t(m)||t(v))return;const e=t(d).trim();r(d,""),r(v,!0),i(`> ${e}`,"user");const a=O.find(s=>s.id===t(o));if(!a){r(v,!1);return}try{const s=await t(m).generate({input:{text:e},model:a.model,provider:a.id}),l=typeof s.content=="string"?s.content:"(empty response)",E=s.usage;i(l,"ai"),i(`${a.id}/${a.model} | ${E?.total??"?"} tokens`,"dim")}catch(s){i(`Error: ${s instanceof Error?s.message:String(s)}`,"fail")}r(v,!1)}function B(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),P())}var y=oe(),w=b(y),U=g(b(w),4);{var C=e=>{I(e,{text:"Connected",classes:"pill-connected"})},Y=e=>{I(e,{text:"Loading...",classes:"pill-loading"})};T(U,e=>{t(f)?e(C):e(Y,-1)})}c(w);var j=g(w,2);{var F=e=>{var a=re();K(a,21,()=>O,s=>s.id,(s,l)=>{{let E=_(()=>t(o)===t(l).id?"prov-pill--active":"");I(s,{get text(){return t(l).label},get classes(){return`prov-pill ${t(E)??""}`},onclick:()=>{D(t(l).id)}})}}),c(a),k(e,a)};T(j,e=>{t(f)&&e(F)})}var L=g(j,2);K(L,21,()=>t(h),ae,(e,a)=>{var s=ie(),l=b(s,!0);c(s),X(()=>{te(s,1,`log-entry ${t(a).type??""}`,"svelte-sjabew"),V(l,t(a).text)}),k(e,s)}),c(L);var x=g(L,2),A=b(x);{let e=_(()=>t(f)?`Ask anything... [${t(o)}]`:"Loading SDK...");Z(A,{name:"prompt",get placeholder(){return t(e)},classes:"input-prompt",get value(){return t(d)},set value(a){r(d,a,!0)}})}var G=g(A,2);{let e=_(()=>!t(f)||t(v)||!t(d).trim()),a=_(()=>t(v)?"...":"Send");ee(G,{classes:"btn-primary",onclick:P,get disabled(){return t(e)},get text(){return t(a)}})}c(x),c(y),H("keydown",x,B),k(M,y),W()}q(["keydown"]);export{pe as component};
1
+ import{d as q,i as T,b as H,a as k,f as N,s as V}from"../chunks/Cg3dlX05.js";import{p as z,s as n,q as J,v as Q,w as W,g as t,b as r,x as _,d as g,c as b,r as c,t as X}from"../chunks/DYuMZGL5.js";import{e as K,I as Z,B as ee,s as te,i as ae,P as I}from"../chunks/DZvnhU_8.js";import{i as se,N as S}from"../chunks/CRkG7oE4.js";import{P as O}from"../chunks/pRcLbE0d.js";var re=N('<div class="provider-bar svelte-sjabew"></div>'),ie=N("<div> </div>"),oe=N('<div class="page svelte-sjabew"><header class="svelte-sjabew"><h1 class="svelte-sjabew">NeuroLink</h1> <span class="version svelte-sjabew">new NeuroLink()</span> <!></header> <!> <div class="log svelte-sjabew" id="log"></div> <div class="input-bar svelte-sjabew"><!> <!></div></div>');function pe(M,p){z(p,!0);let u=n(null),m=n(null),h=n(J([])),d=n(""),v=n(!1),f=n(!1),o=n("litellm");function i(e,a="info"){r(h,[...t(h),{text:e,type:a}],!0)}function R(){const e=globalThis.process;if(!e?.env)return;const a=e.env;p.data.litellmBaseUrl&&(a.LITELLM_BASE_URL=p.data.litellmBaseUrl),p.data.litellmModel&&(a.LITELLM_MODEL=p.data.litellmModel);const s=window.__aiProviders;s?.["google-ai"]&&(a.GOOGLE_AI_API_KEY="proxy-via-server"),s?.anthropic&&(a.ANTHROPIC_API_KEY="proxy-via-server"),s?.openai&&(a.OPENAI_API_KEY="proxy-via-server"),s?.mistral&&(a.MISTRAL_API_KEY="proxy-via-server")}Q(async()=>{$(),se(),R(),i("Loading NeuroLink from CDN..."),i(S,"dim");try{r(u,await import(S),!0),i(`Loaded! ${Object.keys(t(u)??{}).length} exports`,"pass"),r(m,new(t(u)).NeuroLink({provider:t(o)}),!0),i(`NeuroLink ready · provider: ${t(o)}`,"pass"),r(f,!0)}catch(e){i(`Failed to load: ${e instanceof Error?e.message:String(e)}`,"fail")}});function D(e){!t(u)||e===t(o)||(r(o,e,!0),r(m,new(t(u)).NeuroLink({provider:e}),!0),i(`Switched to provider: ${e}`,"dim"))}function $(){typeof globalThis.process>"u"&&(globalThis.process={cwd:()=>"/",env:{},platform:"browser",version:"v24.0.0"}),typeof globalThis.global>"u"&&(globalThis.global=globalThis)}async function P(){if(!t(d).trim()||!t(m)||t(v))return;const e=t(d).trim();r(d,""),r(v,!0),i(`> ${e}`,"user");const a=O.find(s=>s.id===t(o));if(!a){r(v,!1);return}try{const s=await t(m).generate({input:{text:e},model:a.model,provider:a.id}),l=typeof s.content=="string"?s.content:"(empty response)",E=s.usage;i(l,"ai"),i(`${a.id}/${a.model} | ${E?.total??"?"} tokens`,"dim")}catch(s){i(`Error: ${s instanceof Error?s.message:String(s)}`,"fail")}r(v,!1)}function B(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),P())}var y=oe(),w=b(y),U=g(b(w),4);{var C=e=>{I(e,{text:"Connected",classes:"pill-connected"})},Y=e=>{I(e,{text:"Loading...",classes:"pill-loading"})};T(U,e=>{t(f)?e(C):e(Y,-1)})}c(w);var j=g(w,2);{var F=e=>{var a=re();K(a,21,()=>O,s=>s.id,(s,l)=>{{let E=_(()=>t(o)===t(l).id?"prov-pill--active":"");I(s,{get text(){return t(l).label},get classes(){return`prov-pill ${t(E)??""}`},onclick:()=>{D(t(l).id)}})}}),c(a),k(e,a)};T(j,e=>{t(f)&&e(F)})}var L=g(j,2);K(L,21,()=>t(h),ae,(e,a)=>{var s=ie(),l=b(s,!0);c(s),X(()=>{te(s,1,`log-entry ${t(a).type??""}`,"svelte-sjabew"),V(l,t(a).text)}),k(e,s)}),c(L);var x=g(L,2),A=b(x);{let e=_(()=>t(f)?`Ask anything... [${t(o)}]`:"Loading SDK...");Z(A,{name:"prompt",get placeholder(){return t(e)},classes:"input-prompt",get value(){return t(d)},set value(a){r(d,a,!0)}})}var G=g(A,2);{let e=_(()=>!t(f)||t(v)||!t(d).trim()),a=_(()=>t(v)?"...":"Send");ee(G,{classes:"btn-primary",onclick:P,get disabled(){return t(e)},get text(){return t(a)}})}c(x),c(y),H("keydown",x,B),k(M,y),W()}q(["keydown"]);export{pe as component};
@@ -1 +1 @@
1
- import{i as j,a as f,f as m,s as S}from"../chunks/3MMtouT7.js";import{p as We,s as k,o as Xe,q as Ye,x as et,v as tt,y as st,g as e,b as c,$ as at,c as n,d as l,r as o,w as p,z as L,A as Q,t as W}from"../chunks/Ce0VRwE1.js";import{b as rt,e as ve,i as ot,B as N,c as X,P as D,d as nt}from"../chunks/BTu-2gkj.js";import{h as it}from"../chunks/DFPEaIHz.js";import{g as ct}from"../chunks/B-aj0tWo.js";import{p as lt}from"../chunks/WigD-5P0.js";import{A as dt}from"../chunks/DzuS5Nbr.js";import{B as vt}from"../chunks/Bn-6X1BO.js";import{S as ue,R as ut}from"../chunks/DdpA9n1s.js";import{g as ft,s as pt,c as mt}from"../chunks/xs1Xl3_e.js";import{i as ht}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as _t}from"../chunks/BLszSzTT.js";import{E as fe}from"../chunks/CMQw-Fc-.js";var gt=m('<meta name="description" content="Project sessions sorted by latest update"/>'),yt=m('<div class="loading-container"><!> <!></div>'),bt=m('<div class="project-back-row svelte-urn6fi"><a href="/" class="back-link"><span class="back-arrow">&larr;</span> Back to Projects</a></div> <!>',1),jt=m("<!> Refresh",1),St=m('<div class="session-card-subtitle"> </div>'),$t=m('<span class="connect-dot svelte-urn6fi"></span> Connect',1),xt=m('<a class="session-card"><div class="session-card-header"><div><h3 class="session-card-title"> </h3> <!></div> <div class="session-card-actions svelte-urn6fi"><!> <!></div></div> <div class="session-stats"><span><strong> </strong> messages</span> <!> <!></div> <div class="session-meta-row svelte-urn6fi"><span class="session-modified svelte-urn6fi"> </span> <span class="session-duration svelte-urn6fi"> </span></div></a>'),Pt=m('<div style="text-align: center; padding: 1rem;"><!></div>'),wt=m('<div class="sessions-container svelte-urn6fi"></div> <!>',1),kt=m('<div class="chat-session-header"><div class="chat-session-header-top svelte-urn6fi"><a href="/" class="back-link">&#8592; Back to Projects</a> <!></div> <h1 class="chat-session-title"> </h1> <div class="chat-session-meta"><span class="session-card-subtitle"> </span> <span> </span></div></div> <!>',1),Ct=m('<main class="main"><!> <!></main>');function Jt(pe,me){We(me,!0);const he=15e3,M=20;let i=k(null),g=k(!0),h=k(null),R=k(null),E=null,C=k(M),Y=k(Xe([])),$=k(null);const x=p(()=>lt.url.searchParams.get("id")||""),_e=p(()=>e(i)?e(i).sessions.slice(0,e(C)):[]),ge=p(()=>e(i)?e(C)<e(i).sessions.length:!1),ye=p(()=>new Set(e(Y).map(t=>t.sessionId).filter(t=>typeof t=="string")));Ye(()=>{be();const t=ft(`shooter_project_${e(x)}`);t&&(c(i,t,!0),c(g,!1)),setTimeout(()=>{O(),z()},50),E=setInterval(()=>{e(h)?.apiKey&&e(x)&&(O(),z())},he)}),et(()=>{E&&(clearInterval(E),E=null)});function be(){try{const t=localStorage.getItem("shooter_config");if(t){const s=JSON.parse(t);ht(s)?c(h,s,!0):(localStorage.removeItem("shooter_config"),c(h,null))}}catch{}}async function O(t=!1){if(!e(h)?.apiKey||!e(x)){c(g,!1);return}e(i)||c(g,!0);try{const d=await fetch(t?"/api/sessions?refresh=true":"/api/sessions",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(!d.ok){c(R,`Failed to load project (HTTP ${d.status})`),c(g,!1);return}c(R,null);const u=(await d.json()).projects.find(B=>B.id===e(x))||null;c(i,u,!0),u&&pt(`shooter_project_${e(x)}`,u)}catch(s){console.error("Failed to fetch project:",s)}finally{c(g,!1)}}async function z(){if(e(h)?.apiKey)try{const t=await fetch("/api/sessions/detect",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(t.ok){const s=await t.json();c(Y,s.processes,!0)}}catch{}}async function ee(t,s,d){if(t.preventDefault(),t.stopPropagation(),!(!e(h)?.apiKey||!e(i)||e($))){c($,s,!0);try{const v=await fetch("/api/sessions/connect",{body:JSON.stringify({command:d,cwd:e(i).fullPath,sessionId:s}),headers:{Authorization:`Bearer ${e(h).apiKey}`,"Content-Type":"application/json"},method:"POST"});if(v.ok){const u=await v.json();ct(`/terminals/${u.terminalId}`)}}catch(v){console.error("Failed to connect to session:",v)}finally{c($,null)}}}async function je(){c(g,!0),c(i,null),c(C,M),mt(`shooter_project_${e(x)}`),await O(!0),await z()}function Se(){c(C,e(C)+M)}function te(t){if(!t)return"";const s=new Date(t);return isNaN(s.getTime())?"":s.toLocaleDateString("en-US",{day:"numeric",hour:"2-digit",minute:"2-digit",month:"short"})}function $e(t,s){return t.length<=s?t:`${t.slice(0,s).trimEnd()}...`}var F=Ct();it("urn6fi",t=>{var s=gt();st(()=>{at.title=`${(e(i)?.name||"Project")??""} - Shooter`}),f(t,s)});var se=n(F);{var xe=t=>{rt(t,{get text(){return e(R)},classes:"banner-error"})};j(se,t=>{e(R)&&t(xe)})}var Pe=l(se,2);{var we=t=>{var s=yt(),d=n(s);ue(d,{classes:"shimmer-header"});var v=l(d,2);ve(v,16,()=>Array(4),ot,(u,B)=>{ue(u,{classes:"shimmer-card"})}),o(s),f(t,s)},ke=t=>{var s=bt(),d=l(L(s),2);fe(d,{title:"Project Not Found",description:"The requested project could not be found.",icon:u=>{X(u,{get svg(){return dt},classes:"icon-24"})}}),f(t,s)},Ce=t=>{var s=kt(),d=L(s),v=n(d),u=l(n(v),2);N(u,{classes:"btn-secondary",onclick:je,get disabled(){return e(g)},children:(y,K)=>{var b=jt(),J=L(b);X(J,{get svg(){return ut},classes:"icon-14"}),Q(),f(y,b)},$$slots:{default:!0}}),o(v);var B=l(v,2),Be=n(B,!0);o(B);var ae=l(B,2),q=n(ae),Te=n(q,!0);o(q);var re=l(q,2),Ie=n(re);o(re),o(ae),o(d);var Ae=l(d,2);{var Re=y=>{fe(y,{title:"No sessions yet",description:"Sessions for this project will appear here",icon:b=>{X(b,{get svg(){return vt},classes:"icon-24"})}})},Ee=y=>{var K=wt(),b=L(K);ve(b,21,()=>e(_e),P=>P.id,(P,r)=>{var T=xt(),I=n(T),G=n(I),H=n(G),Le=n(H,!0);o(H);var Ne=l(H,2);{var De=a=>{var _=St(),A=n(_,!0);o(_),W(w=>S(A,w),[()=>$e(e(r).summary,80)]),f(a,_)};j(Ne,a=>{e(r).summary&&a(De)})}o(G);var oe=l(G,2),ne=n(oe);{let a=p(()=>_t(e(r).modified));D(ne,{get text(){return e(a)},classes:"pill-session-time"})}var Me=l(ne,2);{var Oe=a=>{{let _=p(()=>e($)===e(r).id),A=p(()=>e($)===e(r).id);N(a,{classes:"btn-connect btn-xs",onclick:w=>{ee(w,e(r).id,e(r).source==="opencode"?"opencode":"claude")},get disabled(){return e(_)},get showLoader(){return e(A)},children:(w,Bt)=>{var Qe=$t();Q(),f(w,Qe)},$$slots:{default:!0}})}},ze=p(()=>e(ye).has(e(r).id)),Fe=a=>{{let _=p(()=>e($)===e(r).id),A=p(()=>e($)===e(r).id);N(a,{classes:"btn-resume btn-xs",onclick:w=>{ee(w,e(r).id,e(r).source==="opencode"?"opencode":"claude")},get disabled(){return e(_)},get showLoader(){return e(A)},text:"Resume"})}};j(Me,a=>{e(ze)?a(Oe):a(Fe,-1)})}o(oe),o(I);var U=l(I,2),V=n(U),ie=n(V),qe=n(ie,!0);o(ie),Q(),o(V);var ce=l(V,2);{var Je=a=>{D(a,{get text(){return`🌿 ${e(r).gitBranch??""}`},classes:"pill-git-branch"})};j(ce,a=>{e(r).gitBranch&&a(Je)})}var Ge=l(ce,2);{var He=a=>{D(a,{text:"OpenCode",classes:"pill-source-opencode"})},Ue=a=>{D(a,{text:"Claude Code",classes:"pill-source-claude"})};j(Ge,a=>{e(r).source==="opencode"?a(He):a(Ue,-1)})}o(U);var le=l(U,2),Z=n(le),Ve=n(Z);o(Z);var de=l(Z,2),Ze=n(de);o(de),o(le),o(T),W((a,_)=>{nt(T,"href",`/session/${e(r).id??""}?project=${e(x)??""}`),S(Le,e(r).title),S(qe,e(r).messageCount),S(Ve,`Last updated ${a??""}`),S(Ze,`Created ${_??""}`)},[()=>te(e(r).modified),()=>te(e(r).created)]),f(P,T)}),o(b);var J=l(b,2);{var Ke=P=>{var r=Pt(),T=n(r);{let I=p(()=>`Load More (${e(i).sessions.length-e(C)} remaining)`);N(T,{classes:"btn-secondary",onclick:Se,get text(){return e(I)}})}o(r),f(P,r)};j(J,P=>{e(ge)&&P(Ke)})}f(y,K)};j(Ae,y=>{e(i).sessions.length===0?y(Re):y(Ee,-1)})}W(()=>{S(Be,e(i).name),S(Te,e(i).fullPath),S(Ie,`${e(i).sessionCount??""} sessions`)}),f(t,s)};j(Pe,t=>{e(g)&&!e(i)?t(we):e(i)?t(Ce,-1):t(ke,1)})}o(F),f(pe,F),tt()}export{Jt as component};
1
+ import{i as j,a as f,f as m,s as S}from"../chunks/Cg3dlX05.js";import{p as We,s as k,q as Xe,v as Ye,y as et,w as tt,z as st,g as e,b as c,$ as at,c as n,d as l,r as o,x as p,A as L,B as Q,t as W}from"../chunks/DYuMZGL5.js";import{b as rt,e as ve,i as ot,B as N,c as X,P as D,d as nt}from"../chunks/DZvnhU_8.js";import{h as it}from"../chunks/DZQMsHM5.js";import{g as ct}from"../chunks/BFXEYMV8.js";import{p as lt}from"../chunks/CmtInjm0.js";import{A as dt}from"../chunks/DzuS5Nbr.js";import{B as vt}from"../chunks/Bn-6X1BO.js";import{S as ue,R as ut}from"../chunks/BRqaaL5D.js";import{g as ft,s as pt,c as mt}from"../chunks/xs1Xl3_e.js";import{i as ht}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as _t}from"../chunks/BLszSzTT.js";import{E as fe}from"../chunks/C5VOyQCG.js";var gt=m('<meta name="description" content="Project sessions sorted by latest update"/>'),yt=m('<div class="loading-container"><!> <!></div>'),bt=m('<div class="project-back-row svelte-urn6fi"><a href="/" class="back-link"><span class="back-arrow">&larr;</span> Back to Projects</a></div> <!>',1),jt=m("<!> Refresh",1),St=m('<div class="session-card-subtitle"> </div>'),$t=m('<span class="connect-dot svelte-urn6fi"></span> Connect',1),xt=m('<a class="session-card"><div class="session-card-header"><div><h3 class="session-card-title"> </h3> <!></div> <div class="session-card-actions svelte-urn6fi"><!> <!></div></div> <div class="session-stats"><span><strong> </strong> messages</span> <!> <!></div> <div class="session-meta-row svelte-urn6fi"><span class="session-modified svelte-urn6fi"> </span> <span class="session-duration svelte-urn6fi"> </span></div></a>'),Pt=m('<div style="text-align: center; padding: 1rem;"><!></div>'),wt=m('<div class="sessions-container svelte-urn6fi"></div> <!>',1),kt=m('<div class="chat-session-header"><div class="chat-session-header-top svelte-urn6fi"><a href="/" class="back-link">&#8592; Back to Projects</a> <!></div> <h1 class="chat-session-title"> </h1> <div class="chat-session-meta"><span class="session-card-subtitle"> </span> <span> </span></div></div> <!>',1),Ct=m('<main class="main"><!> <!></main>');function Jt(pe,me){We(me,!0);const he=15e3,M=20;let i=k(null),g=k(!0),h=k(null),R=k(null),E=null,C=k(M),Y=k(Xe([])),$=k(null);const x=p(()=>lt.url.searchParams.get("id")||""),_e=p(()=>e(i)?e(i).sessions.slice(0,e(C)):[]),ge=p(()=>e(i)?e(C)<e(i).sessions.length:!1),ye=p(()=>new Set(e(Y).map(t=>t.sessionId).filter(t=>typeof t=="string")));Ye(()=>{be();const t=ft(`shooter_project_${e(x)}`);t&&(c(i,t,!0),c(g,!1)),setTimeout(()=>{O(),z()},50),E=setInterval(()=>{e(h)?.apiKey&&e(x)&&(O(),z())},he)}),et(()=>{E&&(clearInterval(E),E=null)});function be(){try{const t=localStorage.getItem("shooter_config");if(t){const s=JSON.parse(t);ht(s)?c(h,s,!0):(localStorage.removeItem("shooter_config"),c(h,null))}}catch{}}async function O(t=!1){if(!e(h)?.apiKey||!e(x)){c(g,!1);return}e(i)||c(g,!0);try{const d=await fetch(t?"/api/sessions?refresh=true":"/api/sessions",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(!d.ok){c(R,`Failed to load project (HTTP ${d.status})`),c(g,!1);return}c(R,null);const u=(await d.json()).projects.find(B=>B.id===e(x))||null;c(i,u,!0),u&&pt(`shooter_project_${e(x)}`,u)}catch(s){console.error("Failed to fetch project:",s)}finally{c(g,!1)}}async function z(){if(e(h)?.apiKey)try{const t=await fetch("/api/sessions/detect",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(t.ok){const s=await t.json();c(Y,s.processes,!0)}}catch{}}async function ee(t,s,d){if(t.preventDefault(),t.stopPropagation(),!(!e(h)?.apiKey||!e(i)||e($))){c($,s,!0);try{const v=await fetch("/api/sessions/connect",{body:JSON.stringify({command:d,cwd:e(i).fullPath,sessionId:s}),headers:{Authorization:`Bearer ${e(h).apiKey}`,"Content-Type":"application/json"},method:"POST"});if(v.ok){const u=await v.json();ct(`/terminals/${u.terminalId}`)}}catch(v){console.error("Failed to connect to session:",v)}finally{c($,null)}}}async function je(){c(g,!0),c(i,null),c(C,M),mt(`shooter_project_${e(x)}`),await O(!0),await z()}function Se(){c(C,e(C)+M)}function te(t){if(!t)return"";const s=new Date(t);return isNaN(s.getTime())?"":s.toLocaleDateString("en-US",{day:"numeric",hour:"2-digit",minute:"2-digit",month:"short"})}function $e(t,s){return t.length<=s?t:`${t.slice(0,s).trimEnd()}...`}var F=Ct();it("urn6fi",t=>{var s=gt();st(()=>{at.title=`${(e(i)?.name||"Project")??""} - Shooter`}),f(t,s)});var se=n(F);{var xe=t=>{rt(t,{get text(){return e(R)},classes:"banner-error"})};j(se,t=>{e(R)&&t(xe)})}var Pe=l(se,2);{var we=t=>{var s=yt(),d=n(s);ue(d,{classes:"shimmer-header"});var v=l(d,2);ve(v,16,()=>Array(4),ot,(u,B)=>{ue(u,{classes:"shimmer-card"})}),o(s),f(t,s)},ke=t=>{var s=bt(),d=l(L(s),2);fe(d,{title:"Project Not Found",description:"The requested project could not be found.",icon:u=>{X(u,{get svg(){return dt},classes:"icon-24"})}}),f(t,s)},Ce=t=>{var s=kt(),d=L(s),v=n(d),u=l(n(v),2);N(u,{classes:"btn-secondary",onclick:je,get disabled(){return e(g)},children:(y,K)=>{var b=jt(),J=L(b);X(J,{get svg(){return ut},classes:"icon-14"}),Q(),f(y,b)},$$slots:{default:!0}}),o(v);var B=l(v,2),Be=n(B,!0);o(B);var ae=l(B,2),q=n(ae),Te=n(q,!0);o(q);var re=l(q,2),Ie=n(re);o(re),o(ae),o(d);var Ae=l(d,2);{var Re=y=>{fe(y,{title:"No sessions yet",description:"Sessions for this project will appear here",icon:b=>{X(b,{get svg(){return vt},classes:"icon-24"})}})},Ee=y=>{var K=wt(),b=L(K);ve(b,21,()=>e(_e),P=>P.id,(P,r)=>{var T=xt(),I=n(T),G=n(I),H=n(G),Le=n(H,!0);o(H);var Ne=l(H,2);{var De=a=>{var _=St(),A=n(_,!0);o(_),W(w=>S(A,w),[()=>$e(e(r).summary,80)]),f(a,_)};j(Ne,a=>{e(r).summary&&a(De)})}o(G);var oe=l(G,2),ne=n(oe);{let a=p(()=>_t(e(r).modified));D(ne,{get text(){return e(a)},classes:"pill-session-time"})}var Me=l(ne,2);{var Oe=a=>{{let _=p(()=>e($)===e(r).id),A=p(()=>e($)===e(r).id);N(a,{classes:"btn-connect btn-xs",onclick:w=>{ee(w,e(r).id,e(r).source==="opencode"?"opencode":"claude")},get disabled(){return e(_)},get showLoader(){return e(A)},children:(w,Bt)=>{var Qe=$t();Q(),f(w,Qe)},$$slots:{default:!0}})}},ze=p(()=>e(ye).has(e(r).id)),Fe=a=>{{let _=p(()=>e($)===e(r).id),A=p(()=>e($)===e(r).id);N(a,{classes:"btn-resume btn-xs",onclick:w=>{ee(w,e(r).id,e(r).source==="opencode"?"opencode":"claude")},get disabled(){return e(_)},get showLoader(){return e(A)},text:"Resume"})}};j(Me,a=>{e(ze)?a(Oe):a(Fe,-1)})}o(oe),o(I);var U=l(I,2),V=n(U),ie=n(V),qe=n(ie,!0);o(ie),Q(),o(V);var ce=l(V,2);{var Je=a=>{D(a,{get text(){return`🌿 ${e(r).gitBranch??""}`},classes:"pill-git-branch"})};j(ce,a=>{e(r).gitBranch&&a(Je)})}var Ge=l(ce,2);{var He=a=>{D(a,{text:"OpenCode",classes:"pill-source-opencode"})},Ue=a=>{D(a,{text:"Claude Code",classes:"pill-source-claude"})};j(Ge,a=>{e(r).source==="opencode"?a(He):a(Ue,-1)})}o(U);var le=l(U,2),Z=n(le),Ve=n(Z);o(Z);var de=l(Z,2),Ze=n(de);o(de),o(le),o(T),W((a,_)=>{nt(T,"href",`/session/${e(r).id??""}?project=${e(x)??""}`),S(Le,e(r).title),S(qe,e(r).messageCount),S(Ve,`Last updated ${a??""}`),S(Ze,`Created ${_??""}`)},[()=>te(e(r).modified),()=>te(e(r).created)]),f(P,T)}),o(b);var J=l(b,2);{var Ke=P=>{var r=Pt(),T=n(r);{let I=p(()=>`Load More (${e(i).sessions.length-e(C)} remaining)`);N(T,{classes:"btn-secondary",onclick:Se,get text(){return e(I)}})}o(r),f(P,r)};j(J,P=>{e(ge)&&P(Ke)})}f(y,K)};j(Ae,y=>{e(i).sessions.length===0?y(Re):y(Ee,-1)})}W(()=>{S(Be,e(i).name),S(Te,e(i).fullPath),S(Ie,`${e(i).sessionCount??""} sessions`)}),f(t,s)};j(Pe,t=>{e(g)&&!e(i)?t(we):e(i)?t(Ce,-1):t(ke,1)})}o(F),f(pe,F),tt()}export{Jt as component};
@@ -1,4 +1,4 @@
1
- import{i as K,a as h,f as g,s as V}from"../chunks/3MMtouT7.js";import{p as ve,s as v,o as ge,q as we,v as ye,y as be,b as s,g as e,$ as Se,c as _,r as $,w as T,z as H,d as D,t as Q}from"../chunks/Ce0VRwE1.js";import{h as _e}from"../chunks/DFPEaIHz.js";import{d as X,B as $e}from"../chunks/BTu-2gkj.js";import{p as x}from"../chunks/WigD-5P0.js";import{g as ke,s as Y}from"../chunks/xs1Xl3_e.js";import"../chunks/BDcFu3l7.js";import{C as Ie}from"../chunks/780RSrro.js";var je=g('<meta name="description" content="Session conversation view"/>'),Ce=g('<div class="loading-container" aria-live="polite" aria-busy="true"><div class="shimmer shimmer-header" aria-hidden="true"></div> <div class="chat-container"><div class="shimmer shimmer-bubble shimmer-bubble-user" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-user-short" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant-wide" aria-hidden="true"></div></div></div>'),Oe=g('<div class="session-back-row svelte-1a2wdfb"><a class="back-link">← Back</a></div> <p class="error-text svelte-1a2wdfb"> </p>',1),Me=g('<span class="resume-status svelte-1a2wdfb">Connecting...</span>'),Ne=g('<span class="resume-status svelte-1a2wdfb">Resuming session...</span>'),Ae=g('<span class="connection-dot connected svelte-1a2wdfb"></span>'),Pe=g('<span class="connection-dot reconnecting svelte-1a2wdfb"></span>'),Te=g('<div class="load-earlier-row svelte-1a2wdfb"><!></div>'),De=g('<div class="session-header svelte-1a2wdfb"><div class="session-header-row svelte-1a2wdfb"><a class="back-link">← Back</a> <!></div> <h1 class="session-title svelte-1a2wdfb"> </h1></div> <div class="session-chat-container svelte-1a2wdfb"><!> <!></div>',1),Re=g('<main class="main session-page-main svelte-1a2wdfb"><!></main>');function Le(Z,ee){ve(ee,!0);let f=v(null),o=v(ge([])),w=v(!0),I=v(null),R=v(!1),N=v(!1),A=v(200),j=v(null),k=v("idle"),c=v("idle"),y=null,b=null,C=null,O=null,d=!1;const W=T(()=>x.params.id),M=T(()=>x.url.searchParams.get("project")||""),te=T(()=>e(c)==="connecting"||e(c)==="resuming");function P(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}async function L(){const t=P();if(!t)return null;try{const n=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t.apiKey}`},method:"POST"});return n.ok?(await n.json()).ticket:null}catch{return null}}async function z(t,n){if(d||C&&(C.readyState===WebSocket.OPEN||C.readyState===WebSocket.CONNECTING))return;const a=await L();if(!a||d)return;s(k,"connecting");const i=window.location.protocol==="https:"?"wss:":"ws:",r=new WebSocket(`${i}//${window.location.host}${t}?ticket=${a}`);r.onopen=()=>{if(d){r.close();return}s(k,"connected"),r.send(JSON.stringify({sessionId:n,type:"subscribe"}))},r.onmessage=u=>{if(!d)try{const p=JSON.parse(u.data);se(p)}catch{}},r.onclose=()=>{d||(s(k,"disconnected"),C=null,e(j)&&(O&&clearTimeout(O),O=setTimeout(()=>{O=null,!d&&e(j)&&z(`/ws/session/${e(j)}`,e(j))},2e3)))},r.onerror=()=>{d||s(k,"disconnected")},C=r}async function q(t){if(d)return;const n=await L();if(!n||d)return;const a=window.location.protocol==="https:"?"wss:":"ws:",i=new WebSocket(`${a}//${window.location.host}${t}?ticket=${n}`);i.onopen=()=>{if(d){i.close();return}b=i,e(c)==="ready"&&y&&(i.send(JSON.stringify({data:`${y}
1
+ import{i as K,a as h,f as g,s as V}from"../chunks/Cg3dlX05.js";import{p as ve,s as v,q as ge,v as we,w as ye,z as be,b as s,g as e,$ as Se,c as _,r as $,x as T,A as H,d as D,t as Q}from"../chunks/DYuMZGL5.js";import{h as _e}from"../chunks/DZQMsHM5.js";import{d as X,B as $e}from"../chunks/DZvnhU_8.js";import{p as x}from"../chunks/CmtInjm0.js";import{g as ke,s as Y}from"../chunks/xs1Xl3_e.js";import"../chunks/BDcFu3l7.js";import{C as Ie}from"../chunks/Pw0jDB7M.js";var je=g('<meta name="description" content="Session conversation view"/>'),Ce=g('<div class="loading-container" aria-live="polite" aria-busy="true"><div class="shimmer shimmer-header" aria-hidden="true"></div> <div class="chat-container"><div class="shimmer shimmer-bubble shimmer-bubble-user" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-user-short" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant-wide" aria-hidden="true"></div></div></div>'),Oe=g('<div class="session-back-row svelte-1a2wdfb"><a class="back-link">← Back</a></div> <p class="error-text svelte-1a2wdfb"> </p>',1),Me=g('<span class="resume-status svelte-1a2wdfb">Connecting...</span>'),Ne=g('<span class="resume-status svelte-1a2wdfb">Resuming session...</span>'),Ae=g('<span class="connection-dot connected svelte-1a2wdfb"></span>'),Pe=g('<span class="connection-dot reconnecting svelte-1a2wdfb"></span>'),Te=g('<div class="load-earlier-row svelte-1a2wdfb"><!></div>'),De=g('<div class="session-header svelte-1a2wdfb"><div class="session-header-row svelte-1a2wdfb"><a class="back-link">← Back</a> <!></div> <h1 class="session-title svelte-1a2wdfb"> </h1></div> <div class="session-chat-container svelte-1a2wdfb"><!> <!></div>',1),Re=g('<main class="main session-page-main svelte-1a2wdfb"><!></main>');function Le(Z,ee){ve(ee,!0);let f=v(null),o=v(ge([])),w=v(!0),I=v(null),R=v(!1),N=v(!1),A=v(200),j=v(null),k=v("idle"),c=v("idle"),y=null,b=null,C=null,O=null,d=!1;const W=T(()=>x.params.id),M=T(()=>x.url.searchParams.get("project")||""),te=T(()=>e(c)==="connecting"||e(c)==="resuming");function P(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}async function L(){const t=P();if(!t)return null;try{const n=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t.apiKey}`},method:"POST"});return n.ok?(await n.json()).ticket:null}catch{return null}}async function z(t,n){if(d||C&&(C.readyState===WebSocket.OPEN||C.readyState===WebSocket.CONNECTING))return;const a=await L();if(!a||d)return;s(k,"connecting");const i=window.location.protocol==="https:"?"wss:":"ws:",r=new WebSocket(`${i}//${window.location.host}${t}?ticket=${a}`);r.onopen=()=>{if(d){r.close();return}s(k,"connected"),r.send(JSON.stringify({sessionId:n,type:"subscribe"}))},r.onmessage=u=>{if(!d)try{const p=JSON.parse(u.data);se(p)}catch{}},r.onclose=()=>{d||(s(k,"disconnected"),C=null,e(j)&&(O&&clearTimeout(O),O=setTimeout(()=>{O=null,!d&&e(j)&&z(`/ws/session/${e(j)}`,e(j))},2e3)))},r.onerror=()=>{d||s(k,"disconnected")},C=r}async function q(t){if(d)return;const n=await L();if(!n||d)return;const a=window.location.protocol==="https:"?"wss:":"ws:",i=new WebSocket(`${a}//${window.location.host}${t}?ticket=${n}`);i.onopen=()=>{if(d){i.close();return}b=i,e(c)==="ready"&&y&&(i.send(JSON.stringify({data:`${y}
2
2
  `,type:"input"})),y=null)},i.onclose=()=>{b===i&&(b=null)}}function se(t){if(t.type==="history"){const n=t.messages||[];s(o,n.map(a=>({id:a.id,parts:a.content,role:a.role,timestamp:a.timestamp})),!0),s(R,!1),e(c)==="resuming"&&(s(c,"ready"),y&&b?.readyState===WebSocket.OPEN&&(b.send(JSON.stringify({data:`${y}
3
3
  `,type:"input"})),y=null))}else if(t.type==="message")s(o,[...e(o),{id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:t.content||[],role:t.role||"assistant",timestamp:t.timestamp||new Date().toISOString()}],!0);else if(t.type==="tool-use"){const n={id:t.id||`tool-${Date.now()}`,input:t.input||{},toolName:t.name,type:"tool_use"},a=e(o).length>0?e(o)[e(o).length-1]:null;a?.role==="assistant"?s(o,[...e(o).slice(0,-1),{...a,parts:[...a.parts,n]}],!0):s(o,[...e(o),{id:`tool-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[n],role:"assistant",timestamp:new Date().toISOString()}],!0)}else if(t.type==="tool-result"){const n={isError:t.isError||!1,output:t.output||"",toolUseId:t.id,type:"tool_result"},a=e(o).length>0?e(o)[e(o).length-1]:null;a?.role==="system"?s(o,[...e(o).slice(0,-1),{...a,parts:[...a.parts,n]}],!0):s(o,[...e(o),{id:`result-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[n],role:"system",timestamp:new Date().toISOString()}],!0)}else if(t.type==="thinking"){const n={content:t.text||"",type:"thinking"},a=e(o).length>0?e(o)[e(o).length-1]:null;a?.role==="assistant"?s(o,[...e(o).slice(0,-1),{...a,parts:[...a.parts,n]}],!0):s(o,[...e(o),{id:`think-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[n],role:"assistant",timestamp:new Date().toISOString()}],!0)}else t.type==="session-end"&&s(c,"idle")}async function ne(){if(!e(f)||d){s(c,"idle");return}const t=P();if(!t){s(c,"idle");return}s(c,"connecting");try{const n=e(f).source==="opencode"?"opencode":"claude",a=await fetch("/api/sessions/connect",{body:JSON.stringify({command:n,cwd:e(f).projectPath,sessionId:e(W)}),headers:{Authorization:`Bearer ${t.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(!a.ok||d){s(c,"idle");return}const i=await a.json();s(j,i.terminalId,!0),s(c,"resuming"),z(i.sessionWs,i.terminalId),q(i.ws)}catch{s(c,"idle")}}function ae(t){if(t.trim()){if(e(c)==="ready"&&b?.readyState===WebSocket.OPEN){b.send(JSON.stringify({data:`${t}
4
4
  `,type:"input"}));return}if(e(c)==="connecting"||e(c)==="resuming"){y=t;return}y=t,ne()}}async function oe(){e(o).length===0&&s(w,!0);try{const t=P();if(!t){s(I,"No configuration found. Please configure settings first."),s(w,!1);return}const n=e(W)??"",a=e(M);if(!n){s(I,"No session ID"),s(w,!1);return}const i=a?`id=${encodeURIComponent(n)}&project=${encodeURIComponent(a)}&limit=${e(A)}`:`id=${encodeURIComponent(n)}&limit=${e(A)}`;let r=await fetch(`/api/sessions?${i}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(r.status===404&&!a){const S=await fetch("/api/sessions",{headers:{Authorization:`Bearer ${t.apiKey}`}});if(S.ok){const J=await S.json();for(const B of J.projects||[])if((B.sessions||[]).find(U=>U.id===n)){r=await fetch(`/api/sessions?id=${encodeURIComponent(n)}&project=${encodeURIComponent(B.id)}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});break}}}if(!r.ok){s(I,"Session not found"),s(w,!1);return}const u=await r.json(),p=Array.isArray(u.messages)?u.messages:[];Y(`shooter_session_${n}`,{messages:p,session:u.session}),s(f,u.session,!0),s(o,p,!0),s(R,p.length>=e(A)),s(w,!1);return}catch{s(I,"Failed to load session")}s(w,!1)}async function ie(){if(e(N))return;const t=P();if(t){s(N,!0);try{const n=e(A)+200,a=e(W)??"",i=e(M);if(!a)return;const r=[`id=${encodeURIComponent(a)}`,`limit=${n}`];i&&r.push(`project=${encodeURIComponent(i)}`);const u=await fetch(`/api/sessions?${r.join("&")}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(!u.ok)return;const p=await u.json(),S=Array.isArray(p.messages)?p.messages:[];s(o,S,!0),s(A,n),s(R,S.length>=n),Y(`shooter_session_${a}`,{messages:S,session:p.session})}catch{}finally{s(N,!1)}}}we(()=>{const t=ke(`shooter_session_${x.params.id}`);return t&&(s(f,t.session,!0),s(o,Array.isArray(t.messages)?t.messages:[],!0),s(w,!1)),oe().then(async()=>{if(!e(f)||d)return;const n=P();if(n)try{const a=e(f).source==="opencode"?"opencode":"claude",i=await fetch("/api/sessions/connect",{body:JSON.stringify({command:a,cwd:e(f).projectPath,noCreate:!0,sessionId:e(W)}),headers:{Authorization:`Bearer ${n.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(i.ok&&!d){const r=await i.json();s(j,r.terminalId,!0),s(c,"resuming"),z(r.sessionWs,r.terminalId),q(r.ws)}}catch{}}),()=>{d=!0,O&&clearTimeout(O),C?.close(),b?.close()}});var E=Re();_e("1a2wdfb",t=>{var n=je();be(()=>{Se.title=`${(e(f)?.title||"Session")??""} - Shooter`}),h(t,n)});var re=_(E);{var ce=t=>{var n=Ce();h(t,n)},le=t=>{var n=Oe(),a=H(n),i=_(a);$(a);var r=D(a,2),u=_(r,!0);$(r),Q(()=>{X(i,"href",e(M)?`/project?id=${e(M)}`:"/"),V(u,e(I))}),h(t,n)},de=t=>{var n=De(),a=H(n),i=_(a),r=_(i),u=D(r,2);{var p=l=>{var m=Me();h(l,m)},S=l=>{var m=Ne();h(l,m)},J=l=>{var m=Ae();h(l,m)},B=l=>{var m=Pe();h(l,m)};K(u,l=>{e(c)==="connecting"?l(p):e(c)==="resuming"?l(S,1):e(k)==="connected"?l(J,2):e(k)==="reconnecting"&&l(B,3)})}$(i);var U=D(i,2),ue=_(U,!0);$(U),$(a);var F=D(a,2),G=_(F);{var fe=l=>{var m=Te(),me=_(m);{let he=T(()=>e(N)?"Loading...":"Load earlier messages");$e(me,{get text(){return e(he)},classes:"btn-ghost btn-sm",get disabled(){return e(N)},onclick:ie})}$(m),h(l,m)};K(G,l=>{e(R)&&l(fe)})}var pe=D(G,2);{let l=T(()=>[...e(o)].reverse());Ie(pe,{get messages(){return e(l)},newestFirst:!0,get connectionState(){return e(k)},showInput:!0,get sendDisabled(){return e(te)},onSendInput:ae,sessionEnded:!1})}$(F),Q(()=>{X(r,"href",e(M)?`/project?id=${e(M)}`:"/"),V(ue,e(f).title)}),h(t,n)};K(re,t=>{e(w)&&e(o).length===0?t(ce):e(I)?t(le,1):e(f)&&t(de,2)})}$(E),h(Z,E),ye()}export{Le as component};
@@ -1,2 +1,2 @@
1
- import{p as fe,j as Ye,i as H,a as h,s as D,f as w,t as Ge}from"../chunks/3MMtouT7.js";import{p as ke,q as $e,z as _e,v as Me,b as o,c as n,r as s,t as z,g as e,s as k,w as y,o as ze,d as c,A as he,x as Ue,N as Xe,$ as et}from"../chunks/Ce0VRwE1.js";import{T as Ae,s as Le,d as ne,S as tt,e as ge,C as at,f as st,I as rt,B as re,b as Ke,c as Ie,i as nt,P as Pe,g as it}from"../chunks/BTu-2gkj.js";import{h as lt}from"../chunks/DFPEaIHz.js";import{g as De}from"../chunks/B-aj0tWo.js";import{R as ot,S as ct}from"../chunks/DdpA9n1s.js";import{S as dt}from"../chunks/CG453M9q.js";import{T as ut}from"../chunks/CSjf4fBs.js";import{c as vt,s as Ee,g as mt}from"../chunks/xs1Xl3_e.js";import{i as pt}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{E as Ne}from"../chunks/CMQw-Fc-.js";var ft=w("<time> </time>"),ht=w("<time> </time>");function je(ie,d){ke(d,!0);let U=fe(d,"format",3,"long"),$=fe(d,"updateInterval",3,6e4),K=fe(d,"tooltip",3,!1),S=y(()=>d.date instanceof Date?d.date:new Date(d.date)),p=y(()=>e(S).toISOString()),A=y(()=>e(S).toLocaleString(d.locale,{dateStyle:"full",timeStyle:"short"})),T=k("");function C(){const _=Date.now(),g=e(S).getTime()-_,i=Math.abs(g),f=Math.round(i/1e3),q=Math.round(i/6e4),R=Math.round(i/36e5),J=Math.round(i/864e5),B=Math.round(i/6048e5),Z=Math.round(i/2592e6),X=Math.round(i/31536e6),ee=new Intl.RelativeTimeFormat(d.locale,{style:U()});let I,u;f<60?(I="second",u=f):q<60?(I="minute",u=q):R<24?(I="hour",u=R):J<7?(I="day",u=J):B<4?(I="week",u=B):Z<12?(I="month",u=Z):(I="year",u=X);const F=g<0?-1:1;return ee.format(F*u,I)}function x(){o(T,C(),!0)}$e(()=>{if(x(),$()>0){const _=setInterval(x,$());return()=>clearInterval(_)}});var E=Ye(),le=_e(E);{var oe=_=>{Ae(_,{get text(){return e(A)},children:(v,g)=>{var i=ft(),f=n(i,!0);s(i),z(()=>{Le(i,1,`relative-time ${d.classes??""??""}`,"svelte-gzwwii"),ne(i,"datetime",e(p)),ne(i,"data-pw",typeof d.testId=="string"?d.testId:null),D(f,e(T))}),h(v,i)},$$slots:{default:!0}})},ce=_=>{var v=ht(),g=n(v,!0);s(v),z(()=>{Le(v,1,`relative-time ${d.classes??""??""}`,"svelte-gzwwii"),ne(v,"datetime",e(p)),ne(v,"data-pw",typeof d.testId=="string"?d.testId:null),D(g,e(T))}),h(_,v)};H(le,_=>{K()?_(oe):_(ce,-1)})}h(ie,E),Me()}var gt=w('<div class="section svelte-plslui"><span class="section-label svelte-plslui">Quick Launch</span> <div class="preset-grid svelte-plslui"></div></div> <div class="section svelte-plslui"><span class="section-label svelte-plslui">Working Directory</span> <!> <div class="custom-cwd-group svelte-plslui"><!></div></div> <!> <!>',1);function _t(ie,d){ke(d,!0);let U=fe(d,"open",15,!1);const $=[{args:[],command:"claude",label:"Claude Code"},{args:[],command:"opencode",label:"OpenCode"},{args:[],command:"zsh",label:"Shell / zsh"},{args:[],command:"bash",label:"Bash"}];let K=k(0),S=k(ze([])),p=k(""),A=k(""),T=k(!1),C=k("");$e(()=>{x()});async function x(){try{const v=await fetch("/api/sessions?limit=50&offset=0",{headers:{Authorization:`Bearer ${d.apiKey}`}});if(!v.ok)return;const i=(await v.json()).projects.map(f=>f.fullPath).filter(f=>typeof f=="string"&&f.length>0);o(S,[...new Set(i)],!0),e(S).length>0&&!e(p)&&o(p,e(S)[0],!0)}catch{}}function E(v){o(K,v,!0)}function le(){return $[e(K)].command}function oe(){return $[e(K)].args}function ce(){const v=e(A).trim();return v||(e(p)?e(p):"/tmp")}async function _(){const v=le();if(v){o(T,!0),o(C,"");try{const g=await fetch("/api/terminals",{body:JSON.stringify({args:oe(),command:v,cwd:ce()||void 0}),headers:{Authorization:`Bearer ${d.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(!g.ok){const f=await g.json().catch(()=>({}));o(C,(typeof f.error=="string"?f.error:"")||`Failed to launch (${g.status})`,!0);return}const i=await g.json();d.onLaunch(i)}catch{o(C,"Network error — is the server running?")}finally{o(T,!1)}}}tt(ie,{side:"bottom",title:"New Terminal",get onclose(){return d.onClose},classes:"launch-sheet",get open(){return U()},set open(g){U(g)},content:g=>{var i=gt(),f=_e(i),q=c(n(f),2);ge(q,23,()=>$,u=>u.label,(u,F,M)=>{{let de=y(()=>e(K)===e(M));at(u,{mode:"radio",get selected(){return e(de)},onclick:()=>{E(e(M))},classes:"preset-choice",children:(ve,we)=>{he();var ue=Ge();z(()=>D(ue,e(F).label)),h(ve,ue)},$$slots:{default:!0}})}}),s(q),s(f);var R=c(f,2),J=c(n(R),2);{let u=y(()=>e(S).length>0?e(S).map(M=>({id:M,label:M})):[{id:"",label:"No recent projects"}]),F=y(()=>e(p)?[e(p)]:e(S).length>0?[e(S)[0]]:[""]);st(J,{get items(){return e(u)},get value(){return e(F)},placeholder:"Select a project",onchange:M=>{o(p,M[0]||"",!0)},classes:"launch-select"})}var B=c(J,2),Z=n(B);rt(Z,{label:"Or enter a custom path",dataType:"text",placeholder:"/path/to/project",classes:"input-mono launch-input",get value(){return e(A)},set value(u){o(A,u,!0)}}),s(B),s(R);var X=c(R,2);{let u=y(()=>e(T)?"Launching...":"Launch Terminal");re(X,{classes:"btn-launch",get disabled(){return e(T)},onclick:_,get showLoader(){return e(T)},get text(){return e(u)}})}var ee=c(X,2);{var I=u=>{Ke(u,{get text(){return e(C)},classes:"banner-error launch-error-banner"})};H(ee,u=>{e(C)&&u(I)})}h(g,i)},$$slots:{content:!0}}),Me()}var wt=w('<meta name="description" content="Active terminal sessions on this machine"/>'),xt=w("<!> Refresh",1),bt=w('<span class="plus-icon svelte-1ewpmn2">+</span> New Terminal',1),yt=w('<div class="loading-container"></div>'),St=w('<span class="plus-icon svelte-1ewpmn2">+</span> New Terminal',1),Tt=w('<span class="terminal-cwd svelte-1ewpmn2"> </span>'),Ct=w('<div class="terminal-preview svelte-1ewpmn2"><span class="terminal-preview-text svelte-1ewpmn2"> </span></div>'),It=w('<a class="terminal-card svelte-1ewpmn2"><div class="terminal-card-header svelte-1ewpmn2"><div class="terminal-card-left svelte-1ewpmn2"><span class="status-indicator status-running svelte-1ewpmn2"><span></span></span> <span class="terminal-command svelte-1ewpmn2"> </span> <!></div> <!></div> <div class="terminal-card-meta svelte-1ewpmn2"><!> <span class="terminal-pid svelte-1ewpmn2"> </span></div> <!></a>'),Pt=w('<span class="terminal-cwd svelte-1ewpmn2"> </span>'),At=w('<div class="terminal-preview svelte-1ewpmn2"><span class="terminal-preview-text svelte-1ewpmn2"> </span></div>'),Lt=w('<a class="terminal-card terminal-card-exited svelte-1ewpmn2"><div class="terminal-card-header svelte-1ewpmn2"><div class="terminal-card-left svelte-1ewpmn2"><span class="status-indicator status-exited svelte-1ewpmn2"><span class="status-dot-static"></span></span> <span class="terminal-command svelte-1ewpmn2"> </span> <!> <!></div> <div class="terminal-card-right svelte-1ewpmn2"><!> <!></div></div> <div class="terminal-card-meta svelte-1ewpmn2"><!></div> <!></a>'),kt=w('<div class="terminals-container svelte-1ewpmn2"><!> <!></div>'),$t=w('<main class="main"><div class="page-header"><div class="page-header-content"><div><h1 class="page-title">Terminals</h1> <p class="page-description">Active terminal sessions on this machine</p></div> <div class="page-actions"><!> <!></div></div></div> <!> <!></main> <!>',1);function qt(ie,d){ke(d,!0);const U=1e4,$="shooter_terminals",K=["claude","opencode"],S=["zsh","bash","sh","fish"];let p=k(ze([])),A=k(!1),T=!1,C=k(null),x=k(null),E=null;const le=y(()=>e(p).filter(t=>t.status==="running")),oe=y(()=>e(p).filter(t=>t.status==="exited"));$e(()=>{ce();const t=mt($,1e4);t&&(o(p,t,!0),o(A,!1)),_(),E=setInterval(()=>{e(x)?.apiKey&&_()},U)}),Ue(()=>{E&&(clearInterval(E),E=null)});function ce(){try{const t=localStorage.getItem("shooter_config");if(t){const a=JSON.parse(t);pt(a)?o(x,a,!0):(localStorage.removeItem("shooter_config"),o(x,null))}}catch{}}async function _(){if(!(!e(x)?.apiKey||T)){T=!0,e(p).length===0&&o(A,!0);try{const a=await fetch("/api/terminals",{headers:{Authorization:`Bearer ${e(x).apiKey}`}});if(!a.ok){o(C,`Failed to load terminals (HTTP ${a.status})`);return}o(C,null);const r=await a.json();o(p,r.terminals.map(b=>({...b,lastOutput:b.lastOutput??null})),!0),Ee($,e(p))}catch(t){o(C,"Failed to load terminals"),console.error("Failed to fetch terminals:",t)}finally{o(A,!1),T=!1}}}async function v(){o(A,!0),vt($),await _()}function g(){De("/config")}let i=k(!1);function f(){o(i,!0)}function q(){o(i,!1)}function R(t){o(i,!1),De(`/terminals/${t.id}`)}function J(t){const a=t.split("/").pop()||t;return K.includes(a)?"ai":(S.includes(a),"shell")}function B(t){return t.status==="exited"?{class:"pill-badge-ended",label:"ENDED"}:J(t.command)==="ai"?{class:"pill-badge-ai",label:"AI"}:{class:"pill-badge-shell",label:"SHELL"}}function Z(t,a=40){if(t.length<=a)return t;const r=t.split("/");return r.length<=3?t:`${r[0]}/.../${r.slice(-2).join("/")}`}function X(t){return t.replace(/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\x1b\[[\?]?[0-9;]*[a-zA-Z]|\x1b/g,"").replace(/[\x00-\x1f]/g,"").trim()}function ee(t,a=80){if(!t)return"";const r=t.split(`
2
- `).map(P=>X(P)).filter(P=>P.trim()),b=r[r.length-1]||"";return b.length<=a?b:`${b.slice(0,a)}...`}function I(t){return t.split("/").pop()||t}async function u(t,a){if(t.preventDefault(),t.stopPropagation(),!!e(x)?.apiKey)try{(await fetch(`/api/terminals/${a}`,{headers:{Authorization:`Bearer ${e(x).apiKey}`},method:"DELETE"})).ok&&(o(p,e(p).filter(b=>b.id!==a),!0),Ee($,e(p)))}catch(r){console.error("Failed to remove terminal:",r)}}var F=$t();lt("1ewpmn2",t=>{var a=wt();Xe(()=>{et.title="Terminals - Shooter"}),h(t,a)});var M=_e(F),de=n(M),ve=n(de),we=c(n(ve),2),ue=n(we);re(ue,{classes:"btn-secondary",onclick:v,get disabled(){return e(A)},children:(t,a)=>{var r=xt(),b=_e(r);Ie(b,{get svg(){return ot},classes:"icon-14"}),he(),h(t,r)},$$slots:{default:!0}});var Re=c(ue,2);re(Re,{classes:"btn-primary",onclick:f,children:(t,a)=>{var r=bt();he(),h(t,r)},$$slots:{default:!0}}),s(we),s(ve),s(de);var Oe=c(de,2);{var Be=t=>{Ke(t,{get text(){return e(C)},classes:"banner-error"})};H(Oe,t=>{e(C)&&t(Be)})}var Fe=c(Oe,2);{var He=t=>{var a=yt();ge(a,20,()=>Array(4),nt,(r,b)=>{ct(r,{classes:"shimmer-card"})}),s(a),h(t,a)},qe=t=>{Ne(t,{title:"Configuration Required",description:"Set up your API credentials to view terminal sessions",icon:r=>{Ie(r,{get svg(){return dt},classes:"icon-24"})},children:(r,b)=>{re(r,{classes:"btn-primary",onclick:g,text:"Configure Settings"})}})},Je=t=>{Ne(t,{title:"No terminals",description:"Launch a new terminal session to get started. Terminal sessions will appear here once created.",icon:r=>{Ie(r,{get svg(){return ut},classes:"icon-24"})},children:(r,b)=>{re(r,{classes:"btn-primary",onclick:f,children:(P,l)=>{var Q=St();he(),h(P,Q)},$$slots:{default:!0}})}})},Ze=t=>{var a=kt(),r=n(a);ge(r,17,()=>e(le),P=>P.id,(P,l)=>{const Q=y(()=>B(e(l)));var N=It(),V=n(N),W=n(V),Y=n(W),xe=n(Y);s(Y);var te=c(Y,2),be=n(te,!0);s(te);var ye=c(te,2);Pe(ye,{get text(){return e(Q).label},get classes(){return e(Q).class}}),s(W);var me=c(W,2);je(me,{get date(){return e(l).createdAt},format:"narrow",classes:"terminal-time"}),s(V);var ae=c(V,2),pe=n(ae);{let m=y(()=>e(l).currentCwd||e(l).cwd);Ae(pe,{get text(){return e(m)},position:"bottom",children:(L,O)=>{var j=Tt(),G=n(j,!0);s(j),z(We=>D(G,We),[()=>Z(e(l).currentCwd||e(l).cwd)]),h(L,j)},$$slots:{default:!0}})}var se=c(pe,2),Se=n(se);s(se),s(ae);var Te=c(ae,2);{var Ce=m=>{var L=Ct(),O=n(L),j=n(O,!0);s(O),s(L),z(G=>D(j,G),[()=>ee(e(l).lastOutput)]),h(m,L)};H(Te,m=>{e(l).lastOutput&&m(Ce)})}s(N),z(m=>{ne(N,"href",`/terminals/${e(l).id??""}`),Le(xe,1,it(e(l).isActive?"status-dot-active":"status-dot-idle")),D(be,m),D(Se,`PID ${e(l).pid??""}`)},[()=>I(e(l).command)]),h(P,N)});var b=c(r,2);ge(b,17,()=>e(oe),P=>P.id,(P,l)=>{const Q=y(()=>B(e(l)));var N=Lt(),V=n(N),W=n(V),Y=c(n(W),2),xe=n(Y,!0);s(Y);var te=c(Y,2);Pe(te,{get text(){return e(Q).label},get classes(){return e(Q).class}});var be=c(te,2);{var ye=m=>{{let L=y(()=>e(l).exitCode!==0?"pill-exit-error":"pill-exit-ok");Pe(m,{get text(){return`exit ${e(l).exitCode??""}`},get classes(){return e(L)}})}};H(be,m=>{e(l).exitCode!==null&&m(ye)})}s(W);var me=c(W,2),ae=n(me);{let m=y(()=>e(l).exitedAt||e(l).createdAt);je(ae,{get date(){return e(m)},format:"narrow",classes:"terminal-time"})}var pe=c(ae,2);re(pe,{classes:"btn-ghost btn-sm btn-remove",onclick:m=>{u(m,e(l).id)},text:"×"}),s(me),s(V);var se=c(V,2),Se=n(se);Ae(Se,{get text(){return e(l).cwd},position:"bottom",children:(m,L)=>{var O=Pt(),j=n(O,!0);s(O),z(G=>D(j,G),[()=>Z(e(l).cwd)]),h(m,O)},$$slots:{default:!0}}),s(se);var Te=c(se,2);{var Ce=m=>{var L=At(),O=n(L),j=n(O,!0);s(O),s(L),z(G=>D(j,G),[()=>ee(e(l).lastOutput)]),h(m,L)};H(Te,m=>{e(l).lastOutput&&m(Ce)})}s(N),z(m=>{ne(N,"href",`/terminals/${e(l).id??""}`),D(xe,m)},[()=>I(e(l).command)]),h(P,N)}),s(a),h(t,a)};H(Fe,t=>{e(A)&&e(p).length===0?t(He):e(x)?.apiKey?e(p).length===0?t(Je,2):t(Ze,-1):t(qe,1)})}s(M);var Qe=c(M,2);{var Ve=t=>{_t(t,{get apiKey(){return e(x).apiKey},onClose:q,onLaunch:R,get open(){return e(i)},set open(a){o(i,a,!0)}})};H(Qe,t=>{e(x)?.apiKey&&t(Ve)})}h(ie,F),Me()}export{qt as component};
1
+ import{p as fe,j as Ye,i as H,a as h,s as D,f as w,t as Ge}from"../chunks/Cg3dlX05.js";import{p as ke,v as $e,A as _e,w as Me,b as o,c as n,r as s,t as K,g as e,s as k,x as y,q as Ke,d as c,B as he,y as Ue,N as Xe,$ as et}from"../chunks/DYuMZGL5.js";import{T as Ae,s as Le,d as ne,S as tt,e as ge,C as at,f as st,I as rt,B as re,b as Be,c as Ie,i as nt,P as Pe,g as it}from"../chunks/DZvnhU_8.js";import{h as lt}from"../chunks/DZQMsHM5.js";import{g as De}from"../chunks/BFXEYMV8.js";import{R as ot,S as ct}from"../chunks/BRqaaL5D.js";import{S as dt}from"../chunks/CG453M9q.js";import{T as ut}from"../chunks/CSjf4fBs.js";import{c as vt,s as Ee,g as mt}from"../chunks/xs1Xl3_e.js";import{i as pt}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{E as Ne}from"../chunks/C5VOyQCG.js";var ft=w("<time> </time>"),ht=w("<time> </time>");function je(ie,d){ke(d,!0);let U=fe(d,"format",3,"long"),$=fe(d,"updateInterval",3,6e4),B=fe(d,"tooltip",3,!1),S=y(()=>d.date instanceof Date?d.date:new Date(d.date)),p=y(()=>e(S).toISOString()),A=y(()=>e(S).toLocaleString(d.locale,{dateStyle:"full",timeStyle:"short"})),T=k("");function C(){const _=Date.now(),g=e(S).getTime()-_,i=Math.abs(g),f=Math.round(i/1e3),q=Math.round(i/6e4),R=Math.round(i/36e5),J=Math.round(i/864e5),z=Math.round(i/6048e5),Z=Math.round(i/2592e6),X=Math.round(i/31536e6),ee=new Intl.RelativeTimeFormat(d.locale,{style:U()});let I,u;f<60?(I="second",u=f):q<60?(I="minute",u=q):R<24?(I="hour",u=R):J<7?(I="day",u=J):z<4?(I="week",u=z):Z<12?(I="month",u=Z):(I="year",u=X);const F=g<0?-1:1;return ee.format(F*u,I)}function x(){o(T,C(),!0)}$e(()=>{if(x(),$()>0){const _=setInterval(x,$());return()=>clearInterval(_)}});var E=Ye(),le=_e(E);{var oe=_=>{Ae(_,{get text(){return e(A)},children:(v,g)=>{var i=ft(),f=n(i,!0);s(i),K(()=>{Le(i,1,`relative-time ${d.classes??""??""}`,"svelte-o98vko"),ne(i,"datetime",e(p)),ne(i,"data-pw",typeof d.testId=="string"?d.testId:null),D(f,e(T))}),h(v,i)},$$slots:{default:!0}})},ce=_=>{var v=ht(),g=n(v,!0);s(v),K(()=>{Le(v,1,`relative-time ${d.classes??""??""}`,"svelte-o98vko"),ne(v,"datetime",e(p)),ne(v,"data-pw",typeof d.testId=="string"?d.testId:null),D(g,e(T))}),h(_,v)};H(le,_=>{B()?_(oe):_(ce,-1)})}h(ie,E),Me()}var gt=w('<div class="section svelte-plslui"><span class="section-label svelte-plslui">Quick Launch</span> <div class="preset-grid svelte-plslui"></div></div> <div class="section svelte-plslui"><span class="section-label svelte-plslui">Working Directory</span> <!> <div class="custom-cwd-group svelte-plslui"><!></div></div> <!> <!>',1);function _t(ie,d){ke(d,!0);let U=fe(d,"open",15,!1);const $=[{args:[],command:"claude",label:"Claude Code"},{args:[],command:"opencode",label:"OpenCode"},{args:[],command:"zsh",label:"Shell / zsh"},{args:[],command:"bash",label:"Bash"}];let B=k(0),S=k(Ke([])),p=k(""),A=k(""),T=k(!1),C=k("");$e(()=>{x()});async function x(){try{const v=await fetch("/api/sessions?limit=50&offset=0",{headers:{Authorization:`Bearer ${d.apiKey}`}});if(!v.ok)return;const i=(await v.json()).projects.map(f=>f.fullPath).filter(f=>typeof f=="string"&&f.length>0);o(S,[...new Set(i)],!0),e(S).length>0&&!e(p)&&o(p,e(S)[0],!0)}catch{}}function E(v){o(B,v,!0)}function le(){return $[e(B)].command}function oe(){return $[e(B)].args}function ce(){const v=e(A).trim();return v||(e(p)?e(p):"/tmp")}async function _(){const v=le();if(v){o(T,!0),o(C,"");try{const g=await fetch("/api/terminals",{body:JSON.stringify({args:oe(),command:v,cwd:ce()||void 0}),headers:{Authorization:`Bearer ${d.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(!g.ok){const f=await g.json().catch(()=>({}));o(C,(typeof f.error=="string"?f.error:"")||`Failed to launch (${g.status})`,!0);return}const i=await g.json();d.onLaunch(i)}catch{o(C,"Network error — is the server running?")}finally{o(T,!1)}}}tt(ie,{side:"bottom",title:"New Terminal",get onclose(){return d.onClose},classes:"launch-sheet",get open(){return U()},set open(g){U(g)},content:g=>{var i=gt(),f=_e(i),q=c(n(f),2);ge(q,23,()=>$,u=>u.label,(u,F,M)=>{{let de=y(()=>e(B)===e(M));at(u,{mode:"radio",get selected(){return e(de)},onclick:()=>{E(e(M))},classes:"preset-choice",children:(ve,we)=>{he();var ue=Ge();K(()=>D(ue,e(F).label)),h(ve,ue)},$$slots:{default:!0}})}}),s(q),s(f);var R=c(f,2),J=c(n(R),2);{let u=y(()=>e(S).length>0?e(S).map(M=>({id:M,label:M})):[{id:"",label:"No recent projects"}]),F=y(()=>e(p)?[e(p)]:e(S).length>0?[e(S)[0]]:[""]);st(J,{get items(){return e(u)},get value(){return e(F)},placeholder:"Select a project",onchange:M=>{o(p,M[0]||"",!0)},classes:"launch-select"})}var z=c(J,2),Z=n(z);rt(Z,{label:"Or enter a custom path",dataType:"text",placeholder:"/path/to/project",classes:"input-mono launch-input",get value(){return e(A)},set value(u){o(A,u,!0)}}),s(z),s(R);var X=c(R,2);{let u=y(()=>e(T)?"Launching...":"Launch Terminal");re(X,{classes:"btn-launch",get disabled(){return e(T)},onclick:_,get showLoader(){return e(T)},get text(){return e(u)}})}var ee=c(X,2);{var I=u=>{Be(u,{get text(){return e(C)},classes:"banner-error launch-error-banner"})};H(ee,u=>{e(C)&&u(I)})}h(g,i)},$$slots:{content:!0}}),Me()}var wt=w('<meta name="description" content="Active terminal sessions on this machine"/>'),xt=w("<!> Refresh",1),bt=w('<span class="plus-icon svelte-1ewpmn2">+</span> New Terminal',1),yt=w('<div class="loading-container"></div>'),St=w('<span class="plus-icon svelte-1ewpmn2">+</span> New Terminal',1),Tt=w('<span class="terminal-cwd svelte-1ewpmn2"> </span>'),Ct=w('<div class="terminal-preview svelte-1ewpmn2"><span class="terminal-preview-text svelte-1ewpmn2"> </span></div>'),It=w('<a class="terminal-card svelte-1ewpmn2"><div class="terminal-card-header svelte-1ewpmn2"><div class="terminal-card-left svelte-1ewpmn2"><span class="status-indicator status-running svelte-1ewpmn2"><span></span></span> <span class="terminal-command svelte-1ewpmn2"> </span> <!></div> <!></div> <div class="terminal-card-meta svelte-1ewpmn2"><!> <span class="terminal-pid svelte-1ewpmn2"> </span></div> <!></a>'),Pt=w('<span class="terminal-cwd svelte-1ewpmn2"> </span>'),At=w('<div class="terminal-preview svelte-1ewpmn2"><span class="terminal-preview-text svelte-1ewpmn2"> </span></div>'),Lt=w('<a class="terminal-card terminal-card-exited svelte-1ewpmn2"><div class="terminal-card-header svelte-1ewpmn2"><div class="terminal-card-left svelte-1ewpmn2"><span class="status-indicator status-exited svelte-1ewpmn2"><span class="status-dot-static"></span></span> <span class="terminal-command svelte-1ewpmn2"> </span> <!> <!></div> <div class="terminal-card-right svelte-1ewpmn2"><!> <!></div></div> <div class="terminal-card-meta svelte-1ewpmn2"><!></div> <!></a>'),kt=w('<div class="terminals-container svelte-1ewpmn2"><!> <!></div>'),$t=w('<main class="main"><div class="page-header"><div class="page-header-content"><div><h1 class="page-title">Terminals</h1> <p class="page-description">Active terminal sessions on this machine</p></div> <div class="page-actions"><!> <!></div></div></div> <!> <!></main> <!>',1);function qt(ie,d){ke(d,!0);const U=1e4,$="shooter_terminals",B=["claude","opencode"],S=["zsh","bash","sh","fish"];let p=k(Ke([])),A=k(!1),T=!1,C=k(null),x=k(null),E=null;const le=y(()=>e(p).filter(t=>t.status==="running")),oe=y(()=>e(p).filter(t=>t.status==="exited"));$e(()=>{ce();const t=mt($,1e4);t&&(o(p,t,!0),o(A,!1)),_(),E=setInterval(()=>{e(x)?.apiKey&&_()},U)}),Ue(()=>{E&&(clearInterval(E),E=null)});function ce(){try{const t=localStorage.getItem("shooter_config");if(t){const a=JSON.parse(t);pt(a)?o(x,a,!0):(localStorage.removeItem("shooter_config"),o(x,null))}}catch{}}async function _(){if(!(!e(x)?.apiKey||T)){T=!0,e(p).length===0&&o(A,!0);try{const a=await fetch("/api/terminals",{headers:{Authorization:`Bearer ${e(x).apiKey}`}});if(!a.ok){o(C,`Failed to load terminals (HTTP ${a.status})`);return}o(C,null);const r=await a.json();o(p,r.terminals.map(b=>({...b,lastOutput:b.lastOutput??null})),!0),Ee($,e(p))}catch(t){o(C,"Failed to load terminals"),console.error("Failed to fetch terminals:",t)}finally{o(A,!1),T=!1}}}async function v(){o(A,!0),vt($),await _()}function g(){De("/config")}let i=k(!1);function f(){o(i,!0)}function q(){o(i,!1)}function R(t){o(i,!1),De(`/terminals/${t.id}`)}function J(t){const a=t.split("/").pop()||t;return B.includes(a)?"ai":(S.includes(a),"shell")}function z(t){return t.status==="exited"?{class:"pill-badge-ended",label:"ENDED"}:J(t.command)==="ai"?{class:"pill-badge-ai",label:"AI"}:{class:"pill-badge-shell",label:"SHELL"}}function Z(t,a=40){if(t.length<=a)return t;const r=t.split("/");return r.length<=3?t:`${r[0]}/.../${r.slice(-2).join("/")}`}function X(t){return t.replace(/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\x1b\[[\?]?[0-9;]*[a-zA-Z]|\x1b/g,"").replace(/[\x00-\x1f]/g,"").trim()}function ee(t,a=80){if(!t)return"";const r=t.split(`
2
+ `).map(P=>X(P)).filter(P=>P.trim()),b=r[r.length-1]||"";return b.length<=a?b:`${b.slice(0,a)}...`}function I(t){return t.split("/").pop()||t}async function u(t,a){if(t.preventDefault(),t.stopPropagation(),!!e(x)?.apiKey)try{(await fetch(`/api/terminals/${a}`,{headers:{Authorization:`Bearer ${e(x).apiKey}`},method:"DELETE"})).ok&&(o(p,e(p).filter(b=>b.id!==a),!0),Ee($,e(p)))}catch(r){console.error("Failed to remove terminal:",r)}}var F=$t();lt("1ewpmn2",t=>{var a=wt();Xe(()=>{et.title="Terminals - Shooter"}),h(t,a)});var M=_e(F),de=n(M),ve=n(de),we=c(n(ve),2),ue=n(we);re(ue,{classes:"btn-secondary",onclick:v,get disabled(){return e(A)},children:(t,a)=>{var r=xt(),b=_e(r);Ie(b,{get svg(){return ot},classes:"icon-14"}),he(),h(t,r)},$$slots:{default:!0}});var Re=c(ue,2);re(Re,{classes:"btn-primary",onclick:f,children:(t,a)=>{var r=bt();he(),h(t,r)},$$slots:{default:!0}}),s(we),s(ve),s(de);var Oe=c(de,2);{var ze=t=>{Be(t,{get text(){return e(C)},classes:"banner-error"})};H(Oe,t=>{e(C)&&t(ze)})}var Fe=c(Oe,2);{var He=t=>{var a=yt();ge(a,20,()=>Array(4),nt,(r,b)=>{ct(r,{classes:"shimmer-card"})}),s(a),h(t,a)},qe=t=>{Ne(t,{title:"Configuration Required",description:"Set up your API credentials to view terminal sessions",icon:r=>{Ie(r,{get svg(){return dt},classes:"icon-24"})},children:(r,b)=>{re(r,{classes:"btn-primary",onclick:g,text:"Configure Settings"})}})},Je=t=>{Ne(t,{title:"No terminals",description:"Launch a new terminal session to get started. Terminal sessions will appear here once created.",icon:r=>{Ie(r,{get svg(){return ut},classes:"icon-24"})},children:(r,b)=>{re(r,{classes:"btn-primary",onclick:f,children:(P,l)=>{var Q=St();he(),h(P,Q)},$$slots:{default:!0}})}})},Ze=t=>{var a=kt(),r=n(a);ge(r,17,()=>e(le),P=>P.id,(P,l)=>{const Q=y(()=>z(e(l)));var N=It(),V=n(N),W=n(V),Y=n(W),xe=n(Y);s(Y);var te=c(Y,2),be=n(te,!0);s(te);var ye=c(te,2);Pe(ye,{get text(){return e(Q).label},get classes(){return e(Q).class}}),s(W);var me=c(W,2);je(me,{get date(){return e(l).createdAt},format:"narrow",classes:"terminal-time"}),s(V);var ae=c(V,2),pe=n(ae);{let m=y(()=>e(l).currentCwd||e(l).cwd);Ae(pe,{get text(){return e(m)},position:"bottom",children:(L,O)=>{var j=Tt(),G=n(j,!0);s(j),K(We=>D(G,We),[()=>Z(e(l).currentCwd||e(l).cwd)]),h(L,j)},$$slots:{default:!0}})}var se=c(pe,2),Se=n(se);s(se),s(ae);var Te=c(ae,2);{var Ce=m=>{var L=Ct(),O=n(L),j=n(O,!0);s(O),s(L),K(G=>D(j,G),[()=>ee(e(l).lastOutput)]),h(m,L)};H(Te,m=>{e(l).lastOutput&&m(Ce)})}s(N),K(m=>{ne(N,"href",`/terminals/${e(l).id??""}`),Le(xe,1,it(e(l).isActive?"status-dot-active":"status-dot-idle")),D(be,m),D(Se,`PID ${e(l).pid??""}`)},[()=>I(e(l).command)]),h(P,N)});var b=c(r,2);ge(b,17,()=>e(oe),P=>P.id,(P,l)=>{const Q=y(()=>z(e(l)));var N=Lt(),V=n(N),W=n(V),Y=c(n(W),2),xe=n(Y,!0);s(Y);var te=c(Y,2);Pe(te,{get text(){return e(Q).label},get classes(){return e(Q).class}});var be=c(te,2);{var ye=m=>{{let L=y(()=>e(l).exitCode!==0?"pill-exit-error":"pill-exit-ok");Pe(m,{get text(){return`exit ${e(l).exitCode??""}`},get classes(){return e(L)}})}};H(be,m=>{e(l).exitCode!==null&&m(ye)})}s(W);var me=c(W,2),ae=n(me);{let m=y(()=>e(l).exitedAt||e(l).createdAt);je(ae,{get date(){return e(m)},format:"narrow",classes:"terminal-time"})}var pe=c(ae,2);re(pe,{classes:"btn-ghost btn-sm btn-remove",onclick:m=>{u(m,e(l).id)},text:"×"}),s(me),s(V);var se=c(V,2),Se=n(se);Ae(Se,{get text(){return e(l).cwd},position:"bottom",children:(m,L)=>{var O=Pt(),j=n(O,!0);s(O),K(G=>D(j,G),[()=>Z(e(l).cwd)]),h(m,O)},$$slots:{default:!0}}),s(se);var Te=c(se,2);{var Ce=m=>{var L=At(),O=n(L),j=n(O,!0);s(O),s(L),K(G=>D(j,G),[()=>ee(e(l).lastOutput)]),h(m,L)};H(Te,m=>{e(l).lastOutput&&m(Ce)})}s(N),K(m=>{ne(N,"href",`/terminals/${e(l).id??""}`),D(xe,m)},[()=>I(e(l).command)]),h(P,N)}),s(a),h(t,a)};H(Fe,t=>{e(A)&&e(p).length===0?t(He):e(x)?.apiKey?e(p).length===0?t(Je,2):t(Ze,-1):t(qe,1)})}s(M);var Qe=c(M,2);{var Ve=t=>{_t(t,{get apiKey(){return e(x).apiKey},onClose:q,onLaunch:R,get open(){return e(i)},set open(a){o(i,a,!0)}})};H(Qe,t=>{e(x)?.apiKey&&t(Ve)})}h(ie,F),Me()}export{qt as component};