@recombine-ai/bosun 0.16.2 → 0.18.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 (481) hide show
  1. package/build/client/_app/immutable/assets/0.B4Hv80zl.css +1 -0
  2. package/build/client/_app/immutable/assets/0.B4Hv80zl.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.B4Hv80zl.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/{2.DtxQDOXx.css → 2.Bc0Sf3YD.css} +1 -1
  5. package/build/client/_app/immutable/assets/2.Bc0Sf3YD.css.br +0 -0
  6. package/build/client/_app/immutable/assets/2.Bc0Sf3YD.css.gz +0 -0
  7. package/build/client/_app/immutable/chunks/A4HgFSOM.js +1 -0
  8. package/build/client/_app/immutable/chunks/A4HgFSOM.js.br +2 -0
  9. package/build/client/_app/immutable/chunks/A4HgFSOM.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{DoD3q5w5.js → B00B3Gwh.js} +1 -1
  11. package/build/client/_app/immutable/chunks/B00B3Gwh.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/B00B3Gwh.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/B43-lfXY.js +1 -0
  14. package/build/client/_app/immutable/chunks/B43-lfXY.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/B43-lfXY.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/B4tOnDzM.js +1 -0
  17. package/build/client/_app/immutable/chunks/B4tOnDzM.js.br +2 -0
  18. package/build/client/_app/immutable/chunks/B4tOnDzM.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{Bv1mNXs0.js → BDY0xZsU.js} +1 -1
  20. package/build/client/_app/immutable/chunks/BDY0xZsU.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/BDY0xZsU.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{UqjCSZmA.js → BIxSqfKT.js} +1 -1
  23. package/build/client/_app/immutable/chunks/BIxSqfKT.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BIxSqfKT.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/{r0sHOWrM.js → BQJs3N6E.js} +1 -1
  26. package/build/client/_app/immutable/chunks/BQJs3N6E.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BQJs3N6E.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/{BHHfrjbV.js → BXh99ZNk.js} +1 -1
  29. package/build/client/_app/immutable/chunks/BXh99ZNk.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/BXh99ZNk.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/B_RIpUuZ.js +1 -0
  32. package/build/client/_app/immutable/chunks/B_RIpUuZ.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/B_RIpUuZ.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/{CEHsomMo.js → Bd-a6hgR.js} +1 -1
  35. package/build/client/_app/immutable/chunks/Bd-a6hgR.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/{CEHsomMo.js.gz → Bd-a6hgR.js.gz} +0 -0
  37. package/build/client/_app/immutable/chunks/{Dm49pcMm.js → BftRRaUE.js} +1 -1
  38. package/build/client/_app/immutable/chunks/BftRRaUE.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/BftRRaUE.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/Bm4FdRXc.js +1 -0
  41. package/build/client/_app/immutable/chunks/Bm4FdRXc.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/Bm4FdRXc.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/{Ddv5LgEc.js → BmdpEiKy.js} +2 -2
  44. package/build/client/_app/immutable/chunks/BmdpEiKy.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/BmdpEiKy.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/{B5zf3x62.js → BxZ1WgZm.js} +1 -1
  47. package/build/client/_app/immutable/chunks/BxZ1WgZm.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/BxZ1WgZm.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/{Cp_st-64.js → C9LBPFJH.js} +1 -1
  50. package/build/client/_app/immutable/chunks/C9LBPFJH.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/C9LBPFJH.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/{JcG4w2gF.js → CH3XJDoO.js} +1 -1
  53. package/build/client/_app/immutable/chunks/CH3XJDoO.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/CH3XJDoO.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/CWVkeRMt.js +3 -0
  56. package/build/client/_app/immutable/chunks/CWVkeRMt.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/CWVkeRMt.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/CXfw8fai.js +1 -0
  59. package/build/client/_app/immutable/chunks/CXfw8fai.js.br +2 -0
  60. package/build/client/_app/immutable/chunks/CXfw8fai.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/{DfcDjAv-.js → Clfp4Zf_.js} +1 -1
  62. package/build/client/_app/immutable/chunks/Clfp4Zf_.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/Clfp4Zf_.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/{DneQQ7D5.js → Cr5XqyuF.js} +1 -1
  65. package/build/client/_app/immutable/chunks/Cr5XqyuF.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/Cr5XqyuF.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/{Bmd5zhWC.js → CxzD8Edk.js} +1 -1
  68. package/build/client/_app/immutable/chunks/CxzD8Edk.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/CxzD8Edk.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/D6iBTJD_.js +1 -0
  71. package/build/client/_app/immutable/chunks/D6iBTJD_.js.br +0 -0
  72. package/build/client/_app/immutable/chunks/D6iBTJD_.js.gz +0 -0
  73. package/build/client/_app/immutable/chunks/{CJcZ2GVC.js → DB-s6wHX.js} +1 -1
  74. package/build/client/_app/immutable/chunks/DB-s6wHX.js.br +0 -0
  75. package/build/client/_app/immutable/chunks/DB-s6wHX.js.gz +0 -0
  76. package/build/client/_app/immutable/chunks/D_LCsjN0.js +1 -0
  77. package/build/client/_app/immutable/chunks/D_LCsjN0.js.br +0 -0
  78. package/build/client/_app/immutable/chunks/D_LCsjN0.js.gz +0 -0
  79. package/build/client/_app/immutable/chunks/Dd-8KgV2.js +2 -0
  80. package/build/client/_app/immutable/chunks/Dd-8KgV2.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/Dd-8KgV2.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/{pPpIn6tB.js → DdmShlNz.js} +1 -1
  83. package/build/client/_app/immutable/chunks/DdmShlNz.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/DdmShlNz.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/Df5gZp_x.js +1 -0
  86. package/build/client/_app/immutable/chunks/Df5gZp_x.js.br +0 -0
  87. package/build/client/_app/immutable/chunks/Df5gZp_x.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/{wcTQUnZO.js → Dfg-7N3Z.js} +1 -1
  89. package/build/client/_app/immutable/chunks/Dfg-7N3Z.js.br +0 -0
  90. package/build/client/_app/immutable/chunks/Dfg-7N3Z.js.gz +0 -0
  91. package/build/client/_app/immutable/chunks/{BnqH7p3U.js → DnsnkygW.js} +2 -2
  92. package/build/client/_app/immutable/chunks/DnsnkygW.js.br +0 -0
  93. package/build/client/_app/immutable/chunks/DnsnkygW.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/{D8mA-uZ4.js → Do-VHn0U.js} +1 -1
  95. package/build/client/_app/immutable/chunks/Do-VHn0U.js.br +0 -0
  96. package/build/client/_app/immutable/chunks/Do-VHn0U.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/{DyBwTDJp.js → DtC6KNFZ.js} +1 -1
  98. package/build/client/_app/immutable/chunks/DtC6KNFZ.js.br +0 -0
  99. package/build/client/_app/immutable/chunks/DtC6KNFZ.js.gz +0 -0
  100. package/build/client/_app/immutable/chunks/{DtXXy94i.js → LEDvCGy2.js} +1 -1
  101. package/build/client/_app/immutable/chunks/LEDvCGy2.js.br +0 -0
  102. package/build/client/_app/immutable/chunks/LEDvCGy2.js.gz +0 -0
  103. package/build/client/_app/immutable/chunks/PrCSpCPg.js +1 -0
  104. package/build/client/_app/immutable/chunks/PrCSpCPg.js.br +0 -0
  105. package/build/client/_app/immutable/chunks/PrCSpCPg.js.gz +0 -0
  106. package/build/client/_app/immutable/chunks/Si6VyCMt.js +8 -0
  107. package/build/client/_app/immutable/chunks/Si6VyCMt.js.br +0 -0
  108. package/build/client/_app/immutable/chunks/Si6VyCMt.js.gz +0 -0
  109. package/build/client/_app/immutable/chunks/{Dy2CFyD6.js → W2LAs4ks.js} +1 -1
  110. package/build/client/_app/immutable/chunks/W2LAs4ks.js.br +0 -0
  111. package/build/client/_app/immutable/chunks/W2LAs4ks.js.gz +0 -0
  112. package/build/client/_app/immutable/chunks/{DCXjBDmY.js → cxBf7mxj.js} +1 -1
  113. package/build/client/_app/immutable/chunks/cxBf7mxj.js.br +0 -0
  114. package/build/client/_app/immutable/chunks/cxBf7mxj.js.gz +0 -0
  115. package/build/client/_app/immutable/chunks/g6pAcE-g.js +1 -0
  116. package/build/client/_app/immutable/chunks/g6pAcE-g.js.br +0 -0
  117. package/build/client/_app/immutable/chunks/g6pAcE-g.js.gz +0 -0
  118. package/build/client/_app/immutable/chunks/nt0OWMrn.js +2 -0
  119. package/build/client/_app/immutable/chunks/nt0OWMrn.js.br +0 -0
  120. package/build/client/_app/immutable/chunks/nt0OWMrn.js.gz +0 -0
  121. package/build/client/_app/immutable/chunks/r0jEdDRH.js +1 -0
  122. package/build/client/_app/immutable/chunks/r0jEdDRH.js.br +0 -0
  123. package/build/client/_app/immutable/chunks/r0jEdDRH.js.gz +0 -0
  124. package/build/client/_app/immutable/entry/app.C6BwoHPB.js +2 -0
  125. package/build/client/_app/immutable/entry/app.C6BwoHPB.js.br +0 -0
  126. package/build/client/_app/immutable/entry/app.C6BwoHPB.js.gz +0 -0
  127. package/build/client/_app/immutable/entry/start.DtdsXA4D.js +1 -0
  128. package/build/client/_app/immutable/entry/start.DtdsXA4D.js.br +2 -0
  129. package/build/client/_app/immutable/entry/start.DtdsXA4D.js.gz +0 -0
  130. package/build/client/_app/immutable/nodes/{0.nG3DdvIX.js → 0.Be4zhwyU.js} +1 -1
  131. package/build/client/_app/immutable/nodes/0.Be4zhwyU.js.br +0 -0
  132. package/build/client/_app/immutable/nodes/0.Be4zhwyU.js.gz +0 -0
  133. package/build/client/_app/immutable/nodes/1.DU-ZnWjM.js +1 -0
  134. package/build/client/_app/immutable/nodes/1.DU-ZnWjM.js.br +0 -0
  135. package/build/client/_app/immutable/nodes/1.DU-ZnWjM.js.gz +0 -0
  136. package/build/client/_app/immutable/nodes/10.CnYak_rj.js +28 -0
  137. package/build/client/_app/immutable/nodes/10.CnYak_rj.js.br +0 -0
  138. package/build/client/_app/immutable/nodes/10.CnYak_rj.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/{15.D2I0y3ys.js → 15.DZxmOvq_.js} +1 -1
  140. package/build/client/_app/immutable/nodes/15.DZxmOvq_.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/15.DZxmOvq_.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/17.6u3BMaGP.js +3 -0
  143. package/build/client/_app/immutable/nodes/17.6u3BMaGP.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/17.6u3BMaGP.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/18.B74hqK3k.js +11 -0
  146. package/build/client/_app/immutable/nodes/18.B74hqK3k.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/18.B74hqK3k.js.gz +0 -0
  148. package/build/client/_app/immutable/nodes/2.tsu7vFWw.js +35 -0
  149. package/build/client/_app/immutable/nodes/2.tsu7vFWw.js.br +0 -0
  150. package/build/client/_app/immutable/nodes/2.tsu7vFWw.js.gz +0 -0
  151. package/build/client/_app/immutable/nodes/3.uagy_HG1.js +1 -0
  152. package/build/client/_app/immutable/nodes/3.uagy_HG1.js.br +0 -0
  153. package/build/client/_app/immutable/nodes/3.uagy_HG1.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/{4.C8VxVbVn.js → 4.DMbfNKYL.js} +1 -1
  155. package/build/client/_app/immutable/nodes/4.DMbfNKYL.js.br +0 -0
  156. package/build/client/_app/immutable/nodes/4.DMbfNKYL.js.gz +0 -0
  157. package/build/client/_app/immutable/nodes/{5.BjrnKYaA.js → 5.DpWrPX3L.js} +1 -1
  158. package/build/client/_app/immutable/nodes/5.DpWrPX3L.js.br +0 -0
  159. package/build/client/_app/immutable/nodes/5.DpWrPX3L.js.gz +0 -0
  160. package/build/client/_app/immutable/nodes/{6.C_hEzPrU.js → 6.D7wtfdve.js} +1 -1
  161. package/build/client/_app/immutable/nodes/6.D7wtfdve.js.br +0 -0
  162. package/build/client/_app/immutable/nodes/6.D7wtfdve.js.gz +0 -0
  163. package/build/client/_app/immutable/nodes/8.Bo50UIdy.js +2 -0
  164. package/build/client/_app/immutable/nodes/8.Bo50UIdy.js.br +0 -0
  165. package/build/client/_app/immutable/nodes/8.Bo50UIdy.js.gz +0 -0
  166. package/build/client/_app/immutable/nodes/{9.DVspuDYY.js → 9.B2xXyeYp.js} +1 -1
  167. package/build/client/_app/immutable/nodes/9.B2xXyeYp.js.br +0 -0
  168. package/build/client/_app/immutable/nodes/9.B2xXyeYp.js.gz +0 -0
  169. package/build/client/_app/version.json +1 -1
  170. package/build/client/_app/version.json.br +0 -0
  171. package/build/client/_app/version.json.gz +0 -0
  172. package/build/server/chunks/0-BFGwTpfy.js +9 -0
  173. package/build/server/chunks/0-BFGwTpfy.js.map +1 -0
  174. package/build/server/chunks/1-B_bvJcKE.js +9 -0
  175. package/build/server/chunks/{1-C0HdTvXW.js.map → 1-B_bvJcKE.js.map} +1 -1
  176. package/build/server/chunks/10-CVT4oo13.js +9 -0
  177. package/build/server/chunks/10-CVT4oo13.js.map +1 -0
  178. package/build/server/chunks/15-B6cgfT20.js +9 -0
  179. package/build/server/chunks/{15-BQcb9C_y.js.map → 15-B6cgfT20.js.map} +1 -1
  180. package/build/server/chunks/17-fi2rlX_T.js +9 -0
  181. package/build/server/chunks/17-fi2rlX_T.js.map +1 -0
  182. package/build/server/chunks/18-CdypjWwX.js +9 -0
  183. package/build/server/chunks/18-CdypjWwX.js.map +1 -0
  184. package/build/server/chunks/2-CkwyQ1U4.js +9 -0
  185. package/build/server/chunks/2-CkwyQ1U4.js.map +1 -0
  186. package/build/server/chunks/3-BXLsvzRq.js +9 -0
  187. package/build/server/chunks/3-BXLsvzRq.js.map +1 -0
  188. package/build/server/chunks/4-C3Me7zq3.js +9 -0
  189. package/build/server/chunks/4-C3Me7zq3.js.map +1 -0
  190. package/build/server/chunks/5-DYS5LmK2.js +9 -0
  191. package/build/server/chunks/{5-CBdMutbv.js.map → 5-DYS5LmK2.js.map} +1 -1
  192. package/build/server/chunks/6-Cp6GA1FS.js +9 -0
  193. package/build/server/chunks/{6-FoEi7ggm.js.map → 6-Cp6GA1FS.js.map} +1 -1
  194. package/build/server/chunks/8-Csly_0ub.js +9 -0
  195. package/build/server/chunks/8-Csly_0ub.js.map +1 -0
  196. package/build/server/chunks/9-C1UZfJDT.js +9 -0
  197. package/build/server/chunks/9-C1UZfJDT.js.map +1 -0
  198. package/build/server/chunks/{AgentSidebar-BWBnqHnV.js → AgentSidebar-BqqgUCT2.js} +4 -4
  199. package/build/server/chunks/{AgentSidebar-BWBnqHnV.js.map → AgentSidebar-BqqgUCT2.js.map} +1 -1
  200. package/build/server/chunks/{Button-DH7gdU0s.js → Button-Huqrc2wY.js} +2 -2
  201. package/build/server/chunks/{Button-DH7gdU0s.js.map → Button-Huqrc2wY.js.map} +1 -1
  202. package/build/server/chunks/{ChatStepTrace-BivoNYOY.js → ChatStepTrace-CmyR6NOL.js} +21 -7
  203. package/build/server/chunks/ChatStepTrace-CmyR6NOL.js.map +1 -0
  204. package/build/server/chunks/{Icon-DP1YKCRV.js → Icon-BJfQMgGu.js} +2 -2
  205. package/build/server/chunks/{Icon-DP1YKCRV.js.map → Icon-BJfQMgGu.js.map} +1 -1
  206. package/build/server/chunks/{Input-CUJ9Cg7b.js → Input-D-uxKbuX.js} +2 -2
  207. package/build/server/chunks/{Input-CUJ9Cg7b.js.map → Input-D-uxKbuX.js.map} +1 -1
  208. package/build/server/chunks/{Modal-CGJuNpZ0.js → Modal-B_fVcSLK.js} +5 -5
  209. package/build/server/chunks/{Modal-CGJuNpZ0.js.map → Modal-B_fVcSLK.js.map} +1 -1
  210. package/build/server/chunks/{Panel-zvjxe036.js → Panel-mV52rK4D.js} +2 -2
  211. package/build/server/chunks/{Panel-zvjxe036.js.map → Panel-mV52rK4D.js.map} +1 -1
  212. package/build/server/chunks/{Tab-CUkyLqbN.js → Tab-tFWS4zzn.js} +8 -11
  213. package/build/server/chunks/Tab-tFWS4zzn.js.map +1 -0
  214. package/build/server/chunks/{_layout.svelte-B-0DHjLB.js → _layout.svelte-BjBXlTt-.js} +8 -8
  215. package/build/server/chunks/{_layout.svelte-B-0DHjLB.js.map → _layout.svelte-BjBXlTt-.js.map} +1 -1
  216. package/build/server/chunks/{_layout.svelte-BnrWYuLv.js → _layout.svelte-Bv87ouh2.js} +9 -10
  217. package/build/server/chunks/{_layout.svelte-BnrWYuLv.js.map → _layout.svelte-Bv87ouh2.js.map} +1 -1
  218. package/build/server/chunks/{_layout.svelte-B88WMyk0.js → _layout.svelte-CHJ_Q00I.js} +130 -37
  219. package/build/server/chunks/_layout.svelte-CHJ_Q00I.js.map +1 -0
  220. package/build/server/chunks/{_layout.svelte-wi6o5Ecu.js → _layout.svelte-DPP4TE7p.js} +305 -46
  221. package/build/server/chunks/_layout.svelte-DPP4TE7p.js.map +1 -0
  222. package/build/server/chunks/{_page.svelte-DhFNFMnl.js → _page.svelte-CDGPJuVG.js} +11 -11
  223. package/build/server/chunks/_page.svelte-CDGPJuVG.js.map +1 -0
  224. package/build/server/chunks/{_page.svelte-CeS_21Ho.js → _page.svelte-CXjHZqjR.js} +22 -20
  225. package/build/server/chunks/_page.svelte-CXjHZqjR.js.map +1 -0
  226. package/build/server/chunks/{_page.svelte-BoHt2cpr.js → _page.svelte-CZXVTrWJ.js} +5 -5
  227. package/build/server/chunks/{_page.svelte-BoHt2cpr.js.map → _page.svelte-CZXVTrWJ.js.map} +1 -1
  228. package/build/server/chunks/{_page.svelte-h_J4lNT9.js → _page.svelte-CvPyTgqp.js} +6 -6
  229. package/build/server/chunks/{_page.svelte-h_J4lNT9.js.map → _page.svelte-CvPyTgqp.js.map} +1 -1
  230. package/build/server/chunks/{_page.svelte-DHSYVLoj.js → _page.svelte-DHE9UaxV.js} +11 -12
  231. package/build/server/chunks/{_page.svelte-DHSYVLoj.js.map → _page.svelte-DHE9UaxV.js.map} +1 -1
  232. package/build/server/chunks/{_page.svelte-CHgQjBQj.js → _page.svelte-DSLYtPvs.js} +2 -2
  233. package/build/server/chunks/{_page.svelte-CHgQjBQj.js.map → _page.svelte-DSLYtPvs.js.map} +1 -1
  234. package/build/server/chunks/{_page.svelte-57pyhszV.js → _page.svelte-Yjru58jZ.js} +20 -107
  235. package/build/server/chunks/_page.svelte-Yjru58jZ.js.map +1 -0
  236. package/build/server/chunks/{_page.svelte-BSVJ2d2G.js → _page.svelte-nQ_thh1S.js} +186 -104
  237. package/build/server/chunks/_page.svelte-nQ_thh1S.js.map +1 -0
  238. package/build/server/chunks/{agents-context-CbFsZmi5.js → agents-context-BdX2j9DI.js} +2 -2
  239. package/build/server/chunks/{agents-context-CbFsZmi5.js.map → agents-context-BdX2j9DI.js.map} +1 -1
  240. package/build/server/chunks/{Dropdown-DnARl86Q.js → chat-content.svelte-x4GXVNwU.js} +16 -4
  241. package/build/server/chunks/chat-content.svelte-x4GXVNwU.js.map +1 -0
  242. package/build/server/chunks/{client-DO-hqMbT.js → client-D1Y2ZQJN.js} +4 -4
  243. package/build/server/chunks/{client-DO-hqMbT.js.map → client-D1Y2ZQJN.js.map} +1 -1
  244. package/build/server/chunks/{conversation-view-memory-CtbUZd_L.js → conversation-view-memory-CMgSQUdu.js} +2 -2
  245. package/build/server/chunks/{conversation-view-memory-CtbUZd_L.js.map → conversation-view-memory-CMgSQUdu.js.map} +1 -1
  246. package/build/server/chunks/{edit-workspace-context-tyHBPujC.js → edit-workspace-context-ClnqepZ4.js} +2 -2
  247. package/build/server/chunks/{edit-workspace-context-tyHBPujC.js.map → edit-workspace-context-ClnqepZ4.js.map} +1 -1
  248. package/build/server/chunks/error.svelte-B5VtiMGd.js +15 -0
  249. package/build/server/chunks/{error.svelte-DmKKN1RU.js.map → error.svelte-B5VtiMGd.js.map} +1 -1
  250. package/build/server/chunks/{index-LMsd1ih2.js → index-Do08hKbr.js} +8 -5
  251. package/build/server/chunks/index-Do08hKbr.js.map +1 -0
  252. package/build/server/chunks/{index-server-BRr5mZEq.js → index-server-CHFC9Apw.js} +2 -2
  253. package/build/server/chunks/index-server-CHFC9Apw.js.map +1 -0
  254. package/build/server/chunks/{index2-ClgfzZ89.js → index2-B_Xf0ugP.js} +3 -3
  255. package/build/server/chunks/{index2-ClgfzZ89.js.map → index2-B_Xf0ugP.js.map} +1 -1
  256. package/build/server/chunks/{index3-BdRUAffj.js → index3-C9gC86lU.js} +2 -2
  257. package/build/server/chunks/{index3-BdRUAffj.js.map → index3-C9gC86lU.js.map} +1 -1
  258. package/build/server/chunks/log-content.svelte-D5gN0L7Q.js +7 -0
  259. package/build/server/chunks/log-content.svelte-D5gN0L7Q.js.map +1 -0
  260. package/build/server/chunks/{root-4q2Pr7ck.js → root-DoSdrdfw.js} +2 -2
  261. package/build/server/chunks/root-DoSdrdfw.js.map +1 -0
  262. package/build/server/chunks/{source-selection-CcN1cgXc.js → source-selection-1aBuBpkL.js} +45 -2
  263. package/build/server/chunks/source-selection-1aBuBpkL.js.map +1 -0
  264. package/build/server/chunks/{state.svelte-Bd1i-u49.js → state.svelte-B2OaeWMp.js} +3 -3
  265. package/build/server/chunks/{state.svelte-Bd1i-u49.js.map → state.svelte-B2OaeWMp.js.map} +1 -1
  266. package/build/server/index.js +4 -4
  267. package/build/server/index.js.map +1 -1
  268. package/build/server/manifest.js +14 -14
  269. package/build/server/manifest.js.map +1 -1
  270. package/package.json +1 -5
  271. package/src/backend/roleplay/agent-loader.ts +49 -0
  272. package/src/backend/roleplay/prompt-edit-proposals.ts +38 -4
  273. package/src/backend/roleplay/prompt-file.ts +59 -0
  274. package/src/backend/roleplay/router.spec.ts +75 -0
  275. package/src/backend/roleplay/router.ts +123 -69
  276. package/src/backend/roleplay/suggest-file-edit.ts +160 -0
  277. package/src/backend/roleplay/suggest-prompt-edit.ts +9 -138
  278. package/src/backend/roleplay/suggest-test-fix.spec.ts +50 -0
  279. package/src/backend/roleplay/suggest-test-fix.ts +65 -0
  280. package/src/backend/roleplay/test-fix-proposal-acceptance.spec.ts +253 -0
  281. package/src/backend/tests/academy.ts +16 -2
  282. package/src/backend/tests/data.spec.ts +81 -2
  283. package/src/backend/tests/data.ts +74 -4
  284. package/src/backend/tests/router.ts +101 -36
  285. package/src/backend/tests/suggest-test-history-edit.spec.ts +20 -0
  286. package/src/backend/tests/suggest-test-history-edit.ts +52 -0
  287. package/src/backend/tests/test-edit-source.spec.ts +61 -0
  288. package/src/backend/tests/test-edit-source.ts +34 -0
  289. package/src/backend/tests/test-history-edit-proposals.ts +69 -0
  290. package/src/backend/tests/test-history-overrides.spec.ts +24 -0
  291. package/src/backend/tests/test-selection.ts +27 -0
  292. package/src/lib/api-telescope/client.ts +25 -0
  293. package/src/lib/api-telescope/source-selection.spec.ts +44 -0
  294. package/src/lib/api-telescope/source-selection.ts +28 -0
  295. package/src/lib/api-telescope/types.ts +28 -0
  296. package/src/lib/components/Modal.svelte +1 -1
  297. package/src/lib/components/Tab.svelte +10 -12
  298. package/src/lib/edit/edit-workspace-context.ts +29 -0
  299. package/src/lib/edit/test-ai-edit.spec.ts +31 -0
  300. package/src/lib/edit/test-ai-edit.ts +52 -0
  301. package/src/lib/monaco/bosun-theme.ts +6 -83
  302. package/src/lib/monaco/editor-appearance.spec.ts +84 -0
  303. package/src/lib/monaco/editor-appearance.ts +154 -0
  304. package/src/lib/monaco/editor-decorations.spec.ts +91 -0
  305. package/src/lib/monaco/editor-decorations.ts +133 -0
  306. package/src/lib/tests/assertion-types.ts +74 -0
  307. package/build/client/_app/immutable/assets/0.Rrc0O--C.css +0 -1
  308. package/build/client/_app/immutable/assets/0.Rrc0O--C.css.br +0 -0
  309. package/build/client/_app/immutable/assets/0.Rrc0O--C.css.gz +0 -0
  310. package/build/client/_app/immutable/assets/2.DtxQDOXx.css.br +0 -0
  311. package/build/client/_app/immutable/assets/2.DtxQDOXx.css.gz +0 -0
  312. package/build/client/_app/immutable/chunks/B1HdnQRQ.js +0 -1
  313. package/build/client/_app/immutable/chunks/B1HdnQRQ.js.br +0 -0
  314. package/build/client/_app/immutable/chunks/B1HdnQRQ.js.gz +0 -0
  315. package/build/client/_app/immutable/chunks/B5zf3x62.js.br +0 -0
  316. package/build/client/_app/immutable/chunks/B5zf3x62.js.gz +0 -0
  317. package/build/client/_app/immutable/chunks/BHHfrjbV.js.br +0 -2
  318. package/build/client/_app/immutable/chunks/BHHfrjbV.js.gz +0 -0
  319. package/build/client/_app/immutable/chunks/BU7aeYn4.js +0 -1
  320. package/build/client/_app/immutable/chunks/BU7aeYn4.js.br +0 -0
  321. package/build/client/_app/immutable/chunks/BU7aeYn4.js.gz +0 -0
  322. package/build/client/_app/immutable/chunks/BbGYcfPY.js +0 -3
  323. package/build/client/_app/immutable/chunks/BbGYcfPY.js.br +0 -0
  324. package/build/client/_app/immutable/chunks/BbGYcfPY.js.gz +0 -0
  325. package/build/client/_app/immutable/chunks/Bmd5zhWC.js.br +0 -0
  326. package/build/client/_app/immutable/chunks/Bmd5zhWC.js.gz +0 -0
  327. package/build/client/_app/immutable/chunks/BnqH7p3U.js.br +0 -0
  328. package/build/client/_app/immutable/chunks/BnqH7p3U.js.gz +0 -0
  329. package/build/client/_app/immutable/chunks/Bog028VR.js +0 -1
  330. package/build/client/_app/immutable/chunks/Bog028VR.js.br +0 -0
  331. package/build/client/_app/immutable/chunks/Bog028VR.js.gz +0 -0
  332. package/build/client/_app/immutable/chunks/Bv1mNXs0.js.br +0 -0
  333. package/build/client/_app/immutable/chunks/Bv1mNXs0.js.gz +0 -0
  334. package/build/client/_app/immutable/chunks/BvjXTrOz.js +0 -1
  335. package/build/client/_app/immutable/chunks/BvjXTrOz.js.br +0 -0
  336. package/build/client/_app/immutable/chunks/BvjXTrOz.js.gz +0 -0
  337. package/build/client/_app/immutable/chunks/C1R-s4aD.js +0 -1
  338. package/build/client/_app/immutable/chunks/C1R-s4aD.js.br +0 -0
  339. package/build/client/_app/immutable/chunks/C1R-s4aD.js.gz +0 -0
  340. package/build/client/_app/immutable/chunks/CC1OcqhR.js +0 -1
  341. package/build/client/_app/immutable/chunks/CC1OcqhR.js.br +0 -0
  342. package/build/client/_app/immutable/chunks/CC1OcqhR.js.gz +0 -0
  343. package/build/client/_app/immutable/chunks/CEHsomMo.js.br +0 -0
  344. package/build/client/_app/immutable/chunks/CJcZ2GVC.js.br +0 -0
  345. package/build/client/_app/immutable/chunks/CJcZ2GVC.js.gz +0 -0
  346. package/build/client/_app/immutable/chunks/CN555stc.js +0 -2
  347. package/build/client/_app/immutable/chunks/CN555stc.js.br +0 -0
  348. package/build/client/_app/immutable/chunks/CN555stc.js.gz +0 -0
  349. package/build/client/_app/immutable/chunks/CQg2Mme0.js +0 -9
  350. package/build/client/_app/immutable/chunks/CQg2Mme0.js.br +0 -0
  351. package/build/client/_app/immutable/chunks/CQg2Mme0.js.gz +0 -0
  352. package/build/client/_app/immutable/chunks/Cp_st-64.js.br +0 -0
  353. package/build/client/_app/immutable/chunks/Cp_st-64.js.gz +0 -0
  354. package/build/client/_app/immutable/chunks/D8mA-uZ4.js.br +0 -0
  355. package/build/client/_app/immutable/chunks/D8mA-uZ4.js.gz +0 -0
  356. package/build/client/_app/immutable/chunks/DCXjBDmY.js.br +0 -0
  357. package/build/client/_app/immutable/chunks/DCXjBDmY.js.gz +0 -0
  358. package/build/client/_app/immutable/chunks/DSLyVE1P.js +0 -1
  359. package/build/client/_app/immutable/chunks/DSLyVE1P.js.br +0 -0
  360. package/build/client/_app/immutable/chunks/DSLyVE1P.js.gz +0 -0
  361. package/build/client/_app/immutable/chunks/Ddv5LgEc.js.br +0 -0
  362. package/build/client/_app/immutable/chunks/Ddv5LgEc.js.gz +0 -0
  363. package/build/client/_app/immutable/chunks/DfcDjAv-.js.br +0 -0
  364. package/build/client/_app/immutable/chunks/DfcDjAv-.js.gz +0 -0
  365. package/build/client/_app/immutable/chunks/Dg0A8wPA.js +0 -1
  366. package/build/client/_app/immutable/chunks/Dg0A8wPA.js.br +0 -0
  367. package/build/client/_app/immutable/chunks/Dg0A8wPA.js.gz +0 -0
  368. package/build/client/_app/immutable/chunks/Dm49pcMm.js.br +0 -0
  369. package/build/client/_app/immutable/chunks/Dm49pcMm.js.gz +0 -0
  370. package/build/client/_app/immutable/chunks/DneQQ7D5.js.br +0 -0
  371. package/build/client/_app/immutable/chunks/DneQQ7D5.js.gz +0 -0
  372. package/build/client/_app/immutable/chunks/DoD3q5w5.js.br +0 -0
  373. package/build/client/_app/immutable/chunks/DoD3q5w5.js.gz +0 -0
  374. package/build/client/_app/immutable/chunks/DtXXy94i.js.br +0 -0
  375. package/build/client/_app/immutable/chunks/DtXXy94i.js.gz +0 -0
  376. package/build/client/_app/immutable/chunks/Dy2CFyD6.js.br +0 -0
  377. package/build/client/_app/immutable/chunks/Dy2CFyD6.js.gz +0 -0
  378. package/build/client/_app/immutable/chunks/DyBwTDJp.js.br +0 -0
  379. package/build/client/_app/immutable/chunks/DyBwTDJp.js.gz +0 -0
  380. package/build/client/_app/immutable/chunks/ILTCveYH.js +0 -1
  381. package/build/client/_app/immutable/chunks/ILTCveYH.js.br +0 -0
  382. package/build/client/_app/immutable/chunks/ILTCveYH.js.gz +0 -0
  383. package/build/client/_app/immutable/chunks/JcG4w2gF.js.br +0 -0
  384. package/build/client/_app/immutable/chunks/JcG4w2gF.js.gz +0 -0
  385. package/build/client/_app/immutable/chunks/UqjCSZmA.js.br +0 -0
  386. package/build/client/_app/immutable/chunks/UqjCSZmA.js.gz +0 -0
  387. package/build/client/_app/immutable/chunks/_YcrHZ6P.js +0 -1
  388. package/build/client/_app/immutable/chunks/_YcrHZ6P.js.br +0 -2
  389. package/build/client/_app/immutable/chunks/_YcrHZ6P.js.gz +0 -0
  390. package/build/client/_app/immutable/chunks/i6ygh6h8.js +0 -1
  391. package/build/client/_app/immutable/chunks/i6ygh6h8.js.br +0 -2
  392. package/build/client/_app/immutable/chunks/i6ygh6h8.js.gz +0 -0
  393. package/build/client/_app/immutable/chunks/oRi68ch3.js +0 -1
  394. package/build/client/_app/immutable/chunks/oRi68ch3.js.br +0 -0
  395. package/build/client/_app/immutable/chunks/oRi68ch3.js.gz +0 -0
  396. package/build/client/_app/immutable/chunks/pPpIn6tB.js.br +0 -0
  397. package/build/client/_app/immutable/chunks/pPpIn6tB.js.gz +0 -0
  398. package/build/client/_app/immutable/chunks/r0sHOWrM.js.br +0 -0
  399. package/build/client/_app/immutable/chunks/r0sHOWrM.js.gz +0 -0
  400. package/build/client/_app/immutable/chunks/wcTQUnZO.js.br +0 -0
  401. package/build/client/_app/immutable/chunks/wcTQUnZO.js.gz +0 -0
  402. package/build/client/_app/immutable/entry/app.DdO0gkPg.js +0 -2
  403. package/build/client/_app/immutable/entry/app.DdO0gkPg.js.br +0 -0
  404. package/build/client/_app/immutable/entry/app.DdO0gkPg.js.gz +0 -0
  405. package/build/client/_app/immutable/entry/start.eAjDq0c9.js +0 -1
  406. package/build/client/_app/immutable/entry/start.eAjDq0c9.js.br +0 -2
  407. package/build/client/_app/immutable/entry/start.eAjDq0c9.js.gz +0 -0
  408. package/build/client/_app/immutable/nodes/0.nG3DdvIX.js.br +0 -0
  409. package/build/client/_app/immutable/nodes/0.nG3DdvIX.js.gz +0 -0
  410. package/build/client/_app/immutable/nodes/1.Ceu0XS6v.js +0 -1
  411. package/build/client/_app/immutable/nodes/1.Ceu0XS6v.js.br +0 -0
  412. package/build/client/_app/immutable/nodes/1.Ceu0XS6v.js.gz +0 -0
  413. package/build/client/_app/immutable/nodes/10.dm2dgy31.js +0 -13
  414. package/build/client/_app/immutable/nodes/10.dm2dgy31.js.br +0 -0
  415. package/build/client/_app/immutable/nodes/10.dm2dgy31.js.gz +0 -0
  416. package/build/client/_app/immutable/nodes/15.D2I0y3ys.js.br +0 -0
  417. package/build/client/_app/immutable/nodes/15.D2I0y3ys.js.gz +0 -0
  418. package/build/client/_app/immutable/nodes/17.CKxGp0E7.js +0 -3
  419. package/build/client/_app/immutable/nodes/17.CKxGp0E7.js.br +0 -0
  420. package/build/client/_app/immutable/nodes/17.CKxGp0E7.js.gz +0 -0
  421. package/build/client/_app/immutable/nodes/18.DHJxyQpw.js +0 -11
  422. package/build/client/_app/immutable/nodes/18.DHJxyQpw.js.br +0 -0
  423. package/build/client/_app/immutable/nodes/18.DHJxyQpw.js.gz +0 -0
  424. package/build/client/_app/immutable/nodes/2.DesR2keg.js +0 -35
  425. package/build/client/_app/immutable/nodes/2.DesR2keg.js.br +0 -0
  426. package/build/client/_app/immutable/nodes/2.DesR2keg.js.gz +0 -0
  427. package/build/client/_app/immutable/nodes/3.BUKrXGR_.js +0 -1
  428. package/build/client/_app/immutable/nodes/3.BUKrXGR_.js.br +0 -0
  429. package/build/client/_app/immutable/nodes/3.BUKrXGR_.js.gz +0 -0
  430. package/build/client/_app/immutable/nodes/4.C8VxVbVn.js.br +0 -0
  431. package/build/client/_app/immutable/nodes/4.C8VxVbVn.js.gz +0 -0
  432. package/build/client/_app/immutable/nodes/5.BjrnKYaA.js.br +0 -0
  433. package/build/client/_app/immutable/nodes/5.BjrnKYaA.js.gz +0 -0
  434. package/build/client/_app/immutable/nodes/6.C_hEzPrU.js.br +0 -0
  435. package/build/client/_app/immutable/nodes/6.C_hEzPrU.js.gz +0 -0
  436. package/build/client/_app/immutable/nodes/8.BTYaOiDC.js +0 -2
  437. package/build/client/_app/immutable/nodes/8.BTYaOiDC.js.br +0 -0
  438. package/build/client/_app/immutable/nodes/8.BTYaOiDC.js.gz +0 -0
  439. package/build/client/_app/immutable/nodes/9.DVspuDYY.js.br +0 -0
  440. package/build/client/_app/immutable/nodes/9.DVspuDYY.js.gz +0 -0
  441. package/build/server/chunks/0-D_duQDWy.js +0 -9
  442. package/build/server/chunks/0-D_duQDWy.js.map +0 -1
  443. package/build/server/chunks/1-C0HdTvXW.js +0 -9
  444. package/build/server/chunks/10-DcfhCR4R.js +0 -9
  445. package/build/server/chunks/10-DcfhCR4R.js.map +0 -1
  446. package/build/server/chunks/15-BQcb9C_y.js +0 -9
  447. package/build/server/chunks/17-DuVCTioj.js +0 -9
  448. package/build/server/chunks/17-DuVCTioj.js.map +0 -1
  449. package/build/server/chunks/18-CT0VFW_p.js +0 -9
  450. package/build/server/chunks/18-CT0VFW_p.js.map +0 -1
  451. package/build/server/chunks/2-DgTzKQAP.js +0 -9
  452. package/build/server/chunks/2-DgTzKQAP.js.map +0 -1
  453. package/build/server/chunks/3-eQMSMzXP.js +0 -9
  454. package/build/server/chunks/3-eQMSMzXP.js.map +0 -1
  455. package/build/server/chunks/4-OaAJtDqP.js +0 -9
  456. package/build/server/chunks/4-OaAJtDqP.js.map +0 -1
  457. package/build/server/chunks/5-CBdMutbv.js +0 -9
  458. package/build/server/chunks/6-FoEi7ggm.js +0 -9
  459. package/build/server/chunks/8-B44yRkfX.js +0 -9
  460. package/build/server/chunks/8-B44yRkfX.js.map +0 -1
  461. package/build/server/chunks/9-eUjFpHzI.js +0 -9
  462. package/build/server/chunks/9-eUjFpHzI.js.map +0 -1
  463. package/build/server/chunks/ChatStepTrace-BivoNYOY.js.map +0 -1
  464. package/build/server/chunks/Dropdown-DnARl86Q.js.map +0 -1
  465. package/build/server/chunks/Tab-CUkyLqbN.js.map +0 -1
  466. package/build/server/chunks/_layout.svelte-B88WMyk0.js.map +0 -1
  467. package/build/server/chunks/_layout.svelte-wi6o5Ecu.js.map +0 -1
  468. package/build/server/chunks/_page.svelte-57pyhszV.js.map +0 -1
  469. package/build/server/chunks/_page.svelte-BSVJ2d2G.js.map +0 -1
  470. package/build/server/chunks/_page.svelte-CeS_21Ho.js.map +0 -1
  471. package/build/server/chunks/_page.svelte-DhFNFMnl.js.map +0 -1
  472. package/build/server/chunks/error.svelte-DmKKN1RU.js +0 -15
  473. package/build/server/chunks/index-LMsd1ih2.js.map +0 -1
  474. package/build/server/chunks/index-server-BRr5mZEq.js.map +0 -1
  475. package/build/server/chunks/log-content.svelte-CfQzj-v_.js +0 -20
  476. package/build/server/chunks/log-content.svelte-CfQzj-v_.js.map +0 -1
  477. package/build/server/chunks/root-4q2Pr7ck.js.map +0 -1
  478. package/build/server/chunks/source-selection-CcN1cgXc.js.map +0 -1
  479. /package/build/client/_app/immutable/assets/{ReadOnlyMonacoDiff.iiWNRlR-.css → Modal.iiWNRlR-.css} +0 -0
  480. /package/build/client/_app/immutable/assets/{ReadOnlyMonacoDiff.iiWNRlR-.css.br → Modal.iiWNRlR-.css.br} +0 -0
  481. /package/build/client/_app/immutable/assets/{ReadOnlyMonacoDiff.iiWNRlR-.css.gz → Modal.iiWNRlR-.css.gz} +0 -0
@@ -1,21 +1,22 @@
1
- import { w as head, p as ensure_array_like, k as escape_html, l as derived, o as attr_class, m as attr } from './index-LMsd1ih2.js';
2
- import { g as goto } from './client-DO-hqMbT.js';
3
- import { p as page } from './index2-ClgfzZ89.js';
4
- import { B as Button } from './Button-DH7gdU0s.js';
5
- import { I as Icon } from './Icon-DP1YKCRV.js';
6
- import { I as Input } from './Input-CUJ9Cg7b.js';
7
- import { p as persistTelescopeSourceId, T as TelescopeClient } from './source-selection-CcN1cgXc.js';
8
- import { T as Tabs, a as Tab } from './Tab-CUkyLqbN.js';
9
- import { A as AgentSidebar } from './AgentSidebar-BWBnqHnV.js';
10
- import { g as getAgentsContext } from './agents-context-CbFsZmi5.js';
1
+ import { x as head, p as ensure_array_like, k as escape_html, m as attr, o as attr_class, l as derived, w as bind_props } from './index-Do08hKbr.js';
2
+ import { g as goto } from './client-D1Y2ZQJN.js';
3
+ import { p as page } from './index2-B_Xf0ugP.js';
4
+ import { B as Button } from './Button-Huqrc2wY.js';
5
+ import { I as Icon } from './Icon-BJfQMgGu.js';
6
+ import { I as Input } from './Input-D-uxKbuX.js';
7
+ import { p as persistTelescopeSourceId, T as TelescopeClient, a as TELESCOPE_SOURCE_QUERY_PARAM } from './source-selection-1aBuBpkL.js';
8
+ import { T as Tabs, a as Tab } from './Tab-tFWS4zzn.js';
9
+ import { A as AgentSidebar } from './AgentSidebar-BqqgUCT2.js';
10
+ import { g as getAgentsContext } from './agents-context-BdX2j9DI.js';
11
11
  import './trpc-client-D8L6vWf4.js';
12
- import './state.svelte-Bd1i-u49.js';
13
- import './root-4q2Pr7ck.js';
14
- import './index3-BdRUAffj.js';
12
+ import { M as Modal } from './Modal-B_fVcSLK.js';
13
+ import './state.svelte-B2OaeWMp.js';
14
+ import './root-DoSdrdfw.js';
15
+ import './index3-C9gC86lU.js';
15
16
  import 'zod';
16
- import './index-server-BRr5mZEq.js';
17
17
  import './shared-server-DaWdgxVh.js';
18
18
  import '@trpc/client';
19
+ import './index-server-CHFC9Apw.js';
19
20
 
20
21
  class MockGenerator {
21
22
  poolSize = 120;
@@ -131,6 +132,168 @@ function mulberry32(seed) {
131
132
  };
132
133
  }
133
134
  const mockGenerator = new MockGenerator();
135
+ function AnalyticsFilterDialog($$renderer, $$props) {
136
+ $$renderer.component(($$renderer2) => {
137
+ let { open = false, fields, onAdd } = $$props;
138
+ let fieldKey = "";
139
+ let selectedValues = [];
140
+ let freeformValue = "";
141
+ const selectedField = derived(() => fields.find((field) => field.key === fieldKey));
142
+ const usesFreeform = derived(() => (selectedField()?.variantCount ?? 0) > 50);
143
+ const parsedFreeformValue = derived(() => {
144
+ const field = selectedField();
145
+ const value = String(freeformValue).trim();
146
+ if (!field || !value) return void 0;
147
+ if (field.type === "number") {
148
+ const number = Number(value);
149
+ return Number.isFinite(number) ? number : void 0;
150
+ }
151
+ if (field.type === "boolean") {
152
+ if (value.toLowerCase() === "true") return true;
153
+ if (value.toLowerCase() === "false") return false;
154
+ return void 0;
155
+ }
156
+ return value;
157
+ });
158
+ const canAdd = derived(() => !!selectedField() && (usesFreeform() ? parsedFreeformValue() !== void 0 : selectedValues.length > 0));
159
+ function selectField(event) {
160
+ fieldKey = event.currentTarget.value;
161
+ selectedValues = [];
162
+ freeformValue = "";
163
+ }
164
+ function sameValue(left, right) {
165
+ return typeof left === typeof right && left === right;
166
+ }
167
+ function isSelected(value) {
168
+ return selectedValues.some((selected) => sameValue(selected, value));
169
+ }
170
+ function formatValue(value) {
171
+ if (typeof value === "boolean") return value ? "Yes" : "No";
172
+ return String(value);
173
+ }
174
+ function addFilter() {
175
+ const field = selectedField();
176
+ if (!field || !canAdd()) return;
177
+ onAdd({
178
+ key: field.key,
179
+ type: field.type,
180
+ values: usesFreeform() ? [parsedFreeformValue()] : selectedValues
181
+ });
182
+ open = false;
183
+ }
184
+ let $$settled = true;
185
+ let $$inner_renderer;
186
+ function $$render_inner($$renderer3) {
187
+ {
188
+ let children = function($$renderer4) {
189
+ $$renderer4.push(`<div class="flex flex-col gap-4">`);
190
+ if (fields.length === 0) {
191
+ $$renderer4.push("<!--[0-->");
192
+ $$renderer4.push(`<p class="text-sm text-rc-gray-200">There are no more analytics fields to filter.</p>`);
193
+ } else {
194
+ $$renderer4.push("<!--[-1-->");
195
+ $$renderer4.push(`<label class="flex flex-col gap-1.5 text-sm text-rc-gray-200"><span>Field</span> `);
196
+ $$renderer4.select(
197
+ {
198
+ class: "rounded-lg border border-rc-gray-500 bg-rc-gray-900 px-3 py-2 text-rc-gray-100 focus:border-rc-gray-400 focus:outline-none focus:ring-0",
199
+ value: fieldKey,
200
+ onchange: selectField
201
+ },
202
+ ($$renderer5) => {
203
+ $$renderer5.push(`<!--[-->`);
204
+ const each_array = ensure_array_like(fields);
205
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
206
+ let field = each_array[$$index];
207
+ $$renderer5.option({ value: field.key }, ($$renderer6) => {
208
+ $$renderer6.push(`${escape_html(field.key)}`);
209
+ });
210
+ }
211
+ $$renderer5.push(`<!--]-->`);
212
+ }
213
+ );
214
+ $$renderer4.push(`</label> `);
215
+ if (selectedField()) {
216
+ $$renderer4.push("<!--[0-->");
217
+ if (usesFreeform()) {
218
+ $$renderer4.push("<!--[0-->");
219
+ $$renderer4.push(`<label class="flex flex-col gap-1.5 text-sm text-rc-gray-200"><span>Value</span> `);
220
+ Input($$renderer4, {
221
+ type: selectedField().type === "number" ? "number" : "text",
222
+ class: "w-full !border-rc-gray-500 !bg-rc-gray-900 !py-2",
223
+ onkeydown: (event) => {
224
+ if (event.key === "Enter" && canAdd()) addFilter();
225
+ },
226
+ get value() {
227
+ return freeformValue;
228
+ },
229
+ set value($$value) {
230
+ freeformValue = $$value;
231
+ $$settled = false;
232
+ }
233
+ });
234
+ $$renderer4.push(`<!----> <span class="text-xs text-rc-gray-400">This field has ${escape_html(selectedField().variantCount)} distinct values.</span></label>`);
235
+ } else {
236
+ $$renderer4.push("<!--[-1-->");
237
+ $$renderer4.push(`<fieldset class="flex flex-col gap-1.5"><legend class="mb-1 text-sm text-rc-gray-200">Values</legend> <div class="rc-scroll max-h-72 overflow-y-auto rounded-lg border border-rc-gray-600 bg-rc-gray-900 p-1"><!--[-->`);
238
+ const each_array_1 = ensure_array_like(selectedField().values);
239
+ for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
240
+ let item = each_array_1[$$index_1];
241
+ $$renderer4.push(`<label class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm text-rc-gray-100 hover:bg-rc-gray-700"><input type="checkbox"${attr("checked", isSelected(item.value), true)}/> <span class="min-w-0 flex-1 break-words">${escape_html(formatValue(item.value))}</span> <span class="ml-auto text-[calc(0.875rem-1pt)] tabular-nums text-rc-gray-400">${escape_html(item.count)}</span></label>`);
242
+ }
243
+ $$renderer4.push(`<!--]--></div></fieldset>`);
244
+ }
245
+ $$renderer4.push(`<!--]-->`);
246
+ } else {
247
+ $$renderer4.push("<!--[-1-->");
248
+ }
249
+ $$renderer4.push(`<!--]-->`);
250
+ }
251
+ $$renderer4.push(`<!--]--></div>`);
252
+ }, footer = function($$renderer4) {
253
+ Button($$renderer4, {
254
+ variant: "secondary",
255
+ onclick: () => open = false,
256
+ children: ($$renderer5) => {
257
+ $$renderer5.push(`<!---->Cancel`);
258
+ },
259
+ $$slots: { default: true }
260
+ });
261
+ $$renderer4.push(`<!----> `);
262
+ Button($$renderer4, {
263
+ onclick: addFilter,
264
+ disabled: !canAdd(),
265
+ children: ($$renderer5) => {
266
+ $$renderer5.push(`<!---->Add filter`);
267
+ },
268
+ $$slots: { default: true }
269
+ });
270
+ $$renderer4.push(`<!---->`);
271
+ };
272
+ Modal($$renderer3, {
273
+ title: "Add analytics filter",
274
+ class: "!max-w-lg",
275
+ get open() {
276
+ return open;
277
+ },
278
+ set open($$value) {
279
+ open = $$value;
280
+ $$settled = false;
281
+ },
282
+ children,
283
+ footer,
284
+ $$slots: { default: true, footer: true }
285
+ });
286
+ }
287
+ }
288
+ do {
289
+ $$settled = true;
290
+ $$inner_renderer = $$renderer2.copy();
291
+ $$render_inner($$inner_renderer);
292
+ } while (!$$settled);
293
+ $$renderer2.subsume($$inner_renderer);
294
+ bind_props($$props, { open });
295
+ });
296
+ }
134
297
  function _layout($$renderer, $$props) {
135
298
  $$renderer.component(($$renderer2) => {
136
299
  const client = new TelescopeClient(fetch);
@@ -147,41 +310,69 @@ function _layout($$renderer, $$props) {
147
310
  let lastConversationId = null;
148
311
  let loading = false;
149
312
  let error = null;
150
- let totalLoaded = 0;
151
313
  let telescopeSources = [];
152
314
  let telescopeSourceId = "";
315
+ let analyticsFields = [];
316
+ let activeAnalyticsFilters = [];
317
+ let analyticsFieldsLoading = false;
318
+ let analyticsFieldsError = null;
319
+ let filterDialogOpen = false;
320
+ let conversationRequestId = 0;
321
+ let analyticsFieldsRequestId = 0;
322
+ const availableAnalyticsFields = derived(() => analyticsFields.filter((field) => !activeAnalyticsFilters.some((filter) => filter.key === field.key)));
323
+ let loadedConversationFilterKey = null;
324
+ const currentConversationFilterKey = derived(() => JSON.stringify([currentAgent(), telescopeSourceId, activeAnalyticsFilters]));
325
+ const currentConversations = derived(() => loadedConversationFilterKey === currentConversationFilterKey() ? conversations : void 0);
326
+ const totalLoaded = derived(() => currentConversations()?.items.length ?? 0);
153
327
  let { useMock = false, children } = $$props;
154
328
  const { onError } = getAgentsContext();
155
329
  function fmtDate(ms) {
156
330
  return new Date(ms).toLocaleString();
157
331
  }
158
332
  function fmtDuration(sec) {
159
- const mm = Math.floor(sec / 60);
160
- const ss = sec % 60;
333
+ const totalSeconds = Math.round(sec);
334
+ const mm = Math.floor(totalSeconds / 60);
335
+ const ss = totalSeconds % 60;
161
336
  return `${mm}:${String(ss).padStart(2, "0")}`;
162
337
  }
338
+ function resetSelectionData() {
339
+ conversationRequestId += 1;
340
+ analyticsFieldsRequestId += 1;
341
+ selectedConversation = null;
342
+ conversations = void 0;
343
+ loadedConversationFilterKey = null;
344
+ analyticsFields = [];
345
+ activeAnalyticsFilters = [];
346
+ cursorStack = [];
347
+ lastConversationId = null;
348
+ loading = true;
349
+ analyticsFieldsLoading = true;
350
+ analyticsFieldsError = null;
351
+ filterDialogOpen = false;
352
+ }
163
353
  function buildAgentSearch(agentId = currentAgent(), region = agentId === currentAgent() ? currentRegion() : "") {
164
354
  const params = new URLSearchParams();
165
355
  if (agentId) params.set("agent", agentId);
166
356
  if (agentId && region) params.set("region", region);
357
+ if (telescopeSourceId) params.set(TELESCOPE_SOURCE_QUERY_PARAM, telescopeSourceId);
167
358
  const search = params.toString();
168
359
  return search ? `?${search}` : "";
169
360
  }
170
361
  function buildConversationsUrl(agentId = currentAgent()) {
171
- return `${// Filter results client-side if phoneQuery exists
172
- // When user clicks Next: push current cursor to stack and advance
362
+ return `${// When user clicks Next: push current cursor to stack and advance
173
363
  // Prev: pop one cursor and request page starting before that cursor (or empty to go first)
174
364
  // Already on first page, do nothing
175
365
  // pop last cursor (we are currently after it)
176
366
  viewBase()}/conversations${buildAgentSearch(agentId)}`;
177
367
  }
178
- async function fetchConversationsFromApi(phoneNumber, limit = pageSize, lastConversationId2, agentId) {
368
+ async function fetchConversationsFromApi(phoneNumber, limit = pageSize, lastConversationId2, agentId, analyticsFilters = activeAnalyticsFilters) {
179
369
  if (useMock) {
180
370
  return mockGenerator.fetchConversations(limit, phoneNumber, lastConversationId2 ?? void 0);
181
371
  } else {
182
372
  return client.getConversations({
183
373
  phoneNumber,
184
374
  agentId,
375
+ analyticsFilters,
185
376
  limit: Number(limit),
186
377
  lastConversationId: lastConversationId2 ?? void 0
187
378
  });
@@ -197,36 +388,73 @@ function _layout($$renderer, $$props) {
197
388
  telescopeSourceId = next;
198
389
  persistTelescopeSourceId(next);
199
390
  client.setSourceId(next);
200
- selectedConversation = null;
391
+ resetSelectionData();
201
392
  await goto(buildConversationsUrl());
202
- await loadFirstPage();
393
+ await Promise.all([loadAnalyticsFields(), loadFirstPage()]);
203
394
  }
204
395
  async function loadPage() {
396
+ const requestId = ++conversationRequestId;
397
+ const requestedFilters = activeAnalyticsFilters.map((filter) => ({ ...filter, values: [...filter.values] }));
398
+ const requestAgent = currentAgent();
399
+ const requestFilterKey = JSON.stringify([requestAgent, telescopeSourceId, requestedFilters]);
205
400
  loading = true;
206
401
  error = null;
207
402
  try {
208
- const resp = await fetchConversationsFromApi(phoneQuery || void 0, pageSize, lastConversationId ?? void 0, currentAgent() || void 0);
209
- let filteredItems = Array.isArray(resp.items) ? resp.items.slice() : [];
210
- filteredItems = filteredItems.filter((c) => !!c?.phoneNumber);
403
+ const resp = await fetchConversationsFromApi(phoneQuery || void 0, pageSize, lastConversationId ?? void 0, requestAgent || void 0, requestedFilters);
404
+ if (requestId !== conversationRequestId || requestFilterKey !== currentConversationFilterKey()) return;
405
+ const items = Array.isArray(resp.items) ? resp.items.slice() : [];
211
406
  conversations = {
212
407
  limit: resp.limit,
213
- items: filteredItems,
408
+ items,
214
409
  lastConversationId: resp.lastConversationId
215
410
  };
216
- totalLoaded = filteredItems.length;
411
+ loadedConversationFilterKey = requestFilterKey;
217
412
  lastConversationId = resp.lastConversationId ?? null;
218
- loading = false;
219
413
  } catch (e) {
220
- loading = false;
221
- error = e.message || "Unknown error";
222
- onError(`Error loading conversations: ${error}`);
414
+ if (requestId !== conversationRequestId || requestFilterKey !== currentConversationFilterKey()) return;
415
+ error = "Conversations could not be loaded for this selection.";
416
+ onError(error);
223
417
  console.error("Load page error:", e);
418
+ } finally {
419
+ if (requestId === conversationRequestId) loading = false;
420
+ }
421
+ }
422
+ async function loadAnalyticsFields() {
423
+ const requestId = ++analyticsFieldsRequestId;
424
+ analyticsFieldsLoading = true;
425
+ analyticsFieldsError = null;
426
+ analyticsFields = [];
427
+ if (useMock) {
428
+ analyticsFieldsLoading = false;
429
+ return;
430
+ }
431
+ try {
432
+ const response = await client.getAnalyticsFields(currentAgent() || void 0);
433
+ if (requestId !== analyticsFieldsRequestId) return;
434
+ analyticsFields = response.items;
435
+ } catch (e) {
436
+ if (requestId !== analyticsFieldsRequestId) return;
437
+ analyticsFieldsError = "Filters are unavailable for this selection.";
438
+ console.error("Failed to load analytics fields:", e);
439
+ } finally {
440
+ if (requestId === analyticsFieldsRequestId) analyticsFieldsLoading = false;
224
441
  }
225
442
  }
443
+ function addAnalyticsFilter(filter) {
444
+ activeAnalyticsFilters = [...activeAnalyticsFilters, filter];
445
+ void loadFirstPage();
446
+ }
447
+ function formatAnalyticsValue(value) {
448
+ if (typeof value === "boolean") return value ? "Yes" : "No";
449
+ return String(value);
450
+ }
451
+ function formatAnalyticsFilter(filter) {
452
+ return `${filter.key}: ${filter.values.map(formatAnalyticsValue).join(", ")}`;
453
+ }
226
454
  async function onNext() {
227
- if (!conversations?.lastConversationId) return;
228
- cursorStack.push(conversations.lastConversationId);
229
- lastConversationId = conversations.lastConversationId;
455
+ if (!currentConversations()?.lastConversationId) return;
456
+ cursorStack.push(currentConversations().lastConversationId);
457
+ lastConversationId = currentConversations().lastConversationId;
230
458
  await loadPage();
231
459
  }
232
460
  async function onPrev() {
@@ -239,8 +467,8 @@ function _layout($$renderer, $$props) {
239
467
  }
240
468
  function toggleSort() {
241
469
  sortDesc = !sortDesc;
242
- if (conversations?.items) {
243
- conversations.items.sort((a, b) => sortDesc ? b.createdAt - a.createdAt : a.createdAt - b.createdAt);
470
+ if (currentConversations()?.items) {
471
+ currentConversations().items.sort((a, b) => sortDesc ? b.createdAt - a.createdAt : a.createdAt - b.createdAt);
244
472
  }
245
473
  }
246
474
  function onPageSizeChange(e) {
@@ -271,13 +499,13 @@ function _layout($$renderer, $$props) {
271
499
  async function handleAgentClick(agentId, event) {
272
500
  event?.stopPropagation();
273
501
  if (agentId === currentAgent()) return;
274
- selectedConversation = null;
502
+ resetSelectionData();
275
503
  await goto(buildConversationsUrl(agentId));
276
504
  }
277
505
  async function handleAllAgentsClick(event) {
278
506
  event?.stopPropagation();
279
507
  if (!currentAgent()) return;
280
- selectedConversation = null;
508
+ resetSelectionData();
281
509
  await goto(buildConversationsUrl(""));
282
510
  }
283
511
  let $$settled = true;
@@ -388,6 +616,25 @@ function _layout($$renderer, $$props) {
388
616
  },
389
617
  $$slots: { default: true }
390
618
  });
619
+ $$renderer3.push(`<!----> <!--[-->`);
620
+ const each_array_1 = ensure_array_like(activeAnalyticsFilters);
621
+ for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
622
+ let filter = each_array_1[$$index_1];
623
+ $$renderer3.push(`<div class="flex max-w-80 items-center gap-1 rounded-lg border border-rc-gray-500 bg-rc-gray-700 py-1 pl-3 pr-1 text-sm text-rc-gray-100"${attr("title", formatAnalyticsFilter(filter))}><span class="truncate">${escape_html(formatAnalyticsFilter(filter))}</span> <button type="button" class="flex-none rounded p-1 text-rc-gray-300 hover:bg-rc-gray-600 hover:text-rc-gray-100"${attr("aria-label", `Remove ${filter.key} filter`)}>`);
624
+ Icon($$renderer3, { name: "close", width: 16, height: 16 });
625
+ $$renderer3.push(`<!----></button></div>`);
626
+ }
627
+ $$renderer3.push(`<!--]--> `);
628
+ Button($$renderer3, {
629
+ variant: "secondary",
630
+ disabled: analyticsFieldsLoading || availableAnalyticsFields().length === 0,
631
+ title: analyticsFieldsError ?? "Add analytics filter",
632
+ onclick: () => filterDialogOpen = true,
633
+ children: ($$renderer4) => {
634
+ $$renderer4.push(`<!---->Add filter`);
635
+ },
636
+ $$slots: { default: true }
637
+ });
391
638
  $$renderer3.push(`<!----></div></label></div> <div class="hidden items-center gap-2"><div class="text-rc-gray-200">Sort:</div> `);
392
639
  Button($$renderer3, {
393
640
  onclick: toggleSort,
@@ -430,25 +677,25 @@ function _layout($$renderer, $$props) {
430
677
  $$renderer3.push(`<!----> `);
431
678
  Button($$renderer3, {
432
679
  onclick: onNext,
433
- disabled: !conversations?.items.length,
680
+ disabled: !currentConversations()?.items.length,
434
681
  children: ($$renderer4) => {
435
682
  $$renderer4.push(`<!---->Next`);
436
683
  },
437
684
  $$slots: { default: true }
438
685
  });
439
- $$renderer3.push(`<!----> <div class="text-sm text-rc-gray-200">Items: ${escape_html(totalLoaded)}</div></div></div> <div class="ml-auto whitespace-nowrap text-sm"><span class="text-gray-400">API Mode:</span> <span class="font-semibold text-rc-green-200">${escape_html(useMock ? "Mock (local)" : "Live")}</span></div></div></nav> <main class="flex flex-1 overflow-hidden"><div class="flex h-full w-1/3 flex-col"><div class="flex-none border-b border-rc-gray-300/40 p-4"><h2 class="text-lg font-semibold text-rc-gray-100">Conversations</h2></div> <div class="rc-scroll min-h-0 flex-1 overflow-scroll px-3 py-4">`);
686
+ $$renderer3.push(`<!----> <div class="text-sm text-rc-gray-200">Items: ${escape_html(totalLoaded())}</div></div></div> <div class="ml-auto whitespace-nowrap text-sm"><span class="text-gray-400">API Mode:</span> <span class="font-semibold text-rc-green-200">${escape_html(useMock ? "Mock (local)" : "Live")}</span></div></div></nav> <main class="flex flex-1 overflow-hidden"><div class="flex h-full w-1/3 flex-col"><div class="flex-none border-b border-rc-gray-300/40 p-4"><h2 class="text-lg font-semibold text-rc-gray-100">Conversations</h2></div> <div class="rc-scroll min-h-0 flex-1 overflow-scroll px-3 py-4">`);
440
687
  if (loading) {
441
688
  $$renderer3.push("<!--[0-->");
442
689
  $$renderer3.push(`<p class="py-8 text-center text-rc-gray-200">Loading...</p>`);
443
- } else if (!conversations?.items?.length) {
690
+ } else if (!currentConversations()?.items?.length) {
444
691
  $$renderer3.push("<!--[1-->");
445
692
  $$renderer3.push(`<p class="py-8 text-center text-rc-gray-300">No conversations found</p>`);
446
693
  } else {
447
694
  $$renderer3.push("<!--[-1-->");
448
695
  $$renderer3.push(`<ul class="space-y-2"><!--[-->`);
449
- const each_array_1 = ensure_array_like(conversations.items);
450
- for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
451
- let conversation = each_array_1[$$index_1];
696
+ const each_array_2 = ensure_array_like(currentConversations().items);
697
+ for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
698
+ let conversation = each_array_2[$$index_2];
452
699
  $$renderer3.push(`<li${attr_class(
453
700
  `cursor-pointer rounded-lg p-3 transition-colors ${(page.params.conversationId ? conversation.conversationId === page.params.conversationId : conversation.conversationId === selectedConversation?.conversationId) ? "bg-rc-gray-600" : "bg-rc-gray-700 hover:bg-rc-gray-650"}`,
454
701
  "svelte-1uk1thp"
@@ -465,7 +712,19 @@ function _layout($$renderer, $$props) {
465
712
  }
466
713
  $$renderer3.push(`<!--]--></div></div> <div class="flex h-full w-2/3 flex-col bg-rc-gray-980">`);
467
714
  children($$renderer3);
468
- $$renderer3.push(`<!----></div></main></div></div>`);
715
+ $$renderer3.push(`<!----></div></main></div></div> `);
716
+ AnalyticsFilterDialog($$renderer3, {
717
+ fields: availableAnalyticsFields(),
718
+ onAdd: addAnalyticsFilter,
719
+ get open() {
720
+ return filterDialogOpen;
721
+ },
722
+ set open($$value) {
723
+ filterDialogOpen = $$value;
724
+ $$settled = false;
725
+ }
726
+ });
727
+ $$renderer3.push(`<!---->`);
469
728
  }
470
729
  do {
471
730
  $$settled = true;
@@ -477,4 +736,4 @@ function _layout($$renderer, $$props) {
477
736
  }
478
737
 
479
738
  export { _layout as default };
480
- //# sourceMappingURL=_layout.svelte-wi6o5Ecu.js.map
739
+ //# sourceMappingURL=_layout.svelte-DPP4TE7p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_layout.svelte-DPP4TE7p.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/traces/conversations/_layout.svelte.js"],"sourcesContent":["import { j as bind_props, a as ensure_array_like, e as escape_html, d as attr, f as derived, h as head, b as attr_class } from \"../../../../chunks/index.js\";\nimport { g as goto } from \"../../../../chunks/client.js\";\nimport { p as page } from \"../../../../chunks/index2.js\";\nimport { B as Button } from \"../../../../chunks/Button.js\";\nimport { I as Icon } from \"../../../../chunks/Icon.js\";\nimport { I as Input } from \"../../../../chunks/Input.js\";\nimport { p as persistTelescopeSourceId, T as TelescopeClient, a as TELESCOPE_SOURCE_QUERY_PARAM } from \"../../../../chunks/source-selection.js\";\nimport { T as Tabs, a as Tab } from \"../../../../chunks/Tab.js\";\nimport { A as AgentSidebar } from \"../../../../chunks/AgentSidebar.js\";\nimport { g as getAgentsContext } from \"../../../../chunks/agents-context.js\";\nimport \"../../../../chunks/trpc-client.js\";\nimport { M as Modal } from \"../../../../chunks/Modal.js\";\nclass MockGenerator {\n poolSize = 120;\n // ----- CONVERSATIONS -----\n async fetchConversations(limit, phoneFilter, lastConversationId) {\n await delay(150);\n return this.generateConversations(limit, phoneFilter, lastConversationId);\n }\n generateConversations(limit, phoneFilter, lastConversationId) {\n const now = Date.now();\n const items = [];\n for (let i = 0; i < this.poolSize; i++) {\n const id = String(1e5 + i);\n items.push({\n conversationId: id,\n medium: i % 2 === 0 ? \"phone\" : \"whatsapp\",\n phoneNumber: `+44 7700 ${String(1e3 + i % 90).padStart(4, \"0\")}`,\n duration: Math.floor(Math.random() * 600),\n createdAt: now - i * 36e5\n });\n }\n let filtered = items;\n if (phoneFilter) {\n const q = phoneFilter.replace(/\\s+/g, \"\");\n filtered = items.filter((it) => it.phoneNumber?.replace(/\\s+/g, \"\").includes(q));\n }\n filtered.sort((a, b) => b.createdAt - a.createdAt);\n if (lastConversationId) {\n const idx = filtered.findIndex((it) => it.conversationId === lastConversationId);\n if (idx >= 0) filtered = filtered.slice(idx + 1);\n }\n const pageItems = filtered.slice(0, limit);\n const nextLastConversationId = pageItems.length ? pageItems[pageItems.length - 1].conversationId : void 0;\n return { limit, items: pageItems, lastConversationId: nextLastConversationId };\n }\n // ----- MIXED TRACES -----\n async fetchTraces(conversationId) {\n await delay(150);\n return { items: this.generateTraces(conversationId) };\n }\n generateTraces(conversationId) {\n const rng = mulberry32(hashString(conversationId));\n const count = Math.floor(rng() * 5) + 3;\n const now = Date.now();\n const traces = Array.from({ length: count }, (_, i) => {\n const ts = now - (count - i) * 3e4;\n const kind = i % 3;\n if (kind === 0) {\n return {\n traceType: \"CONVERSATIONAL\",\n traceId: `conv-${conversationId}-${i}`,\n conversationId,\n eventName: \"received-message\",\n role: \"user\",\n medium: \"phone\",\n content: `Hello (${i})`,\n createdAt: ts\n };\n }\n if (kind === 1) {\n return {\n traceType: \"API_CALL\",\n traceId: `api-${conversationId}-${i}`,\n conversationId,\n operationName: \"getBooking\",\n method: \"GET\",\n path: `/bookings/${conversationId}`,\n createdAt: ts,\n durationMs: Math.floor(rng() * 200) + 50,\n status: 200,\n ok: true\n };\n }\n return {\n traceType: \"STEP\",\n traceId: `step-${conversationId}-${i}`,\n conversationId,\n scopeId: `scope-${i}`,\n workflowId: `workflow-${i}`,\n workflowRunId: `run-${conversationId}-${i}`,\n name: `main`,\n renderedPrompt: `Rendered prompt for ${conversationId}/${i}`,\n receivedContext: { foo: \"bar\" },\n receivedPrompt: `User says #${i}`,\n createdAt: ts,\n stringifiedConversation: `user: hi\nagent: ok (${i})`,\n response: `response ${i}`,\n model: \"gpt-4\"\n };\n });\n traces.sort((a, b) => a.createdAt - b.createdAt);\n return traces;\n }\n}\nfunction delay(ms) {\n return new Promise((r) => setTimeout(r, ms));\n}\nfunction hashString(s) {\n let h = 1779033703 ^ s.length;\n for (let i = 0; i < s.length; i++) {\n h = Math.imul(h ^ s.charCodeAt(i), 3432918353);\n h = h << 13 | h >>> 19;\n }\n return h >>> 0;\n}\nfunction mulberry32(seed) {\n return function() {\n let t = seed += 1831565813;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n };\n}\nconst mockGenerator = new MockGenerator();\nfunction AnalyticsFilterDialog($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { open = false, fields, onAdd } = $$props;\n let fieldKey = \"\";\n let selectedValues = [];\n let freeformValue = \"\";\n const selectedField = derived(() => fields.find((field) => field.key === fieldKey));\n const usesFreeform = derived(() => (selectedField()?.variantCount ?? 0) > 50);\n const parsedFreeformValue = derived(() => {\n const field = selectedField();\n const value = String(freeformValue).trim();\n if (!field || !value) return void 0;\n if (field.type === \"number\") {\n const number = Number(value);\n return Number.isFinite(number) ? number : void 0;\n }\n if (field.type === \"boolean\") {\n if (value.toLowerCase() === \"true\") return true;\n if (value.toLowerCase() === \"false\") return false;\n return void 0;\n }\n return value;\n });\n const canAdd = derived(() => !!selectedField() && (usesFreeform() ? parsedFreeformValue() !== void 0 : selectedValues.length > 0));\n function selectField(event) {\n fieldKey = event.currentTarget.value;\n selectedValues = [];\n freeformValue = \"\";\n }\n function sameValue(left, right) {\n return typeof left === typeof right && left === right;\n }\n function isSelected(value) {\n return selectedValues.some((selected) => sameValue(selected, value));\n }\n function formatValue(value) {\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n return String(value);\n }\n function addFilter() {\n const field = selectedField();\n if (!field || !canAdd()) return;\n onAdd({\n key: field.key,\n type: field.type,\n values: usesFreeform() ? [parsedFreeformValue()] : selectedValues\n });\n open = false;\n }\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n {\n let children = function($$renderer4) {\n $$renderer4.push(`<div class=\"flex flex-col gap-4\">`);\n if (fields.length === 0) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<p class=\"text-sm text-rc-gray-200\">There are no more analytics fields to filter.</p>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n $$renderer4.push(`<label class=\"flex flex-col gap-1.5 text-sm text-rc-gray-200\"><span>Field</span> `);\n $$renderer4.select(\n {\n class: \"rounded-lg border border-rc-gray-500 bg-rc-gray-900 px-3 py-2 text-rc-gray-100 focus:border-rc-gray-400 focus:outline-none focus:ring-0\",\n value: fieldKey,\n onchange: selectField\n },\n ($$renderer5) => {\n $$renderer5.push(`<!--[-->`);\n const each_array = ensure_array_like(fields);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let field = each_array[$$index];\n $$renderer5.option({ value: field.key }, ($$renderer6) => {\n $$renderer6.push(`${escape_html(field.key)}`);\n });\n }\n $$renderer5.push(`<!--]-->`);\n }\n );\n $$renderer4.push(`</label> `);\n if (selectedField()) {\n $$renderer4.push(\"<!--[0-->\");\n if (usesFreeform()) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<label class=\"flex flex-col gap-1.5 text-sm text-rc-gray-200\"><span>Value</span> `);\n Input($$renderer4, {\n type: selectedField().type === \"number\" ? \"number\" : \"text\",\n class: \"w-full !border-rc-gray-500 !bg-rc-gray-900 !py-2\",\n onkeydown: (event) => {\n if (event.key === \"Enter\" && canAdd()) addFilter();\n },\n get value() {\n return freeformValue;\n },\n set value($$value) {\n freeformValue = $$value;\n $$settled = false;\n }\n });\n $$renderer4.push(`<!----> <span class=\"text-xs text-rc-gray-400\">This field has ${escape_html(selectedField().variantCount)} distinct values.</span></label>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n $$renderer4.push(`<fieldset class=\"flex flex-col gap-1.5\"><legend class=\"mb-1 text-sm text-rc-gray-200\">Values</legend> <div class=\"rc-scroll max-h-72 overflow-y-auto rounded-lg border border-rc-gray-600 bg-rc-gray-900 p-1\"><!--[-->`);\n const each_array_1 = ensure_array_like(selectedField().values);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let item = each_array_1[$$index_1];\n $$renderer4.push(`<label class=\"flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm text-rc-gray-100 hover:bg-rc-gray-700\"><input type=\"checkbox\"${attr(\"checked\", isSelected(item.value), true)}/> <span class=\"min-w-0 flex-1 break-words\">${escape_html(formatValue(item.value))}</span> <span class=\"ml-auto text-[calc(0.875rem-1pt)] tabular-nums text-rc-gray-400\">${escape_html(item.count)}</span></label>`);\n }\n $$renderer4.push(`<!--]--></div></fieldset>`);\n }\n $$renderer4.push(`<!--]-->`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]-->`);\n }\n $$renderer4.push(`<!--]--></div>`);\n }, footer = function($$renderer4) {\n Button($$renderer4, {\n variant: \"secondary\",\n onclick: () => open = false,\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->Cancel`);\n },\n $$slots: { default: true }\n });\n $$renderer4.push(`<!----> `);\n Button($$renderer4, {\n onclick: addFilter,\n disabled: !canAdd(),\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->Add filter`);\n },\n $$slots: { default: true }\n });\n $$renderer4.push(`<!---->`);\n };\n Modal($$renderer3, {\n title: \"Add analytics filter\",\n class: \"!max-w-lg\",\n get open() {\n return open;\n },\n set open($$value) {\n open = $$value;\n $$settled = false;\n },\n children,\n footer,\n $$slots: { default: true, footer: true }\n });\n }\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n bind_props($$props, { open });\n });\n}\nfunction _layout($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const client = new TelescopeClient(fetch);\n let agents = [];\n let conversations = void 0;\n let selectedConversation = null;\n const currentAgent = derived(() => (page.url.searchParams.get(\"agent\") ?? \"\").trim());\n const currentRegion = derived(() => (page.url.searchParams.get(\"region\") ?? \"\").trim());\n let phoneQuery = \"\";\n let pageSize = 20;\n let pageSizeStr = \"20\";\n let sortDesc = true;\n let cursorStack = [];\n let lastConversationId = null;\n let loading = false;\n let error = null;\n let telescopeSources = [];\n let telescopeSourceId = \"\";\n let analyticsFields = [];\n let activeAnalyticsFilters = [];\n let analyticsFieldsLoading = false;\n let analyticsFieldsError = null;\n let filterDialogOpen = false;\n let conversationRequestId = 0;\n let analyticsFieldsRequestId = 0;\n const availableAnalyticsFields = derived(() => analyticsFields.filter((field) => !activeAnalyticsFilters.some((filter) => filter.key === field.key)));\n let loadedConversationFilterKey = null;\n const currentConversationFilterKey = derived(() => JSON.stringify([currentAgent(), telescopeSourceId, activeAnalyticsFilters]));\n const currentConversations = derived(() => loadedConversationFilterKey === currentConversationFilterKey() ? conversations : void 0);\n const totalLoaded = derived(() => currentConversations()?.items.length ?? 0);\n let { useMock = false, children } = $$props;\n const { onError } = getAgentsContext();\n function fmtDate(ms) {\n return new Date(ms).toLocaleString();\n }\n function fmtDuration(sec) {\n const totalSeconds = Math.round(sec);\n const mm = Math.floor(totalSeconds / 60);\n const ss = totalSeconds % 60;\n return `${mm}:${String(ss).padStart(2, \"0\")}`;\n }\n function resetSelectionData() {\n conversationRequestId += 1;\n analyticsFieldsRequestId += 1;\n selectedConversation = null;\n conversations = void 0;\n loadedConversationFilterKey = null;\n analyticsFields = [];\n activeAnalyticsFilters = [];\n cursorStack = [];\n lastConversationId = null;\n loading = true;\n analyticsFieldsLoading = true;\n analyticsFieldsError = null;\n filterDialogOpen = false;\n }\n function buildAgentSearch(agentId = currentAgent(), region = agentId === currentAgent() ? currentRegion() : \"\") {\n const params = new URLSearchParams();\n if (agentId) params.set(\"agent\", agentId);\n if (agentId && region) params.set(\"region\", region);\n if (telescopeSourceId) params.set(TELESCOPE_SOURCE_QUERY_PARAM, telescopeSourceId);\n const search = params.toString();\n return search ? `?${search}` : \"\";\n }\n function buildConversationsUrl(agentId = currentAgent()) {\n return `${// When user clicks Next: push current cursor to stack and advance\n // Prev: pop one cursor and request page starting before that cursor (or empty to go first)\n // Already on first page, do nothing\n // pop last cursor (we are currently after it)\n viewBase()}/conversations${buildAgentSearch(agentId)}`;\n }\n async function fetchConversationsFromApi(phoneNumber, limit = pageSize, lastConversationId2, agentId, analyticsFilters = activeAnalyticsFilters) {\n if (useMock) {\n return mockGenerator.fetchConversations(limit, phoneNumber, lastConversationId2 ?? void 0);\n } else {\n return client.getConversations({\n phoneNumber,\n agentId,\n analyticsFilters,\n limit: Number(limit),\n lastConversationId: lastConversationId2 ?? void 0\n });\n }\n }\n async function loadFirstPage() {\n cursorStack = [];\n lastConversationId = null;\n await loadPage();\n }\n async function onTelescopeSourceChange(e) {\n const next = e.target.value;\n telescopeSourceId = next;\n persistTelescopeSourceId(next);\n client.setSourceId(next);\n resetSelectionData();\n await goto(buildConversationsUrl());\n await Promise.all([loadAnalyticsFields(), loadFirstPage()]);\n }\n async function loadPage() {\n const requestId = ++conversationRequestId;\n const requestedFilters = activeAnalyticsFilters.map((filter) => ({ ...filter, values: [...filter.values] }));\n const requestAgent = currentAgent();\n const requestFilterKey = JSON.stringify([requestAgent, telescopeSourceId, requestedFilters]);\n loading = true;\n error = null;\n try {\n const resp = await fetchConversationsFromApi(phoneQuery || void 0, pageSize, lastConversationId ?? void 0, requestAgent || void 0, requestedFilters);\n if (requestId !== conversationRequestId || requestFilterKey !== currentConversationFilterKey()) return;\n const items = Array.isArray(resp.items) ? resp.items.slice() : [];\n conversations = {\n limit: resp.limit,\n items,\n lastConversationId: resp.lastConversationId\n };\n loadedConversationFilterKey = requestFilterKey;\n lastConversationId = resp.lastConversationId ?? null;\n } catch (e) {\n if (requestId !== conversationRequestId || requestFilterKey !== currentConversationFilterKey()) return;\n error = \"Conversations could not be loaded for this selection.\";\n onError(error);\n console.error(\"Load page error:\", e);\n } finally {\n if (requestId === conversationRequestId) loading = false;\n }\n }\n async function loadAnalyticsFields() {\n const requestId = ++analyticsFieldsRequestId;\n analyticsFieldsLoading = true;\n analyticsFieldsError = null;\n analyticsFields = [];\n if (useMock) {\n analyticsFieldsLoading = false;\n return;\n }\n try {\n const response = await client.getAnalyticsFields(currentAgent() || void 0);\n if (requestId !== analyticsFieldsRequestId) return;\n analyticsFields = response.items;\n } catch (e) {\n if (requestId !== analyticsFieldsRequestId) return;\n analyticsFieldsError = \"Filters are unavailable for this selection.\";\n console.error(\"Failed to load analytics fields:\", e);\n } finally {\n if (requestId === analyticsFieldsRequestId) analyticsFieldsLoading = false;\n }\n }\n function addAnalyticsFilter(filter) {\n activeAnalyticsFilters = [...activeAnalyticsFilters, filter];\n void loadFirstPage();\n }\n function formatAnalyticsValue(value) {\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n return String(value);\n }\n function formatAnalyticsFilter(filter) {\n return `${filter.key}: ${filter.values.map(formatAnalyticsValue).join(\", \")}`;\n }\n async function onNext() {\n if (!currentConversations()?.lastConversationId) return;\n cursorStack.push(currentConversations().lastConversationId);\n lastConversationId = currentConversations().lastConversationId;\n await loadPage();\n }\n async function onPrev() {\n if (!cursorStack.length) {\n return;\n }\n cursorStack.pop();\n lastConversationId = cursorStack.length ? cursorStack[cursorStack.length - 1] : null;\n await loadPage();\n }\n function toggleSort() {\n sortDesc = !sortDesc;\n if (currentConversations()?.items) {\n currentConversations().items.sort((a, b) => sortDesc ? b.createdAt - a.createdAt : a.createdAt - b.createdAt);\n }\n }\n function onPageSizeChange(e) {\n const v = e.target.value;\n pageSizeStr = v;\n pageSize = parseInt(pageSizeStr, 10) || 20;\n }\n async function onSearch() {\n await loadFirstPage();\n }\n const activeTopTab = derived(() => {\n const head2 = page.url.pathname.split(\"/\")[1];\n return head2 === \"traces\" ? \"view\" : head2;\n });\n const viewBase = derived(() => page.url.pathname.startsWith(\"/view\") ? \"/view\" : \"/traces\");\n function handleTabChange({ value }) {\n if (value === activeTopTab()) return;\n if (value === \"edit\") {\n if (!currentAgent()) return goto();\n const params = new URLSearchParams();\n if (currentRegion()) params.set(\"region\", currentRegion());\n const search = params.toString();\n return goto(`/edit/${encodeURIComponent(currentAgent())}/roleplay${search ? `?${search}` : \"\"}`);\n }\n if (value === \"view\") return goto(buildConversationsUrl());\n goto();\n }\n async function handleAgentClick(agentId, event) {\n event?.stopPropagation();\n if (agentId === currentAgent()) return;\n resetSelectionData();\n await goto(buildConversationsUrl(agentId));\n }\n async function handleAllAgentsClick(event) {\n event?.stopPropagation();\n if (!currentAgent()) return;\n resetSelectionData();\n await goto(buildConversationsUrl(\"\"));\n }\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n head(\"1uk1thp\", $$renderer3, ($$renderer4) => {\n $$renderer4.title(($$renderer5) => {\n $$renderer5.push(`<title>Bosun: Telescope</title>`);\n });\n });\n $$renderer3.push(`<div class=\"flex h-screen\">`);\n AgentSidebar($$renderer3, {\n agents,\n currentAgent: currentAgent(),\n onAgentClick: handleAgentClick,\n showAllAgentsOption: true,\n onAllAgentsClick: handleAllAgentsClick,\n className: \"flex-none\"\n });\n $$renderer3.push(`<!----> <div class=\"flex h-full min-w-0 flex-1 flex-col bg-rc-gray-980 pb-3 pr-4 pt-2\"><nav class=\"flex flex-none flex-col bg-rc-gray-980\"><div class=\"flex items-center justify-center\">`);\n Tabs($$renderer3, {\n value: activeTopTab(),\n ariaLabel: \"Top tabs\",\n onChange: handleTabChange,\n children: ($$renderer4) => {\n Tab($$renderer4, {\n value: \"edit\",\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->Edit`);\n }\n });\n $$renderer4.push(`<!----> `);\n Tab($$renderer4, {\n value: \"view\",\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->View`);\n }\n });\n $$renderer4.push(`<!---->`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----></div> <div class=\"flex flex-wrap items-center gap-4\"><div class=\"flex-1\"><label class=\"block\"><div class=\"flex gap-2\">`);\n $$renderer3.select(\n {\n class: \"select\",\n value: telescopeSourceId,\n disabled: !telescopeSources.length,\n onchange: onTelescopeSourceChange,\n \"aria-label\": \"Telescope source\",\n title: \"Telescope source\"\n },\n ($$renderer4) => {\n if (telescopeSources.length) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<!--[-->`);\n const each_array = ensure_array_like(telescopeSources);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let source = each_array[$$index];\n $$renderer4.option({ value: source.id }, ($$renderer5) => {\n $$renderer5.push(`${escape_html(source.label)}`);\n });\n }\n $$renderer4.push(`<!--]-->`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n $$renderer4.option({ value: \"\" }, ($$renderer5) => {\n $$renderer5.push(`${escape_html(\"No sources\")}`);\n });\n }\n $$renderer4.push(`<!--]-->`);\n },\n \"svelte-1uk1thp\"\n );\n $$renderer3.push(` <div class=\"relative\">`);\n Input($$renderer3, {\n class: \"w-56 rounded-r-none !border !border-rc-gray-500 !p-2 !pr-8 hover:border-rc-gray-400\",\n placeholder: \"Search by phone...\",\n onkeydown: (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n e.stopPropagation();\n onSearch();\n }\n },\n get value() {\n return phoneQuery;\n },\n set value($$value) {\n phoneQuery = $$value;\n $$settled = false;\n }\n });\n $$renderer3.push(`<!---->`);\n if (phoneQuery) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<button type=\"button\" aria-label=\"Clear search\" class=\"absolute right-2 top-1/2 flex -translate-y-1/2 items-center justify-center rounded p-1 text-rc-gray-200 hover:bg-rc-gray-600 hover:text-rc-gray-100 focus:outline-none\">`);\n Icon($$renderer3, { name: \"close\", width: 18, height: 18 });\n $$renderer3.push(`<!----></button>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div> `);\n Button($$renderer3, {\n onclick: onSearch,\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Search`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----> <!--[-->`);\n const each_array_1 = ensure_array_like(activeAnalyticsFilters);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let filter = each_array_1[$$index_1];\n $$renderer3.push(`<div class=\"flex max-w-80 items-center gap-1 rounded-lg border border-rc-gray-500 bg-rc-gray-700 py-1 pl-3 pr-1 text-sm text-rc-gray-100\"${attr(\"title\", formatAnalyticsFilter(filter))}><span class=\"truncate\">${escape_html(formatAnalyticsFilter(filter))}</span> <button type=\"button\" class=\"flex-none rounded p-1 text-rc-gray-300 hover:bg-rc-gray-600 hover:text-rc-gray-100\"${attr(\"aria-label\", `Remove ${filter.key} filter`)}>`);\n Icon($$renderer3, { name: \"close\", width: 16, height: 16 });\n $$renderer3.push(`<!----></button></div>`);\n }\n $$renderer3.push(`<!--]--> `);\n Button($$renderer3, {\n variant: \"secondary\",\n disabled: analyticsFieldsLoading || availableAnalyticsFields().length === 0,\n title: analyticsFieldsError ?? \"Add analytics filter\",\n onclick: () => filterDialogOpen = true,\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Add filter`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----></div></label></div> <div class=\"hidden items-center gap-2\"><div class=\"text-rc-gray-200\">Sort:</div> `);\n Button($$renderer3, {\n onclick: toggleSort,\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->${escape_html(sortDesc ? \"Newest first\" : \"Oldest first\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----></div> <div class=\"hidden items-center gap-2\"><div class=\"text-rc-gray-200\">Page size:</div> `);\n $$renderer3.select(\n {\n class: \"rounded-sm border border-rc-gray-300 bg-rc-gray-700 p-2 pr-8 text-rc-gray-100\",\n value: pageSizeStr,\n onchange: onPageSizeChange\n },\n ($$renderer4) => {\n $$renderer4.option({ value: \"5\" }, ($$renderer5) => {\n $$renderer5.push(`5`);\n });\n $$renderer4.option({ value: \"10\" }, ($$renderer5) => {\n $$renderer5.push(`10`);\n });\n $$renderer4.option({ value: \"20\" }, ($$renderer5) => {\n $$renderer5.push(`20`);\n });\n $$renderer4.option({ value: \"50\" }, ($$renderer5) => {\n $$renderer5.push(`50`);\n });\n }\n );\n $$renderer3.push(`</div> <div class=\"flex items-center gap-3\"><div class=\"flex items-center gap-2\">`);\n Button($$renderer3, {\n onclick: onPrev,\n disabled: cursorStack.length === 0 && !lastConversationId,\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Prev`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----> `);\n Button($$renderer3, {\n onclick: onNext,\n disabled: !currentConversations()?.items.length,\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Next`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----> <div class=\"text-sm text-rc-gray-200\">Items: ${escape_html(totalLoaded())}</div></div></div> <div class=\"ml-auto whitespace-nowrap text-sm\"><span class=\"text-gray-400\">API Mode:</span> <span class=\"font-semibold text-rc-green-200\">${escape_html(useMock ? \"Mock (local)\" : \"Live\")}</span></div></div></nav> <main class=\"flex flex-1 overflow-hidden\"><div class=\"flex h-full w-1/3 flex-col\"><div class=\"flex-none border-b border-rc-gray-300/40 p-4\"><h2 class=\"text-lg font-semibold text-rc-gray-100\">Conversations</h2></div> <div class=\"rc-scroll min-h-0 flex-1 overflow-scroll px-3 py-4\">`);\n if (loading) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<p class=\"py-8 text-center text-rc-gray-200\">Loading...</p>`);\n } else if (!currentConversations()?.items?.length) {\n $$renderer3.push(\"<!--[1-->\");\n $$renderer3.push(`<p class=\"py-8 text-center text-rc-gray-300\">No conversations found</p>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n $$renderer3.push(`<ul class=\"space-y-2\"><!--[-->`);\n const each_array_2 = ensure_array_like(currentConversations().items);\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let conversation = each_array_2[$$index_2];\n $$renderer3.push(`<li${attr_class(\n `cursor-pointer rounded-lg p-3 transition-colors ${(page.params.conversationId ? conversation.conversationId === page.params.conversationId : conversation.conversationId === selectedConversation?.conversationId) ? \"bg-rc-gray-600\" : \"bg-rc-gray-700 hover:bg-rc-gray-650\"}`,\n \"svelte-1uk1thp\"\n )}${attr(\"aria-selected\", page.params.conversationId ? conversation.conversationId === page.params.conversationId : conversation.conversationId === selectedConversation?.conversationId)}><div class=\"flex w-full flex-col gap-2\"><div class=\"flex w-full items-center justify-between\"><div class=\"text-gray-300\">${escape_html(fmtDate(conversation.createdAt))}</div> <div class=\"flex items-center gap-2\"><span class=\"text-xs text-rc-gray-300\">${escape_html(conversation.medium)}</span> <span class=\"font-semibold text-rc-gray-100\">${escape_html(conversation.phoneNumber)}</span></div></div> <div class=\"flex items-center justify-between gap-4\"><div class=\"text-sm\"><span class=\"text-rc-gray-200\">Conversation Id:</span> <span class=\"text-rc-green-200\">${escape_html(conversation.conversationId)}</span> `);\n if (!currentAgent() && conversation.agentId) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<span class=\"text-rc-gray-200\">, Agent Id:</span> <span class=\"text-rc-green-200\">${escape_html(conversation.agentId)}</span>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div> <p class=\"text-sm text-gray-400\">Duration: ${escape_html(fmtDuration(conversation.duration ?? 0))}</p></div></div></li>`);\n }\n $$renderer3.push(`<!--]--></ul>`);\n }\n $$renderer3.push(`<!--]--></div></div> <div class=\"flex h-full w-2/3 flex-col bg-rc-gray-980\">`);\n children($$renderer3);\n $$renderer3.push(`<!----></div></main></div></div> `);\n AnalyticsFilterDialog($$renderer3, {\n fields: availableAnalyticsFields(),\n onAdd: addAnalyticsFilter,\n get open() {\n return filterDialogOpen;\n },\n set open($$value) {\n filterDialogOpen = $$value;\n $$settled = false;\n }\n });\n $$renderer3.push(`<!---->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nexport {\n _layout as default\n};\n"],"names":[],"mappings":"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"}