@recombine-ai/bosun 0.18.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1358) hide show
  1. package/build/_app/immutable/assets/0.CDmx-FLf.css +1 -0
  2. package/build/_app/immutable/assets/0.CDmx-FLf.css.br +0 -0
  3. package/build/_app/immutable/assets/0.CDmx-FLf.css.gz +0 -0
  4. package/build/_app/immutable/assets/17.BR6pkKJY.css +1 -0
  5. package/build/_app/immutable/assets/17.BR6pkKJY.css.br +0 -0
  6. package/build/_app/immutable/assets/17.BR6pkKJY.css.gz +0 -0
  7. package/build/_app/immutable/assets/2.C-ckNQUz.css +1 -0
  8. package/build/_app/immutable/assets/2.C-ckNQUz.css.br +0 -0
  9. package/build/_app/immutable/assets/2.C-ckNQUz.css.gz +0 -0
  10. package/build/_app/immutable/assets/3.Dd6QwpRZ.css +1 -0
  11. package/build/_app/immutable/assets/3.Dd6QwpRZ.css.br +0 -0
  12. package/build/_app/immutable/assets/3.Dd6QwpRZ.css.gz +0 -0
  13. package/build/_app/immutable/assets/5.CAILVfho.css +1 -0
  14. package/build/_app/immutable/assets/5.CAILVfho.css.br +0 -0
  15. package/build/_app/immutable/assets/5.CAILVfho.css.gz +0 -0
  16. package/build/_app/immutable/assets/8.y1S06Rrw.css +1 -0
  17. package/build/_app/immutable/assets/8.y1S06Rrw.css.br +0 -0
  18. package/build/_app/immutable/assets/8.y1S06Rrw.css.gz +0 -0
  19. package/build/_app/immutable/assets/9.bqwywlK9.css +1 -0
  20. package/build/_app/immutable/assets/9.bqwywlK9.css.br +0 -0
  21. package/build/_app/immutable/assets/9.bqwywlK9.css.gz +0 -0
  22. package/build/_app/immutable/assets/AgentSidebar.gt4PImXZ.css +1 -0
  23. package/build/_app/immutable/assets/AgentSidebar.gt4PImXZ.css.br +0 -0
  24. package/build/_app/immutable/assets/AgentSidebar.gt4PImXZ.css.gz +0 -0
  25. package/build/_app/immutable/assets/ChatStepTrace.BhjSq1f6.css +1 -0
  26. package/build/_app/immutable/assets/ChatStepTrace.BhjSq1f6.css.br +0 -0
  27. package/build/_app/immutable/assets/ChatStepTrace.BhjSq1f6.css.gz +0 -0
  28. package/build/_app/immutable/assets/Input.BYwaxgM_.css +1 -0
  29. package/build/_app/immutable/assets/Input.BYwaxgM_.css.br +5 -0
  30. package/build/_app/immutable/assets/Input.BYwaxgM_.css.gz +0 -0
  31. package/build/_app/immutable/assets/Modal.Ba-kUPX7.css +1 -0
  32. package/build/_app/immutable/assets/Modal.Ba-kUPX7.css.br +0 -0
  33. package/build/_app/immutable/assets/Modal.Ba-kUPX7.css.gz +0 -0
  34. package/build/_app/immutable/assets/Popper.BKFfO-Eu.css +1 -0
  35. package/build/_app/immutable/assets/Popper.BKFfO-Eu.css.br +0 -0
  36. package/build/_app/immutable/assets/Popper.BKFfO-Eu.css.gz +0 -0
  37. package/build/_app/immutable/assets/Tab.DEEG0ES_.css +1 -0
  38. package/build/_app/immutable/assets/Tab.DEEG0ES_.css.br +0 -0
  39. package/build/_app/immutable/assets/Tab.DEEG0ES_.css.gz +0 -0
  40. package/build/_app/immutable/assets/editor.BoJhDcRF.css +1 -0
  41. package/build/_app/immutable/assets/editor.BoJhDcRF.css.br +0 -0
  42. package/build/_app/immutable/assets/editor.BoJhDcRF.css.gz +0 -0
  43. package/build/_app/immutable/assets/editor.chSTM-fo.css +1 -0
  44. package/build/_app/immutable/assets/editor.chSTM-fo.css.br +0 -0
  45. package/build/_app/immutable/assets/editor.chSTM-fo.css.gz +0 -0
  46. package/build/_app/immutable/chunks/08VXUWAP.js +1 -0
  47. package/build/_app/immutable/chunks/08VXUWAP.js.br +0 -0
  48. package/build/_app/immutable/chunks/08VXUWAP.js.gz +0 -0
  49. package/build/_app/immutable/chunks/12bfCwgn.js +2 -0
  50. package/build/_app/immutable/chunks/12bfCwgn.js.br +0 -0
  51. package/build/_app/immutable/chunks/12bfCwgn.js.gz +0 -0
  52. package/build/_app/immutable/chunks/43DmfD33.js +1 -0
  53. package/build/_app/immutable/chunks/43DmfD33.js.br +0 -0
  54. package/build/_app/immutable/chunks/43DmfD33.js.gz +0 -0
  55. package/build/_app/immutable/chunks/6OCsQ6r7.js +11 -0
  56. package/build/_app/immutable/chunks/6OCsQ6r7.js.br +0 -0
  57. package/build/_app/immutable/chunks/6OCsQ6r7.js.gz +0 -0
  58. package/build/_app/immutable/chunks/6RTg0lbw.js +1 -0
  59. package/build/_app/immutable/chunks/6RTg0lbw.js.br +0 -0
  60. package/build/_app/immutable/chunks/6RTg0lbw.js.gz +0 -0
  61. package/build/_app/immutable/chunks/AvXp07rr.js +1 -0
  62. package/build/_app/immutable/chunks/AvXp07rr.js.br +2 -0
  63. package/build/_app/immutable/chunks/AvXp07rr.js.gz +0 -0
  64. package/build/_app/immutable/chunks/B0qVs-E9.js +1 -0
  65. package/build/_app/immutable/chunks/B0qVs-E9.js.br +0 -0
  66. package/build/_app/immutable/chunks/B0qVs-E9.js.gz +0 -0
  67. package/build/_app/immutable/chunks/B434V0h8.js +1 -0
  68. package/build/_app/immutable/chunks/B434V0h8.js.br +0 -0
  69. package/build/_app/immutable/chunks/B434V0h8.js.gz +0 -0
  70. package/build/_app/immutable/chunks/B5-_aFwp.js +2 -0
  71. package/build/_app/immutable/chunks/B5-_aFwp.js.br +0 -0
  72. package/build/_app/immutable/chunks/B5-_aFwp.js.gz +0 -0
  73. package/build/_app/immutable/chunks/B8J7ngcE.js +1 -0
  74. package/build/_app/immutable/chunks/B8J7ngcE.js.br +0 -0
  75. package/build/_app/immutable/chunks/B8J7ngcE.js.gz +0 -0
  76. package/build/_app/immutable/chunks/B9JPFI3C.js +2 -0
  77. package/build/_app/immutable/chunks/B9JPFI3C.js.br +0 -0
  78. package/build/_app/immutable/chunks/B9JPFI3C.js.gz +0 -0
  79. package/build/_app/immutable/chunks/B9YnyJ2j.js +1 -0
  80. package/build/_app/immutable/chunks/B9YnyJ2j.js.br +0 -0
  81. package/build/_app/immutable/chunks/B9YnyJ2j.js.gz +0 -0
  82. package/build/_app/immutable/chunks/BEEn4gHE.js +1 -0
  83. package/build/_app/immutable/chunks/BEEn4gHE.js.br +0 -0
  84. package/build/_app/immutable/chunks/BEEn4gHE.js.gz +0 -0
  85. package/build/_app/immutable/chunks/BEtHBSE6.js +1 -0
  86. package/build/_app/immutable/chunks/BEtHBSE6.js.br +0 -0
  87. package/build/_app/immutable/chunks/BEtHBSE6.js.gz +0 -0
  88. package/build/_app/immutable/chunks/BJqZY8o2.js +1 -0
  89. package/build/_app/immutable/chunks/BJqZY8o2.js.br +0 -0
  90. package/build/_app/immutable/chunks/BJqZY8o2.js.gz +0 -0
  91. package/build/_app/immutable/chunks/BKQbRSey.js +1 -0
  92. package/build/_app/immutable/chunks/BKQbRSey.js.br +0 -0
  93. package/build/_app/immutable/chunks/BKQbRSey.js.gz +0 -0
  94. package/build/_app/immutable/chunks/BKxtCVv1.js +1 -0
  95. package/build/_app/immutable/chunks/BKxtCVv1.js.br +0 -0
  96. package/build/_app/immutable/chunks/BKxtCVv1.js.gz +0 -0
  97. package/build/_app/immutable/chunks/BOHUKGg_.js +1 -0
  98. package/build/_app/immutable/chunks/BOHUKGg_.js.br +0 -0
  99. package/build/_app/immutable/chunks/BOHUKGg_.js.gz +0 -0
  100. package/build/_app/immutable/chunks/BP0Xadq7.js +5 -0
  101. package/build/_app/immutable/chunks/BP0Xadq7.js.br +0 -0
  102. package/build/_app/immutable/chunks/BP0Xadq7.js.gz +0 -0
  103. package/build/_app/immutable/chunks/BSnTSnag.js +1 -0
  104. package/build/_app/immutable/chunks/BSnTSnag.js.br +0 -0
  105. package/build/_app/immutable/chunks/BSnTSnag.js.gz +0 -0
  106. package/build/_app/immutable/chunks/BT98u4gR.js +35 -0
  107. package/build/_app/immutable/chunks/BT98u4gR.js.br +0 -0
  108. package/build/_app/immutable/chunks/BT98u4gR.js.gz +0 -0
  109. package/build/_app/immutable/chunks/BWPQTe0t.js +1 -0
  110. package/build/_app/immutable/chunks/BWPQTe0t.js.br +0 -0
  111. package/build/_app/immutable/chunks/BWPQTe0t.js.gz +0 -0
  112. package/build/_app/immutable/chunks/BYgofb2h.js +1 -0
  113. package/build/_app/immutable/chunks/BYgofb2h.js.br +0 -0
  114. package/build/_app/immutable/chunks/BYgofb2h.js.gz +0 -0
  115. package/build/_app/immutable/chunks/Ba7i2nA0.js +1 -0
  116. package/build/_app/immutable/chunks/Ba7i2nA0.js.br +0 -0
  117. package/build/_app/immutable/chunks/Ba7i2nA0.js.gz +0 -0
  118. package/build/_app/immutable/chunks/Bc1oIj2c.js +1 -0
  119. package/build/_app/immutable/chunks/Bc1oIj2c.js.br +0 -0
  120. package/build/_app/immutable/chunks/Bc1oIj2c.js.gz +0 -0
  121. package/build/_app/immutable/chunks/Bc_sGQ0U.js +1 -0
  122. package/build/_app/immutable/chunks/Bc_sGQ0U.js.br +3 -0
  123. package/build/_app/immutable/chunks/Bc_sGQ0U.js.gz +0 -0
  124. package/build/_app/immutable/chunks/BeGwcela.js +1 -0
  125. package/build/_app/immutable/chunks/BeGwcela.js.br +0 -0
  126. package/build/_app/immutable/chunks/BeGwcela.js.gz +0 -0
  127. package/build/_app/immutable/chunks/BiDy9-HP.js +1 -0
  128. package/build/_app/immutable/chunks/BiDy9-HP.js.br +0 -0
  129. package/build/_app/immutable/chunks/BiDy9-HP.js.gz +0 -0
  130. package/build/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  131. package/build/_app/immutable/chunks/Bjy-W4x2.js.br +0 -0
  132. package/build/_app/immutable/chunks/Bjy-W4x2.js.gz +0 -0
  133. package/build/_app/immutable/chunks/Bri6UV-V.js +1 -0
  134. package/build/_app/immutable/chunks/Bri6UV-V.js.br +0 -0
  135. package/build/_app/immutable/chunks/Bri6UV-V.js.gz +0 -0
  136. package/build/_app/immutable/chunks/BwWrilGY.js +1 -0
  137. package/build/_app/immutable/chunks/BwWrilGY.js.br +0 -0
  138. package/build/_app/immutable/chunks/BwWrilGY.js.gz +0 -0
  139. package/build/_app/immutable/chunks/Bxkupp3x.js +1 -0
  140. package/build/_app/immutable/chunks/Bxkupp3x.js.br +0 -0
  141. package/build/_app/immutable/chunks/Bxkupp3x.js.gz +0 -0
  142. package/build/_app/immutable/chunks/By9tvIIw.js +1 -0
  143. package/build/_app/immutable/chunks/By9tvIIw.js.br +0 -0
  144. package/build/_app/immutable/chunks/By9tvIIw.js.gz +0 -0
  145. package/build/_app/immutable/chunks/Byx1piFp.js +3 -0
  146. package/build/_app/immutable/chunks/Byx1piFp.js.br +0 -0
  147. package/build/_app/immutable/chunks/Byx1piFp.js.gz +0 -0
  148. package/build/_app/immutable/chunks/Bz4Y3fRF.js +1 -0
  149. package/build/_app/immutable/chunks/Bz4Y3fRF.js.br +0 -0
  150. package/build/_app/immutable/chunks/Bz4Y3fRF.js.gz +0 -0
  151. package/build/_app/immutable/chunks/C-y9NEjX.js +1 -0
  152. package/build/_app/immutable/chunks/C-y9NEjX.js.br +0 -0
  153. package/build/_app/immutable/chunks/C-y9NEjX.js.gz +0 -0
  154. package/build/_app/immutable/chunks/C1TsmEOe.js +1 -0
  155. package/build/_app/immutable/chunks/C1TsmEOe.js.br +0 -0
  156. package/build/_app/immutable/chunks/C1TsmEOe.js.gz +0 -0
  157. package/build/_app/immutable/chunks/C531GsRP.js +2 -0
  158. package/build/_app/immutable/chunks/C531GsRP.js.br +0 -0
  159. package/build/_app/immutable/chunks/C531GsRP.js.gz +0 -0
  160. package/build/_app/immutable/chunks/C5_-GSwl.js +1 -0
  161. package/build/_app/immutable/chunks/C5_-GSwl.js.br +0 -0
  162. package/build/_app/immutable/chunks/C5_-GSwl.js.gz +0 -0
  163. package/build/_app/immutable/chunks/C7h46wYY.js +1 -0
  164. package/build/_app/immutable/chunks/C7h46wYY.js.br +0 -0
  165. package/build/_app/immutable/chunks/C7h46wYY.js.gz +0 -0
  166. package/build/_app/immutable/chunks/C8Ef5oNN.js +1 -0
  167. package/build/_app/immutable/chunks/C8Ef5oNN.js.br +0 -0
  168. package/build/_app/immutable/chunks/C8Ef5oNN.js.gz +0 -0
  169. package/build/_app/immutable/chunks/CC2rA5mh.js +1 -0
  170. package/build/_app/immutable/chunks/CC2rA5mh.js.br +0 -0
  171. package/build/_app/immutable/chunks/CC2rA5mh.js.gz +0 -0
  172. package/build/_app/immutable/chunks/CGV7fMmX.js +1 -0
  173. package/build/_app/immutable/chunks/CGV7fMmX.js.br +0 -0
  174. package/build/_app/immutable/chunks/CGV7fMmX.js.gz +0 -0
  175. package/build/_app/immutable/chunks/CIPQ_RoX.js +1 -0
  176. package/build/_app/immutable/chunks/CIPQ_RoX.js.br +0 -0
  177. package/build/_app/immutable/chunks/CIPQ_RoX.js.gz +0 -0
  178. package/build/_app/immutable/chunks/CL717zGu.js +2 -0
  179. package/build/_app/immutable/chunks/CL717zGu.js.br +0 -0
  180. package/build/_app/immutable/chunks/CL717zGu.js.gz +0 -0
  181. package/build/_app/immutable/chunks/CPCsWwEy.js +3 -0
  182. package/build/_app/immutable/chunks/CPCsWwEy.js.br +0 -0
  183. package/build/_app/immutable/chunks/CPCsWwEy.js.gz +0 -0
  184. package/build/_app/immutable/chunks/CRfGWb83.js +1 -0
  185. package/build/_app/immutable/chunks/CRfGWb83.js.br +0 -0
  186. package/build/_app/immutable/chunks/CRfGWb83.js.gz +0 -0
  187. package/build/_app/immutable/chunks/CUZn05nQ.js +63 -0
  188. package/build/_app/immutable/chunks/CUZn05nQ.js.br +0 -0
  189. package/build/_app/immutable/chunks/CUZn05nQ.js.gz +0 -0
  190. package/build/_app/immutable/chunks/CVaqCwHa.js +1 -0
  191. package/build/_app/immutable/chunks/CVaqCwHa.js.br +0 -0
  192. package/build/_app/immutable/chunks/CVaqCwHa.js.gz +0 -0
  193. package/build/_app/immutable/chunks/CZMMlaMl.js +1 -0
  194. package/build/_app/immutable/chunks/CZMMlaMl.js.br +0 -0
  195. package/build/_app/immutable/chunks/CZMMlaMl.js.gz +0 -0
  196. package/build/_app/immutable/chunks/C_yvzB4Z.js +644 -0
  197. package/build/_app/immutable/chunks/C_yvzB4Z.js.br +0 -0
  198. package/build/_app/immutable/chunks/C_yvzB4Z.js.gz +0 -0
  199. package/build/_app/immutable/chunks/CcwsVR0C.js +1 -0
  200. package/build/_app/immutable/chunks/CcwsVR0C.js.br +0 -0
  201. package/build/_app/immutable/chunks/CcwsVR0C.js.gz +0 -0
  202. package/build/_app/immutable/chunks/Cf3l6QEG.js +2 -0
  203. package/build/_app/immutable/chunks/Cf3l6QEG.js.br +0 -0
  204. package/build/_app/immutable/chunks/Cf3l6QEG.js.gz +0 -0
  205. package/build/_app/immutable/chunks/CfSJPG6W.js +1 -0
  206. package/build/_app/immutable/chunks/CfSJPG6W.js.br +0 -0
  207. package/build/_app/immutable/chunks/CfSJPG6W.js.gz +0 -0
  208. package/build/_app/immutable/chunks/CfzHeBbL.js +1 -0
  209. package/build/_app/immutable/chunks/CfzHeBbL.js.br +1 -0
  210. package/build/_app/immutable/chunks/CfzHeBbL.js.gz +0 -0
  211. package/build/_app/immutable/chunks/Cimd5fb3.js +1 -0
  212. package/build/_app/immutable/chunks/Cimd5fb3.js.br +0 -0
  213. package/build/_app/immutable/chunks/Cimd5fb3.js.gz +0 -0
  214. package/build/_app/immutable/chunks/ClamHrr6.js +1 -0
  215. package/build/_app/immutable/chunks/ClamHrr6.js.br +0 -0
  216. package/build/_app/immutable/chunks/ClamHrr6.js.gz +0 -0
  217. package/build/_app/immutable/chunks/Cm7r79vr.js +1 -0
  218. package/build/_app/immutable/chunks/Cm7r79vr.js.br +0 -0
  219. package/build/_app/immutable/chunks/Cm7r79vr.js.gz +0 -0
  220. package/build/_app/immutable/chunks/CopQ2nXW.js +1 -0
  221. package/build/_app/immutable/chunks/CopQ2nXW.js.br +0 -0
  222. package/build/_app/immutable/chunks/CopQ2nXW.js.gz +0 -0
  223. package/build/_app/immutable/chunks/CpzslTdj.js +1 -0
  224. package/build/_app/immutable/chunks/CpzslTdj.js.br +0 -0
  225. package/build/_app/immutable/chunks/CpzslTdj.js.gz +0 -0
  226. package/build/_app/immutable/chunks/CsQS60Ue.js +1 -0
  227. package/build/_app/immutable/chunks/CsQS60Ue.js.br +0 -0
  228. package/build/_app/immutable/chunks/CsQS60Ue.js.gz +0 -0
  229. package/build/_app/immutable/chunks/D-oSqn_W.js +1 -0
  230. package/build/_app/immutable/chunks/D-oSqn_W.js.br +0 -0
  231. package/build/_app/immutable/chunks/D-oSqn_W.js.gz +0 -0
  232. package/build/_app/immutable/chunks/D-ptJ9y-.js +1 -0
  233. package/build/_app/immutable/chunks/D-ptJ9y-.js.br +0 -0
  234. package/build/_app/immutable/chunks/D-ptJ9y-.js.gz +0 -0
  235. package/build/_app/immutable/chunks/D05T4iGw.js +1 -0
  236. package/build/_app/immutable/chunks/D05T4iGw.js.br +0 -0
  237. package/build/_app/immutable/chunks/D05T4iGw.js.gz +0 -0
  238. package/build/_app/immutable/chunks/D1-opoqB.js +10 -0
  239. package/build/_app/immutable/chunks/D1-opoqB.js.br +0 -0
  240. package/build/_app/immutable/chunks/D1-opoqB.js.gz +0 -0
  241. package/build/_app/immutable/chunks/D3fLfD-Y.js +1 -0
  242. package/build/_app/immutable/chunks/D3fLfD-Y.js.br +0 -0
  243. package/build/_app/immutable/chunks/D3fLfD-Y.js.gz +0 -0
  244. package/build/_app/immutable/chunks/D3hlyOfw.js +1 -0
  245. package/build/_app/immutable/chunks/D3hlyOfw.js.br +0 -0
  246. package/build/_app/immutable/chunks/D3hlyOfw.js.gz +0 -0
  247. package/build/_app/immutable/chunks/DDZ8GqHh.js +1 -0
  248. package/build/_app/immutable/chunks/DDZ8GqHh.js.br +0 -0
  249. package/build/_app/immutable/chunks/DDZ8GqHh.js.gz +0 -0
  250. package/build/_app/immutable/chunks/DD_fL9ig.js +1 -0
  251. package/build/_app/immutable/chunks/DD_fL9ig.js.br +0 -0
  252. package/build/_app/immutable/chunks/DD_fL9ig.js.gz +0 -0
  253. package/build/_app/immutable/chunks/DHpiXF5c.js +1 -0
  254. package/build/_app/immutable/chunks/DHpiXF5c.js.br +0 -0
  255. package/build/_app/immutable/chunks/DHpiXF5c.js.gz +0 -0
  256. package/build/_app/immutable/chunks/DIMkf-bt.js +3 -0
  257. package/build/_app/immutable/chunks/DIMkf-bt.js.br +0 -0
  258. package/build/_app/immutable/chunks/DIMkf-bt.js.gz +0 -0
  259. package/build/_app/immutable/chunks/DISqw1ZD.js +1 -0
  260. package/build/_app/immutable/chunks/DISqw1ZD.js.br +0 -0
  261. package/build/_app/immutable/chunks/DISqw1ZD.js.gz +0 -0
  262. package/build/_app/immutable/chunks/DMUM7wLl.js +1 -0
  263. package/build/_app/immutable/chunks/DMUM7wLl.js.br +0 -0
  264. package/build/_app/immutable/chunks/DMUM7wLl.js.gz +0 -0
  265. package/build/_app/immutable/chunks/DT7zqm-g.js +1 -0
  266. package/build/_app/immutable/chunks/DT7zqm-g.js.br +0 -0
  267. package/build/_app/immutable/chunks/DT7zqm-g.js.gz +0 -0
  268. package/build/_app/immutable/chunks/DTj74zXo.js +1 -0
  269. package/build/_app/immutable/chunks/DTj74zXo.js.br +0 -0
  270. package/build/_app/immutable/chunks/DTj74zXo.js.gz +0 -0
  271. package/build/_app/immutable/chunks/DV3o63ZY.js +1 -0
  272. package/build/_app/immutable/chunks/DV3o63ZY.js.br +0 -0
  273. package/build/_app/immutable/chunks/DV3o63ZY.js.gz +0 -0
  274. package/build/_app/immutable/chunks/DVZC5aEW.js +3 -0
  275. package/build/_app/immutable/chunks/DVZC5aEW.js.br +0 -0
  276. package/build/_app/immutable/chunks/DVZC5aEW.js.gz +0 -0
  277. package/build/_app/immutable/chunks/DWoqp3ac.js +1 -0
  278. package/build/_app/immutable/chunks/DWoqp3ac.js.br +0 -0
  279. package/build/_app/immutable/chunks/DWoqp3ac.js.gz +0 -0
  280. package/build/_app/immutable/chunks/DZFCIeNp.js +1 -0
  281. package/build/_app/immutable/chunks/DZFCIeNp.js.br +0 -0
  282. package/build/_app/immutable/chunks/DZFCIeNp.js.gz +0 -0
  283. package/build/_app/immutable/chunks/D_Lu-MrJ.js +1 -0
  284. package/build/_app/immutable/chunks/D_Lu-MrJ.js.br +0 -0
  285. package/build/_app/immutable/chunks/D_Lu-MrJ.js.gz +0 -0
  286. package/build/_app/immutable/chunks/D_MTg6YY.js +1 -0
  287. package/build/_app/immutable/chunks/D_MTg6YY.js.br +0 -0
  288. package/build/_app/immutable/chunks/D_MTg6YY.js.gz +0 -0
  289. package/build/_app/immutable/chunks/DauUninz.js +1 -0
  290. package/build/_app/immutable/chunks/DauUninz.js.br +0 -0
  291. package/build/_app/immutable/chunks/DauUninz.js.gz +0 -0
  292. package/build/_app/immutable/chunks/DbInun42.js +1 -0
  293. package/build/_app/immutable/chunks/DbInun42.js.br +0 -0
  294. package/build/_app/immutable/chunks/DbInun42.js.gz +0 -0
  295. package/build/_app/immutable/chunks/DbZCwjKq.js +4 -0
  296. package/build/_app/immutable/chunks/DbZCwjKq.js.br +0 -0
  297. package/build/_app/immutable/chunks/DbZCwjKq.js.gz +0 -0
  298. package/build/_app/immutable/chunks/DdL9SqIa.js +1 -0
  299. package/build/_app/immutable/chunks/DdL9SqIa.js.br +0 -0
  300. package/build/_app/immutable/chunks/DdL9SqIa.js.gz +0 -0
  301. package/build/_app/immutable/chunks/De2hgUGE.js +1 -0
  302. package/build/_app/immutable/chunks/De2hgUGE.js.br +0 -0
  303. package/build/_app/immutable/chunks/De2hgUGE.js.gz +0 -0
  304. package/build/_app/immutable/chunks/DezsRK8O.js +1 -0
  305. package/build/_app/immutable/chunks/DezsRK8O.js.br +0 -0
  306. package/build/_app/immutable/chunks/DezsRK8O.js.gz +0 -0
  307. package/build/_app/immutable/chunks/DjxKCxwY.js +1 -0
  308. package/build/_app/immutable/chunks/DjxKCxwY.js.br +0 -0
  309. package/build/_app/immutable/chunks/DjxKCxwY.js.gz +0 -0
  310. package/build/_app/immutable/chunks/DkJi5BM4.js +1 -0
  311. package/build/_app/immutable/chunks/DkJi5BM4.js.br +0 -0
  312. package/build/_app/immutable/chunks/DkJi5BM4.js.gz +0 -0
  313. package/build/_app/immutable/chunks/DkqhCAOL.js +1 -0
  314. package/build/_app/immutable/chunks/DkqhCAOL.js.br +0 -0
  315. package/build/_app/immutable/chunks/DkqhCAOL.js.gz +0 -0
  316. package/build/_app/immutable/chunks/DmHpPYUd.js +1 -0
  317. package/build/_app/immutable/chunks/DmHpPYUd.js.br +0 -0
  318. package/build/_app/immutable/chunks/DmHpPYUd.js.gz +0 -0
  319. package/build/_app/immutable/chunks/Dne1wF_T.js +1 -0
  320. package/build/_app/immutable/chunks/Dne1wF_T.js.br +0 -0
  321. package/build/_app/immutable/chunks/Dne1wF_T.js.gz +0 -0
  322. package/build/_app/immutable/chunks/DoM_ZOrs.js +1 -0
  323. package/build/_app/immutable/chunks/DoM_ZOrs.js.br +2 -0
  324. package/build/_app/immutable/chunks/DoM_ZOrs.js.gz +0 -0
  325. package/build/_app/immutable/chunks/DpFanUEy.js +298 -0
  326. package/build/_app/immutable/chunks/DpFanUEy.js.br +0 -0
  327. package/build/_app/immutable/chunks/DpFanUEy.js.gz +0 -0
  328. package/build/_app/immutable/chunks/DrH0SRf2.js +1 -0
  329. package/build/_app/immutable/chunks/DrH0SRf2.js.br +0 -0
  330. package/build/_app/immutable/chunks/DrH0SRf2.js.gz +0 -0
  331. package/build/_app/immutable/chunks/Dt-HX3Vu.js +1 -0
  332. package/build/_app/immutable/chunks/Dt-HX3Vu.js.br +0 -0
  333. package/build/_app/immutable/chunks/Dt-HX3Vu.js.gz +0 -0
  334. package/build/_app/immutable/chunks/Dt1k81ic.js +1 -0
  335. package/build/_app/immutable/chunks/Dt1k81ic.js.br +0 -0
  336. package/build/_app/immutable/chunks/Dt1k81ic.js.gz +0 -0
  337. package/build/_app/immutable/chunks/DugeGFnl.js +4 -0
  338. package/build/_app/immutable/chunks/DugeGFnl.js.br +0 -0
  339. package/build/_app/immutable/chunks/DugeGFnl.js.gz +0 -0
  340. package/build/_app/immutable/chunks/DxhPVHKV.js +1 -0
  341. package/build/_app/immutable/chunks/DxhPVHKV.js.br +1 -0
  342. package/build/_app/immutable/chunks/DxhPVHKV.js.gz +0 -0
  343. package/build/_app/immutable/chunks/FvmIjYaQ.js +1 -0
  344. package/build/_app/immutable/chunks/FvmIjYaQ.js.br +0 -0
  345. package/build/_app/immutable/chunks/FvmIjYaQ.js.gz +0 -0
  346. package/build/_app/immutable/chunks/HclGiUj8.js +1 -0
  347. package/build/_app/immutable/chunks/HclGiUj8.js.br +0 -0
  348. package/build/_app/immutable/chunks/HclGiUj8.js.gz +0 -0
  349. package/build/_app/immutable/chunks/MIEISUXS.js +64 -0
  350. package/build/_app/immutable/chunks/MIEISUXS.js.br +0 -0
  351. package/build/_app/immutable/chunks/MIEISUXS.js.gz +0 -0
  352. package/build/_app/immutable/chunks/NEE52Syq.js +1 -0
  353. package/build/_app/immutable/chunks/NEE52Syq.js.br +0 -0
  354. package/build/_app/immutable/chunks/NEE52Syq.js.gz +0 -0
  355. package/build/_app/immutable/chunks/SOo6toE5.js +1 -0
  356. package/build/_app/immutable/chunks/SOo6toE5.js.br +0 -0
  357. package/build/_app/immutable/chunks/SOo6toE5.js.gz +0 -0
  358. package/build/_app/immutable/chunks/UZ6smZpJ.js +1 -0
  359. package/build/_app/immutable/chunks/UZ6smZpJ.js.br +0 -0
  360. package/build/_app/immutable/chunks/UZ6smZpJ.js.gz +0 -0
  361. package/build/_app/immutable/chunks/Vn-6xHGu.js +1 -0
  362. package/build/_app/immutable/chunks/Vn-6xHGu.js.br +0 -0
  363. package/build/_app/immutable/chunks/Vn-6xHGu.js.gz +0 -0
  364. package/build/_app/immutable/chunks/Xth-LXaZ.js +1 -0
  365. package/build/_app/immutable/chunks/Xth-LXaZ.js.br +0 -0
  366. package/build/_app/immutable/chunks/Xth-LXaZ.js.gz +0 -0
  367. package/build/_app/immutable/chunks/Z5eAx3Zn.js +1 -0
  368. package/build/_app/immutable/chunks/Z5eAx3Zn.js.br +0 -0
  369. package/build/_app/immutable/chunks/Z5eAx3Zn.js.gz +0 -0
  370. package/build/_app/immutable/chunks/bTuwJoIa.js +1 -0
  371. package/build/_app/immutable/chunks/bTuwJoIa.js.br +0 -0
  372. package/build/_app/immutable/chunks/bTuwJoIa.js.gz +0 -0
  373. package/build/_app/immutable/chunks/fmXr3nnJ.js +1 -0
  374. package/build/_app/immutable/chunks/fmXr3nnJ.js.br +0 -0
  375. package/build/_app/immutable/chunks/fmXr3nnJ.js.gz +0 -0
  376. package/build/_app/immutable/chunks/gp-XZpBa.js +3 -0
  377. package/build/_app/immutable/chunks/gp-XZpBa.js.br +0 -0
  378. package/build/_app/immutable/chunks/gp-XZpBa.js.gz +0 -0
  379. package/build/_app/immutable/chunks/hePW80VL.js +1 -0
  380. package/build/_app/immutable/chunks/hePW80VL.js.br +0 -0
  381. package/build/_app/immutable/chunks/hePW80VL.js.gz +0 -0
  382. package/build/_app/immutable/chunks/i0X4ZdIN.js +1 -0
  383. package/build/_app/immutable/chunks/i0X4ZdIN.js.br +0 -0
  384. package/build/_app/immutable/chunks/i0X4ZdIN.js.gz +0 -0
  385. package/build/_app/immutable/chunks/krcqaNpB.js +11 -0
  386. package/build/_app/immutable/chunks/krcqaNpB.js.br +0 -0
  387. package/build/_app/immutable/chunks/krcqaNpB.js.gz +0 -0
  388. package/build/_app/immutable/chunks/nr791fC2.js +1 -0
  389. package/build/_app/immutable/chunks/nr791fC2.js.br +0 -0
  390. package/build/_app/immutable/chunks/nr791fC2.js.gz +0 -0
  391. package/build/_app/immutable/chunks/oarl--hZ.js +1 -0
  392. package/build/_app/immutable/chunks/oarl--hZ.js.br +0 -0
  393. package/build/_app/immutable/chunks/oarl--hZ.js.gz +0 -0
  394. package/build/_app/immutable/chunks/onAF5SnQ.js +1 -0
  395. package/build/_app/immutable/chunks/onAF5SnQ.js.br +0 -0
  396. package/build/_app/immutable/chunks/onAF5SnQ.js.gz +0 -0
  397. package/build/_app/immutable/chunks/oz_6vUea.js +1 -0
  398. package/build/_app/immutable/chunks/oz_6vUea.js.br +0 -0
  399. package/build/_app/immutable/chunks/oz_6vUea.js.gz +0 -0
  400. package/build/_app/immutable/chunks/sBoK_t0W.js +1 -0
  401. package/build/_app/immutable/chunks/sBoK_t0W.js.br +3 -0
  402. package/build/_app/immutable/chunks/sBoK_t0W.js.gz +0 -0
  403. package/build/_app/immutable/chunks/xihTtKlq.js +1 -0
  404. package/build/_app/immutable/chunks/xihTtKlq.js.br +1 -0
  405. package/build/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  406. package/build/_app/immutable/entry/app.B73YVKlJ.js +2 -0
  407. package/build/_app/immutable/entry/app.B73YVKlJ.js.br +0 -0
  408. package/build/_app/immutable/entry/app.B73YVKlJ.js.gz +0 -0
  409. package/build/_app/immutable/entry/start.59SUcW9F.js +1 -0
  410. package/build/_app/immutable/entry/start.59SUcW9F.js.br +0 -0
  411. package/build/_app/immutable/entry/start.59SUcW9F.js.gz +0 -0
  412. package/build/_app/immutable/nodes/0.CRuATwoa.js +3 -0
  413. package/build/_app/immutable/nodes/0.CRuATwoa.js.br +0 -0
  414. package/build/_app/immutable/nodes/0.CRuATwoa.js.gz +0 -0
  415. package/build/_app/immutable/nodes/1.BwTYt1ri.js +1 -0
  416. package/build/_app/immutable/nodes/1.BwTYt1ri.js.br +1 -0
  417. package/build/_app/immutable/nodes/1.BwTYt1ri.js.gz +0 -0
  418. package/build/_app/immutable/nodes/10.DuLkI7IT.js +1 -0
  419. package/build/_app/immutable/nodes/10.DuLkI7IT.js.br +0 -0
  420. package/build/_app/immutable/nodes/10.DuLkI7IT.js.gz +0 -0
  421. package/build/_app/immutable/nodes/11.CvQx4qsQ.js +1 -0
  422. package/build/_app/immutable/nodes/11.CvQx4qsQ.js.br +0 -0
  423. package/build/_app/immutable/nodes/11.CvQx4qsQ.js.gz +0 -0
  424. package/build/_app/immutable/nodes/12.DexCpvoJ.js +1 -0
  425. package/build/_app/immutable/nodes/12.DexCpvoJ.js.br +2 -0
  426. package/build/_app/immutable/nodes/12.DexCpvoJ.js.gz +0 -0
  427. package/build/_app/immutable/nodes/13.d5wmZHtI.js +1 -0
  428. package/build/_app/immutable/nodes/13.d5wmZHtI.js.br +0 -0
  429. package/build/_app/immutable/nodes/13.d5wmZHtI.js.gz +0 -0
  430. package/build/_app/immutable/nodes/14.DSu8i_qz.js +1 -0
  431. package/build/_app/immutable/nodes/14.DSu8i_qz.js.br +0 -0
  432. package/build/_app/immutable/nodes/14.DSu8i_qz.js.gz +0 -0
  433. package/build/_app/immutable/nodes/15.DpmLozh7.js +1 -0
  434. package/build/_app/immutable/nodes/15.DpmLozh7.js.br +0 -0
  435. package/build/_app/immutable/nodes/15.DpmLozh7.js.gz +0 -0
  436. package/build/_app/immutable/nodes/16.CyAJjPYI.js +3 -0
  437. package/build/_app/immutable/nodes/16.CyAJjPYI.js.br +0 -0
  438. package/build/_app/immutable/nodes/16.CyAJjPYI.js.gz +0 -0
  439. package/build/_app/immutable/nodes/17.BW7FjO0Q.js +10 -0
  440. package/build/_app/immutable/nodes/17.BW7FjO0Q.js.br +0 -0
  441. package/build/_app/immutable/nodes/17.BW7FjO0Q.js.gz +0 -0
  442. package/build/_app/immutable/nodes/2.Dzsy2J7Q.js +35 -0
  443. package/build/_app/immutable/nodes/2.Dzsy2J7Q.js.br +0 -0
  444. package/build/_app/immutable/nodes/2.Dzsy2J7Q.js.gz +0 -0
  445. package/build/_app/immutable/nodes/3.Cu2n_SuU.js +1 -0
  446. package/build/_app/immutable/nodes/3.Cu2n_SuU.js.br +0 -0
  447. package/build/_app/immutable/nodes/3.Cu2n_SuU.js.gz +0 -0
  448. package/build/_app/immutable/nodes/4.DfbxAWaw.js +1 -0
  449. package/build/_app/immutable/nodes/4.DfbxAWaw.js.br +0 -0
  450. package/build/_app/immutable/nodes/4.DfbxAWaw.js.gz +0 -0
  451. package/build/_app/immutable/nodes/5.B1H9pyMk.js +1 -0
  452. package/build/_app/immutable/nodes/5.B1H9pyMk.js.br +0 -0
  453. package/build/_app/immutable/nodes/5.B1H9pyMk.js.gz +0 -0
  454. package/build/_app/immutable/nodes/6.Bq16_9w3.js +1 -0
  455. package/build/_app/immutable/nodes/6.Bq16_9w3.js.br +0 -0
  456. package/build/_app/immutable/nodes/6.Bq16_9w3.js.gz +0 -0
  457. package/build/_app/immutable/nodes/7.ans9TEie.js +1 -0
  458. package/build/_app/immutable/nodes/7.ans9TEie.js.br +0 -0
  459. package/build/_app/immutable/nodes/7.ans9TEie.js.gz +0 -0
  460. package/build/_app/immutable/nodes/8.BCatMgwB.js +2 -0
  461. package/build/_app/immutable/nodes/8.BCatMgwB.js.br +0 -0
  462. package/build/_app/immutable/nodes/8.BCatMgwB.js.gz +0 -0
  463. package/build/_app/immutable/nodes/9.C2W2D2GW.js +24 -0
  464. package/build/_app/immutable/nodes/9.C2W2D2GW.js.br +0 -0
  465. package/build/_app/immutable/nodes/9.C2W2D2GW.js.gz +0 -0
  466. package/build/_app/immutable/workers/css.worker-D61Wlo1y.js +88 -0
  467. package/build/_app/immutable/workers/css.worker-D61Wlo1y.js.br +0 -0
  468. package/build/_app/immutable/workers/css.worker-D61Wlo1y.js.gz +0 -0
  469. package/build/_app/immutable/workers/editor.worker-BaAK1IVA.js +12 -0
  470. package/build/_app/immutable/workers/editor.worker-BaAK1IVA.js.br +0 -0
  471. package/build/_app/immutable/workers/editor.worker-BaAK1IVA.js.gz +0 -0
  472. package/build/_app/immutable/workers/html.worker-i4ABlmR0.js +495 -0
  473. package/build/_app/immutable/workers/html.worker-i4ABlmR0.js.br +0 -0
  474. package/build/_app/immutable/workers/html.worker-i4ABlmR0.js.gz +0 -0
  475. package/build/_app/immutable/workers/json.worker-C-kBQgxp.js +51 -0
  476. package/build/_app/immutable/workers/json.worker-C-kBQgxp.js.br +0 -0
  477. package/build/_app/immutable/workers/json.worker-C-kBQgxp.js.gz +0 -0
  478. package/build/_app/immutable/workers/ts.worker-KJ4wGYue.js +51339 -0
  479. package/build/_app/immutable/workers/ts.worker-KJ4wGYue.js.br +0 -0
  480. package/build/_app/immutable/workers/ts.worker-KJ4wGYue.js.gz +0 -0
  481. package/build/_app/version.json +1 -0
  482. package/build/_app/version.json.br +0 -0
  483. package/build/_app/version.json.gz +0 -0
  484. package/build/index.html +43 -0
  485. package/build/index.html.br +4 -0
  486. package/build/index.html.gz +0 -0
  487. package/dist/index.js +4888 -0
  488. package/dist/index.js.map +7 -0
  489. package/dist/types/backend/config/router.d.ts +16 -0
  490. package/dist/types/backend/index.d.ts +9 -0
  491. package/dist/types/backend/lib/agent-registry.d.ts +20 -0
  492. package/dist/types/backend/lib/apply-v4a-diff.d.ts +6 -0
  493. package/dist/types/backend/lib/bosun-context.d.ts +19 -0
  494. package/dist/types/backend/lib/decode-html-entities.d.ts +7 -0
  495. package/dist/types/backend/lib/options.d.ts +51 -0
  496. package/dist/types/backend/lib/trpc-context.d.ts +5 -0
  497. package/dist/types/backend/lib/voice-agent-lifecycle.d.ts +2 -0
  498. package/dist/types/backend/prompt-cache.d.ts +17 -0
  499. package/dist/types/backend/roleplay/agent-introspection.d.ts +29 -0
  500. package/dist/types/backend/roleplay/conversation-store.d.ts +23 -0
  501. package/dist/types/backend/roleplay/conversations-router.d.ts +59 -0
  502. package/dist/types/backend/roleplay/logger.d.ts +7 -0
  503. package/dist/types/backend/roleplay/prompt-edit-progress.d.ts +11 -0
  504. package/dist/types/backend/roleplay/prompt-edit-proposals.d.ts +23 -0
  505. package/dist/types/backend/roleplay/prompt-file.d.ts +8 -0
  506. package/dist/types/backend/roleplay/router.d.ts +191 -0
  507. package/dist/types/backend/roleplay/run-turn.d.ts +17 -0
  508. package/dist/types/backend/roleplay/scheduler.d.ts +20 -0
  509. package/dist/types/backend/roleplay/step-registry.d.ts +7 -0
  510. package/dist/types/backend/roleplay/suggest-file-edit.d.ts +13 -0
  511. package/dist/types/backend/roleplay/suggest-prompt-edit.d.ts +11 -0
  512. package/dist/types/backend/roleplay/suggest-test-fix.d.ts +29 -0
  513. package/dist/types/backend/roleplay/trace-serialization.d.ts +1 -0
  514. package/dist/types/backend/roleplay/variants.d.ts +18 -0
  515. package/dist/types/backend/roleplay/ws-server.d.ts +3 -0
  516. package/dist/types/backend/server.d.ts +865 -0
  517. package/dist/types/backend/telescope/router.d.ts +184 -0
  518. package/dist/types/backend/telescope/sources.d.ts +18 -0
  519. package/dist/types/backend/tests/academy.d.ts +112 -0
  520. package/dist/types/backend/tests/active-test-runs.d.ts +12 -0
  521. package/dist/types/backend/tests/analyze.d.ts +42 -0
  522. package/dist/types/backend/tests/best-effort-log-writer.d.ts +5 -0
  523. package/dist/types/backend/tests/context-utils.d.ts +2 -0
  524. package/dist/types/backend/tests/data.d.ts +95 -0
  525. package/dist/types/backend/tests/emulate-agents.d.ts +21 -0
  526. package/dist/types/backend/tests/json-field-match.d.ts +5 -0
  527. package/dist/types/backend/tests/pii-sanitized-test-drafts.d.ts +47 -0
  528. package/dist/types/backend/tests/pii-sanitizer.d.ts +61 -0
  529. package/dist/types/backend/tests/prompt-issues.d.ts +19 -0
  530. package/dist/types/backend/tests/promptfoo-runtime.d.ts +13 -0
  531. package/dist/types/backend/tests/report-files.d.ts +7 -0
  532. package/dist/types/backend/tests/router.d.ts +411 -0
  533. package/dist/types/backend/tests/suggest-test-history-edit.d.ts +21 -0
  534. package/dist/types/backend/tests/suite.d.ts +69 -0
  535. package/dist/types/backend/tests/test-edit-source.d.ts +4 -0
  536. package/dist/types/backend/tests/test-history-edit-proposals.d.ts +24 -0
  537. package/dist/types/lib/api-telescope/types.d.ts +280 -0
  538. package/dist/types/lib/conversation.d.ts +33 -0
  539. package/dist/types/lib/edit/test-ai-edit.d.ts +12 -0
  540. package/dist/types/lib/steps.d.ts +14 -0
  541. package/dist/types/lib/tests/assertion-types.d.ts +6 -0
  542. package/dist/types/lib/tests/pii-sanitized-test-draft.d.ts +52 -0
  543. package/dist/types/lib/ws-message.d.ts +41 -0
  544. package/package.json +50 -50
  545. package/.svelte-kit/tsconfig.json +0 -59
  546. package/bin/bosun.js +0 -319
  547. package/build/client/_app/immutable/assets/0.B4Hv80zl.css +0 -1
  548. package/build/client/_app/immutable/assets/0.B4Hv80zl.css.br +0 -0
  549. package/build/client/_app/immutable/assets/0.B4Hv80zl.css.gz +0 -0
  550. package/build/client/_app/immutable/assets/10.DIVePEYf.css +0 -1
  551. package/build/client/_app/immutable/assets/10.DIVePEYf.css.br +0 -0
  552. package/build/client/_app/immutable/assets/10.DIVePEYf.css.gz +0 -0
  553. package/build/client/_app/immutable/assets/18.C5apk4jm.css +0 -1
  554. package/build/client/_app/immutable/assets/18.C5apk4jm.css.br +0 -0
  555. package/build/client/_app/immutable/assets/18.C5apk4jm.css.gz +0 -0
  556. package/build/client/_app/immutable/assets/2.Bc0Sf3YD.css +0 -1
  557. package/build/client/_app/immutable/assets/2.Bc0Sf3YD.css.br +0 -0
  558. package/build/client/_app/immutable/assets/2.Bc0Sf3YD.css.gz +0 -0
  559. package/build/client/_app/immutable/assets/3.Dzh7_Q8n.css +0 -1
  560. package/build/client/_app/immutable/assets/3.Dzh7_Q8n.css.br +0 -0
  561. package/build/client/_app/immutable/assets/3.Dzh7_Q8n.css.gz +0 -0
  562. package/build/client/_app/immutable/assets/5.CZVw96CJ.css +0 -1
  563. package/build/client/_app/immutable/assets/5.CZVw96CJ.css.br +0 -0
  564. package/build/client/_app/immutable/assets/5.CZVw96CJ.css.gz +0 -0
  565. package/build/client/_app/immutable/assets/9.DlSPCZj0.css +0 -1
  566. package/build/client/_app/immutable/assets/9.DlSPCZj0.css.br +0 -0
  567. package/build/client/_app/immutable/assets/9.DlSPCZj0.css.gz +0 -0
  568. package/build/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css +0 -1
  569. package/build/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css.br +0 -0
  570. package/build/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css.gz +0 -0
  571. package/build/client/_app/immutable/assets/Input.CJ8KyccG.css +0 -1
  572. package/build/client/_app/immutable/assets/Input.CJ8KyccG.css.br +0 -0
  573. package/build/client/_app/immutable/assets/Input.CJ8KyccG.css.gz +0 -0
  574. package/build/client/_app/immutable/assets/Modal.iiWNRlR-.css +0 -1
  575. package/build/client/_app/immutable/assets/Modal.iiWNRlR-.css.br +0 -0
  576. package/build/client/_app/immutable/assets/Modal.iiWNRlR-.css.gz +0 -0
  577. package/build/client/_app/immutable/assets/Popper.CLTyHc88.css +0 -1
  578. package/build/client/_app/immutable/assets/Popper.CLTyHc88.css.br +0 -0
  579. package/build/client/_app/immutable/assets/Popper.CLTyHc88.css.gz +0 -0
  580. package/build/client/_app/immutable/assets/Tab.DlCfjMY1.css +0 -1
  581. package/build/client/_app/immutable/assets/Tab.DlCfjMY1.css.br +0 -0
  582. package/build/client/_app/immutable/assets/Tab.DlCfjMY1.css.gz +0 -0
  583. package/build/client/_app/immutable/assets/chat-content.Cabnnfyv.css +0 -1
  584. package/build/client/_app/immutable/assets/chat-content.Cabnnfyv.css.br +0 -0
  585. package/build/client/_app/immutable/assets/chat-content.Cabnnfyv.css.gz +0 -0
  586. package/build/client/_app/immutable/assets/editor.BMIWPGx3.css +0 -1
  587. package/build/client/_app/immutable/assets/editor.BMIWPGx3.css.br +0 -0
  588. package/build/client/_app/immutable/assets/editor.BMIWPGx3.css.gz +0 -0
  589. package/build/client/_app/immutable/chunks/0cvrggvQ.js +0 -6
  590. package/build/client/_app/immutable/chunks/0cvrggvQ.js.br +0 -0
  591. package/build/client/_app/immutable/chunks/0cvrggvQ.js.gz +0 -0
  592. package/build/client/_app/immutable/chunks/25W9uPmb.js +0 -6
  593. package/build/client/_app/immutable/chunks/25W9uPmb.js.br +0 -0
  594. package/build/client/_app/immutable/chunks/25W9uPmb.js.gz +0 -0
  595. package/build/client/_app/immutable/chunks/4Ik7cdeQ.js +0 -8
  596. package/build/client/_app/immutable/chunks/4Ik7cdeQ.js.br +0 -0
  597. package/build/client/_app/immutable/chunks/4Ik7cdeQ.js.gz +0 -0
  598. package/build/client/_app/immutable/chunks/5Rap-vPy.js +0 -6
  599. package/build/client/_app/immutable/chunks/5Rap-vPy.js.br +0 -3
  600. package/build/client/_app/immutable/chunks/5Rap-vPy.js.gz +0 -0
  601. package/build/client/_app/immutable/chunks/A4HgFSOM.js +0 -1
  602. package/build/client/_app/immutable/chunks/A4HgFSOM.js.br +0 -2
  603. package/build/client/_app/immutable/chunks/A4HgFSOM.js.gz +0 -0
  604. package/build/client/_app/immutable/chunks/B00B3Gwh.js +0 -1
  605. package/build/client/_app/immutable/chunks/B00B3Gwh.js.br +0 -0
  606. package/build/client/_app/immutable/chunks/B00B3Gwh.js.gz +0 -0
  607. package/build/client/_app/immutable/chunks/B03wrqEc.js +0 -6
  608. package/build/client/_app/immutable/chunks/B03wrqEc.js.br +0 -0
  609. package/build/client/_app/immutable/chunks/B03wrqEc.js.gz +0 -0
  610. package/build/client/_app/immutable/chunks/B43-lfXY.js +0 -1
  611. package/build/client/_app/immutable/chunks/B43-lfXY.js.br +0 -0
  612. package/build/client/_app/immutable/chunks/B43-lfXY.js.gz +0 -0
  613. package/build/client/_app/immutable/chunks/B4tOnDzM.js +0 -1
  614. package/build/client/_app/immutable/chunks/B4tOnDzM.js.br +0 -2
  615. package/build/client/_app/immutable/chunks/B4tOnDzM.js.gz +0 -0
  616. package/build/client/_app/immutable/chunks/B5zXfXm9.js +0 -6
  617. package/build/client/_app/immutable/chunks/B5zXfXm9.js.br +0 -0
  618. package/build/client/_app/immutable/chunks/B5zXfXm9.js.gz +0 -0
  619. package/build/client/_app/immutable/chunks/B9Xyijhd.js +0 -6
  620. package/build/client/_app/immutable/chunks/B9Xyijhd.js.br +0 -0
  621. package/build/client/_app/immutable/chunks/B9Xyijhd.js.gz +0 -0
  622. package/build/client/_app/immutable/chunks/BDY0xZsU.js +0 -1
  623. package/build/client/_app/immutable/chunks/BDY0xZsU.js.br +0 -0
  624. package/build/client/_app/immutable/chunks/BDY0xZsU.js.gz +0 -0
  625. package/build/client/_app/immutable/chunks/BFG1Mk7z.js +0 -6
  626. package/build/client/_app/immutable/chunks/BFG1Mk7z.js.br +0 -0
  627. package/build/client/_app/immutable/chunks/BFG1Mk7z.js.gz +0 -0
  628. package/build/client/_app/immutable/chunks/BIv9DU6q.js +0 -303
  629. package/build/client/_app/immutable/chunks/BIv9DU6q.js.br +0 -0
  630. package/build/client/_app/immutable/chunks/BIv9DU6q.js.gz +0 -0
  631. package/build/client/_app/immutable/chunks/BIxSqfKT.js +0 -1
  632. package/build/client/_app/immutable/chunks/BIxSqfKT.js.br +0 -0
  633. package/build/client/_app/immutable/chunks/BIxSqfKT.js.gz +0 -0
  634. package/build/client/_app/immutable/chunks/BKlk5iyT.js +0 -6
  635. package/build/client/_app/immutable/chunks/BKlk5iyT.js.br +0 -0
  636. package/build/client/_app/immutable/chunks/BKlk5iyT.js.gz +0 -0
  637. package/build/client/_app/immutable/chunks/BMYSavKM.js +0 -6
  638. package/build/client/_app/immutable/chunks/BMYSavKM.js.br +0 -0
  639. package/build/client/_app/immutable/chunks/BMYSavKM.js.gz +0 -0
  640. package/build/client/_app/immutable/chunks/BQJs3N6E.js +0 -1
  641. package/build/client/_app/immutable/chunks/BQJs3N6E.js.br +0 -0
  642. package/build/client/_app/immutable/chunks/BQJs3N6E.js.gz +0 -0
  643. package/build/client/_app/immutable/chunks/BSkB5QuD.js +0 -6
  644. package/build/client/_app/immutable/chunks/BSkB5QuD.js.br +0 -0
  645. package/build/client/_app/immutable/chunks/BSkB5QuD.js.gz +0 -0
  646. package/build/client/_app/immutable/chunks/BXh99ZNk.js +0 -1
  647. package/build/client/_app/immutable/chunks/BXh99ZNk.js.br +0 -0
  648. package/build/client/_app/immutable/chunks/BXh99ZNk.js.gz +0 -0
  649. package/build/client/_app/immutable/chunks/BY8d35y9.js +0 -16
  650. package/build/client/_app/immutable/chunks/BY8d35y9.js.br +0 -0
  651. package/build/client/_app/immutable/chunks/BY8d35y9.js.gz +0 -0
  652. package/build/client/_app/immutable/chunks/B_RIpUuZ.js +0 -1
  653. package/build/client/_app/immutable/chunks/B_RIpUuZ.js.br +0 -0
  654. package/build/client/_app/immutable/chunks/B_RIpUuZ.js.gz +0 -0
  655. package/build/client/_app/immutable/chunks/B_c3zf-v.js +0 -6
  656. package/build/client/_app/immutable/chunks/B_c3zf-v.js.br +0 -0
  657. package/build/client/_app/immutable/chunks/B_c3zf-v.js.gz +0 -0
  658. package/build/client/_app/immutable/chunks/B_fMsGYe.js +0 -6
  659. package/build/client/_app/immutable/chunks/B_fMsGYe.js.br +0 -0
  660. package/build/client/_app/immutable/chunks/B_fMsGYe.js.gz +0 -0
  661. package/build/client/_app/immutable/chunks/BaJupSGV.js +0 -6
  662. package/build/client/_app/immutable/chunks/BaJupSGV.js.br +0 -0
  663. package/build/client/_app/immutable/chunks/BaJupSGV.js.gz +0 -0
  664. package/build/client/_app/immutable/chunks/BaLxmfj-.js +0 -6
  665. package/build/client/_app/immutable/chunks/BaLxmfj-.js.br +0 -0
  666. package/build/client/_app/immutable/chunks/BaLxmfj-.js.gz +0 -0
  667. package/build/client/_app/immutable/chunks/Bc-ZgV77.js +0 -6
  668. package/build/client/_app/immutable/chunks/Bc-ZgV77.js.br +0 -0
  669. package/build/client/_app/immutable/chunks/Bc-ZgV77.js.gz +0 -0
  670. package/build/client/_app/immutable/chunks/Bd-a6hgR.js +0 -1
  671. package/build/client/_app/immutable/chunks/Bd-a6hgR.js.br +0 -0
  672. package/build/client/_app/immutable/chunks/Bd-a6hgR.js.gz +0 -0
  673. package/build/client/_app/immutable/chunks/BfEKNvv3.js +0 -7
  674. package/build/client/_app/immutable/chunks/BfEKNvv3.js.br +0 -0
  675. package/build/client/_app/immutable/chunks/BfEKNvv3.js.gz +0 -0
  676. package/build/client/_app/immutable/chunks/BftRRaUE.js +0 -1
  677. package/build/client/_app/immutable/chunks/BftRRaUE.js.br +0 -0
  678. package/build/client/_app/immutable/chunks/BftRRaUE.js.gz +0 -0
  679. package/build/client/_app/immutable/chunks/Bhzvs7bI.js +0 -6
  680. package/build/client/_app/immutable/chunks/Bhzvs7bI.js.br +0 -0
  681. package/build/client/_app/immutable/chunks/Bhzvs7bI.js.gz +0 -0
  682. package/build/client/_app/immutable/chunks/Bio4gycK.js +0 -6
  683. package/build/client/_app/immutable/chunks/Bio4gycK.js.br +0 -0
  684. package/build/client/_app/immutable/chunks/Bio4gycK.js.gz +0 -0
  685. package/build/client/_app/immutable/chunks/Bm4FdRXc.js +0 -1
  686. package/build/client/_app/immutable/chunks/Bm4FdRXc.js.br +0 -0
  687. package/build/client/_app/immutable/chunks/Bm4FdRXc.js.gz +0 -0
  688. package/build/client/_app/immutable/chunks/BmdpEiKy.js +0 -2
  689. package/build/client/_app/immutable/chunks/BmdpEiKy.js.br +0 -0
  690. package/build/client/_app/immutable/chunks/BmdpEiKy.js.gz +0 -0
  691. package/build/client/_app/immutable/chunks/BoFRg7Ot.js +0 -6
  692. package/build/client/_app/immutable/chunks/BoFRg7Ot.js.br +0 -0
  693. package/build/client/_app/immutable/chunks/BoFRg7Ot.js.gz +0 -0
  694. package/build/client/_app/immutable/chunks/Bqgm2twL.js +0 -6
  695. package/build/client/_app/immutable/chunks/Bqgm2twL.js.br +0 -0
  696. package/build/client/_app/immutable/chunks/Bqgm2twL.js.gz +0 -0
  697. package/build/client/_app/immutable/chunks/BrgZPUOV.js +0 -6
  698. package/build/client/_app/immutable/chunks/BrgZPUOV.js.br +0 -0
  699. package/build/client/_app/immutable/chunks/BrgZPUOV.js.gz +0 -0
  700. package/build/client/_app/immutable/chunks/BsTHnhdd.js +0 -7
  701. package/build/client/_app/immutable/chunks/BsTHnhdd.js.br +0 -0
  702. package/build/client/_app/immutable/chunks/BsTHnhdd.js.gz +0 -0
  703. package/build/client/_app/immutable/chunks/BxZ1WgZm.js +0 -1
  704. package/build/client/_app/immutable/chunks/BxZ1WgZm.js.br +0 -0
  705. package/build/client/_app/immutable/chunks/BxZ1WgZm.js.gz +0 -0
  706. package/build/client/_app/immutable/chunks/C1FmrZbK.js +0 -1
  707. package/build/client/_app/immutable/chunks/C1FmrZbK.js.br +0 -0
  708. package/build/client/_app/immutable/chunks/C1FmrZbK.js.gz +0 -0
  709. package/build/client/_app/immutable/chunks/C4mbwMvt.js +0 -6
  710. package/build/client/_app/immutable/chunks/C4mbwMvt.js.br +0 -0
  711. package/build/client/_app/immutable/chunks/C4mbwMvt.js.gz +0 -0
  712. package/build/client/_app/immutable/chunks/C5WLch3f.js +0 -6
  713. package/build/client/_app/immutable/chunks/C5WLch3f.js.br +0 -0
  714. package/build/client/_app/immutable/chunks/C5WLch3f.js.gz +0 -0
  715. package/build/client/_app/immutable/chunks/C9LBPFJH.js +0 -1
  716. package/build/client/_app/immutable/chunks/C9LBPFJH.js.br +0 -0
  717. package/build/client/_app/immutable/chunks/C9LBPFJH.js.gz +0 -0
  718. package/build/client/_app/immutable/chunks/CAFoob5N.js +0 -6
  719. package/build/client/_app/immutable/chunks/CAFoob5N.js.br +0 -0
  720. package/build/client/_app/immutable/chunks/CAFoob5N.js.gz +0 -0
  721. package/build/client/_app/immutable/chunks/CCSDG5nI.js +0 -6
  722. package/build/client/_app/immutable/chunks/CCSDG5nI.js.br +0 -0
  723. package/build/client/_app/immutable/chunks/CCSDG5nI.js.gz +0 -0
  724. package/build/client/_app/immutable/chunks/CDGzqUPQ.js +0 -6
  725. package/build/client/_app/immutable/chunks/CDGzqUPQ.js.br +0 -0
  726. package/build/client/_app/immutable/chunks/CDGzqUPQ.js.gz +0 -0
  727. package/build/client/_app/immutable/chunks/CDntyWJ8.js +0 -6
  728. package/build/client/_app/immutable/chunks/CDntyWJ8.js.br +0 -0
  729. package/build/client/_app/immutable/chunks/CDntyWJ8.js.gz +0 -0
  730. package/build/client/_app/immutable/chunks/CFKIUWau.js +0 -6
  731. package/build/client/_app/immutable/chunks/CFKIUWau.js.br +0 -0
  732. package/build/client/_app/immutable/chunks/CFKIUWau.js.gz +0 -0
  733. package/build/client/_app/immutable/chunks/CFOPXBzS.js +0 -6
  734. package/build/client/_app/immutable/chunks/CFOPXBzS.js.br +0 -0
  735. package/build/client/_app/immutable/chunks/CFOPXBzS.js.gz +0 -0
  736. package/build/client/_app/immutable/chunks/CGinwM47.js +0 -8
  737. package/build/client/_app/immutable/chunks/CGinwM47.js.br +0 -0
  738. package/build/client/_app/immutable/chunks/CGinwM47.js.gz +0 -0
  739. package/build/client/_app/immutable/chunks/CH3XJDoO.js +0 -1
  740. package/build/client/_app/immutable/chunks/CH3XJDoO.js.br +0 -0
  741. package/build/client/_app/immutable/chunks/CH3XJDoO.js.gz +0 -0
  742. package/build/client/_app/immutable/chunks/CLLBncYj.js +0 -6
  743. package/build/client/_app/immutable/chunks/CLLBncYj.js.br +0 -0
  744. package/build/client/_app/immutable/chunks/CLLBncYj.js.gz +0 -0
  745. package/build/client/_app/immutable/chunks/COyEY5Pt.js +0 -7
  746. package/build/client/_app/immutable/chunks/COyEY5Pt.js.br +0 -0
  747. package/build/client/_app/immutable/chunks/COyEY5Pt.js.gz +0 -0
  748. package/build/client/_app/immutable/chunks/CPajHgWi.js +0 -6
  749. package/build/client/_app/immutable/chunks/CPajHgWi.js.br +0 -0
  750. package/build/client/_app/immutable/chunks/CPajHgWi.js.gz +0 -0
  751. package/build/client/_app/immutable/chunks/CVwtpugi.js +0 -6
  752. package/build/client/_app/immutable/chunks/CVwtpugi.js.br +0 -0
  753. package/build/client/_app/immutable/chunks/CVwtpugi.js.gz +0 -0
  754. package/build/client/_app/immutable/chunks/CWVkeRMt.js +0 -3
  755. package/build/client/_app/immutable/chunks/CWVkeRMt.js.br +0 -0
  756. package/build/client/_app/immutable/chunks/CWVkeRMt.js.gz +0 -0
  757. package/build/client/_app/immutable/chunks/CX-rkNHf.js +0 -6
  758. package/build/client/_app/immutable/chunks/CX-rkNHf.js.br +0 -0
  759. package/build/client/_app/immutable/chunks/CX-rkNHf.js.gz +0 -0
  760. package/build/client/_app/immutable/chunks/CXOwvkN_.js +0 -6
  761. package/build/client/_app/immutable/chunks/CXOwvkN_.js.br +0 -0
  762. package/build/client/_app/immutable/chunks/CXOwvkN_.js.gz +0 -0
  763. package/build/client/_app/immutable/chunks/CXfw8fai.js +0 -1
  764. package/build/client/_app/immutable/chunks/CXfw8fai.js.br +0 -2
  765. package/build/client/_app/immutable/chunks/CXfw8fai.js.gz +0 -0
  766. package/build/client/_app/immutable/chunks/CdQndTaG.js +0 -6
  767. package/build/client/_app/immutable/chunks/CdQndTaG.js.br +0 -0
  768. package/build/client/_app/immutable/chunks/CdQndTaG.js.gz +0 -0
  769. package/build/client/_app/immutable/chunks/Ce3n6wWz.js +0 -6
  770. package/build/client/_app/immutable/chunks/Ce3n6wWz.js.br +0 -0
  771. package/build/client/_app/immutable/chunks/Ce3n6wWz.js.gz +0 -0
  772. package/build/client/_app/immutable/chunks/Cg7bfA9N.js +0 -6
  773. package/build/client/_app/immutable/chunks/Cg7bfA9N.js.br +0 -0
  774. package/build/client/_app/immutable/chunks/Cg7bfA9N.js.gz +0 -0
  775. package/build/client/_app/immutable/chunks/Clfp4Zf_.js +0 -1
  776. package/build/client/_app/immutable/chunks/Clfp4Zf_.js.br +0 -0
  777. package/build/client/_app/immutable/chunks/Clfp4Zf_.js.gz +0 -0
  778. package/build/client/_app/immutable/chunks/Cp1zYvxS.js +0 -6
  779. package/build/client/_app/immutable/chunks/Cp1zYvxS.js.br +0 -0
  780. package/build/client/_app/immutable/chunks/Cp1zYvxS.js.gz +0 -0
  781. package/build/client/_app/immutable/chunks/CpIb_Oan.js +0 -6
  782. package/build/client/_app/immutable/chunks/CpIb_Oan.js.br +0 -0
  783. package/build/client/_app/immutable/chunks/CpIb_Oan.js.gz +0 -0
  784. package/build/client/_app/immutable/chunks/Cpb6xl2v.js +0 -6
  785. package/build/client/_app/immutable/chunks/Cpb6xl2v.js.br +0 -0
  786. package/build/client/_app/immutable/chunks/Cpb6xl2v.js.gz +0 -0
  787. package/build/client/_app/immutable/chunks/Cphgjts3.js +0 -6
  788. package/build/client/_app/immutable/chunks/Cphgjts3.js.br +0 -0
  789. package/build/client/_app/immutable/chunks/Cphgjts3.js.gz +0 -0
  790. package/build/client/_app/immutable/chunks/Cr5XqyuF.js +0 -1
  791. package/build/client/_app/immutable/chunks/Cr5XqyuF.js.br +0 -0
  792. package/build/client/_app/immutable/chunks/Cr5XqyuF.js.gz +0 -0
  793. package/build/client/_app/immutable/chunks/CrxwEwqu.js +0 -6
  794. package/build/client/_app/immutable/chunks/CrxwEwqu.js.br +0 -0
  795. package/build/client/_app/immutable/chunks/CrxwEwqu.js.gz +0 -0
  796. package/build/client/_app/immutable/chunks/CwNk8-XU.js +0 -6
  797. package/build/client/_app/immutable/chunks/CwNk8-XU.js.br +0 -0
  798. package/build/client/_app/immutable/chunks/CwNk8-XU.js.gz +0 -0
  799. package/build/client/_app/immutable/chunks/CwmAWymP.js +0 -6
  800. package/build/client/_app/immutable/chunks/CwmAWymP.js.br +0 -0
  801. package/build/client/_app/immutable/chunks/CwmAWymP.js.gz +0 -0
  802. package/build/client/_app/immutable/chunks/CxzD8Edk.js +0 -1
  803. package/build/client/_app/immutable/chunks/CxzD8Edk.js.br +0 -0
  804. package/build/client/_app/immutable/chunks/CxzD8Edk.js.gz +0 -0
  805. package/build/client/_app/immutable/chunks/CzKuDChf.js +0 -6
  806. package/build/client/_app/immutable/chunks/CzKuDChf.js.br +0 -0
  807. package/build/client/_app/immutable/chunks/CzKuDChf.js.gz +0 -0
  808. package/build/client/_app/immutable/chunks/D-MeaMDU.js +0 -6
  809. package/build/client/_app/immutable/chunks/D-MeaMDU.js.br +0 -0
  810. package/build/client/_app/immutable/chunks/D-MeaMDU.js.gz +0 -0
  811. package/build/client/_app/immutable/chunks/D3h14YRZ.js +0 -8
  812. package/build/client/_app/immutable/chunks/D3h14YRZ.js.br +0 -0
  813. package/build/client/_app/immutable/chunks/D3h14YRZ.js.gz +0 -0
  814. package/build/client/_app/immutable/chunks/D5C2fndG.js +0 -6
  815. package/build/client/_app/immutable/chunks/D5C2fndG.js.br +0 -0
  816. package/build/client/_app/immutable/chunks/D5C2fndG.js.gz +0 -0
  817. package/build/client/_app/immutable/chunks/D6iBTJD_.js +0 -1
  818. package/build/client/_app/immutable/chunks/D6iBTJD_.js.br +0 -0
  819. package/build/client/_app/immutable/chunks/D6iBTJD_.js.gz +0 -0
  820. package/build/client/_app/immutable/chunks/DB-s6wHX.js +0 -11
  821. package/build/client/_app/immutable/chunks/DB-s6wHX.js.br +0 -0
  822. package/build/client/_app/immutable/chunks/DB-s6wHX.js.gz +0 -0
  823. package/build/client/_app/immutable/chunks/DDMPVpvs.js +0 -6
  824. package/build/client/_app/immutable/chunks/DDMPVpvs.js.br +0 -0
  825. package/build/client/_app/immutable/chunks/DDMPVpvs.js.gz +0 -0
  826. package/build/client/_app/immutable/chunks/DDwshQtU.js +0 -6
  827. package/build/client/_app/immutable/chunks/DDwshQtU.js.br +0 -0
  828. package/build/client/_app/immutable/chunks/DDwshQtU.js.gz +0 -0
  829. package/build/client/_app/immutable/chunks/DHaeiCBh.js +0 -6
  830. package/build/client/_app/immutable/chunks/DHaeiCBh.js.br +0 -0
  831. package/build/client/_app/immutable/chunks/DHaeiCBh.js.gz +0 -0
  832. package/build/client/_app/immutable/chunks/DLQqXQ6R.js +0 -751
  833. package/build/client/_app/immutable/chunks/DLQqXQ6R.js.br +0 -0
  834. package/build/client/_app/immutable/chunks/DLQqXQ6R.js.gz +0 -0
  835. package/build/client/_app/immutable/chunks/DRIMs3uA.js +0 -6
  836. package/build/client/_app/immutable/chunks/DRIMs3uA.js.br +0 -0
  837. package/build/client/_app/immutable/chunks/DRIMs3uA.js.gz +0 -0
  838. package/build/client/_app/immutable/chunks/DSZPf7rp.js +0 -6
  839. package/build/client/_app/immutable/chunks/DSZPf7rp.js.br +0 -0
  840. package/build/client/_app/immutable/chunks/DSZPf7rp.js.gz +0 -0
  841. package/build/client/_app/immutable/chunks/DTECt2xU.js +0 -6
  842. package/build/client/_app/immutable/chunks/DTECt2xU.js.br +0 -0
  843. package/build/client/_app/immutable/chunks/DTECt2xU.js.gz +0 -0
  844. package/build/client/_app/immutable/chunks/DUeN9t8P.js +0 -6
  845. package/build/client/_app/immutable/chunks/DUeN9t8P.js.br +0 -0
  846. package/build/client/_app/immutable/chunks/DUeN9t8P.js.gz +0 -0
  847. package/build/client/_app/immutable/chunks/DWH0347h.js +0 -6
  848. package/build/client/_app/immutable/chunks/DWH0347h.js.br +0 -0
  849. package/build/client/_app/immutable/chunks/DWH0347h.js.gz +0 -0
  850. package/build/client/_app/immutable/chunks/DXyYeYxl.js +0 -6
  851. package/build/client/_app/immutable/chunks/DXyYeYxl.js.br +0 -0
  852. package/build/client/_app/immutable/chunks/DXyYeYxl.js.gz +0 -0
  853. package/build/client/_app/immutable/chunks/DZxMt77D.js +0 -6
  854. package/build/client/_app/immutable/chunks/DZxMt77D.js.br +0 -0
  855. package/build/client/_app/immutable/chunks/DZxMt77D.js.gz +0 -0
  856. package/build/client/_app/immutable/chunks/D_LCsjN0.js +0 -1
  857. package/build/client/_app/immutable/chunks/D_LCsjN0.js.br +0 -0
  858. package/build/client/_app/immutable/chunks/D_LCsjN0.js.gz +0 -0
  859. package/build/client/_app/immutable/chunks/Dd-8KgV2.js +0 -2
  860. package/build/client/_app/immutable/chunks/Dd-8KgV2.js.br +0 -0
  861. package/build/client/_app/immutable/chunks/Dd-8KgV2.js.gz +0 -0
  862. package/build/client/_app/immutable/chunks/Dd3NCNK9.js +0 -6
  863. package/build/client/_app/immutable/chunks/Dd3NCNK9.js.br +0 -0
  864. package/build/client/_app/immutable/chunks/Dd3NCNK9.js.gz +0 -0
  865. package/build/client/_app/immutable/chunks/DdmShlNz.js +0 -1
  866. package/build/client/_app/immutable/chunks/DdmShlNz.js.br +0 -0
  867. package/build/client/_app/immutable/chunks/DdmShlNz.js.gz +0 -0
  868. package/build/client/_app/immutable/chunks/Df5gZp_x.js +0 -1
  869. package/build/client/_app/immutable/chunks/Df5gZp_x.js.br +0 -0
  870. package/build/client/_app/immutable/chunks/Df5gZp_x.js.gz +0 -0
  871. package/build/client/_app/immutable/chunks/Dfg-7N3Z.js +0 -1
  872. package/build/client/_app/immutable/chunks/Dfg-7N3Z.js.br +0 -0
  873. package/build/client/_app/immutable/chunks/Dfg-7N3Z.js.gz +0 -0
  874. package/build/client/_app/immutable/chunks/DfzH4Xui.js +0 -6
  875. package/build/client/_app/immutable/chunks/DfzH4Xui.js.br +0 -0
  876. package/build/client/_app/immutable/chunks/DfzH4Xui.js.gz +0 -0
  877. package/build/client/_app/immutable/chunks/DgGeUDDh.js +0 -1
  878. package/build/client/_app/immutable/chunks/DgGeUDDh.js.br +0 -0
  879. package/build/client/_app/immutable/chunks/DgGeUDDh.js.gz +0 -0
  880. package/build/client/_app/immutable/chunks/DgyLZaXg.js +0 -6
  881. package/build/client/_app/immutable/chunks/DgyLZaXg.js.br +0 -0
  882. package/build/client/_app/immutable/chunks/DgyLZaXg.js.gz +0 -0
  883. package/build/client/_app/immutable/chunks/DjDhNM9l.js +0 -9
  884. package/build/client/_app/immutable/chunks/DjDhNM9l.js.br +0 -0
  885. package/build/client/_app/immutable/chunks/DjDhNM9l.js.gz +0 -0
  886. package/build/client/_app/immutable/chunks/DnHyzjbg.js +0 -6
  887. package/build/client/_app/immutable/chunks/DnHyzjbg.js.br +0 -0
  888. package/build/client/_app/immutable/chunks/DnHyzjbg.js.gz +0 -0
  889. package/build/client/_app/immutable/chunks/DnsnkygW.js +0 -33
  890. package/build/client/_app/immutable/chunks/DnsnkygW.js.br +0 -0
  891. package/build/client/_app/immutable/chunks/DnsnkygW.js.gz +0 -0
  892. package/build/client/_app/immutable/chunks/Do-VHn0U.js +0 -1
  893. package/build/client/_app/immutable/chunks/Do-VHn0U.js.br +0 -0
  894. package/build/client/_app/immutable/chunks/Do-VHn0U.js.gz +0 -0
  895. package/build/client/_app/immutable/chunks/DrQuvNYM.js +0 -6
  896. package/build/client/_app/immutable/chunks/DrQuvNYM.js.br +0 -0
  897. package/build/client/_app/immutable/chunks/DrQuvNYM.js.gz +0 -0
  898. package/build/client/_app/immutable/chunks/Drc7WvVn.js +0 -6
  899. package/build/client/_app/immutable/chunks/Drc7WvVn.js.br +0 -0
  900. package/build/client/_app/immutable/chunks/Drc7WvVn.js.gz +0 -0
  901. package/build/client/_app/immutable/chunks/DtC6KNFZ.js +0 -2
  902. package/build/client/_app/immutable/chunks/DtC6KNFZ.js.br +0 -0
  903. package/build/client/_app/immutable/chunks/DtC6KNFZ.js.gz +0 -0
  904. package/build/client/_app/immutable/chunks/DwJ7jVG9.js +0 -8
  905. package/build/client/_app/immutable/chunks/DwJ7jVG9.js.br +0 -0
  906. package/build/client/_app/immutable/chunks/DwJ7jVG9.js.gz +0 -0
  907. package/build/client/_app/immutable/chunks/DyP6w7ZV.js +0 -6
  908. package/build/client/_app/immutable/chunks/DyP6w7ZV.js.br +0 -0
  909. package/build/client/_app/immutable/chunks/DyP6w7ZV.js.gz +0 -0
  910. package/build/client/_app/immutable/chunks/LEDvCGy2.js +0 -1
  911. package/build/client/_app/immutable/chunks/LEDvCGy2.js.br +0 -0
  912. package/build/client/_app/immutable/chunks/LEDvCGy2.js.gz +0 -0
  913. package/build/client/_app/immutable/chunks/OA8UcISh.js +0 -1
  914. package/build/client/_app/immutable/chunks/OA8UcISh.js.br +0 -0
  915. package/build/client/_app/immutable/chunks/OA8UcISh.js.gz +0 -0
  916. package/build/client/_app/immutable/chunks/PrCSpCPg.js +0 -1
  917. package/build/client/_app/immutable/chunks/PrCSpCPg.js.br +0 -0
  918. package/build/client/_app/immutable/chunks/PrCSpCPg.js.gz +0 -0
  919. package/build/client/_app/immutable/chunks/Si6VyCMt.js +0 -8
  920. package/build/client/_app/immutable/chunks/Si6VyCMt.js.br +0 -0
  921. package/build/client/_app/immutable/chunks/Si6VyCMt.js.gz +0 -0
  922. package/build/client/_app/immutable/chunks/T0seCQS_.js +0 -1
  923. package/build/client/_app/immutable/chunks/T0seCQS_.js.br +0 -0
  924. package/build/client/_app/immutable/chunks/T0seCQS_.js.gz +0 -0
  925. package/build/client/_app/immutable/chunks/Tw7wswEv.js +0 -6
  926. package/build/client/_app/immutable/chunks/Tw7wswEv.js.br +0 -0
  927. package/build/client/_app/immutable/chunks/Tw7wswEv.js.gz +0 -0
  928. package/build/client/_app/immutable/chunks/W2LAs4ks.js +0 -2
  929. package/build/client/_app/immutable/chunks/W2LAs4ks.js.br +0 -0
  930. package/build/client/_app/immutable/chunks/W2LAs4ks.js.gz +0 -0
  931. package/build/client/_app/immutable/chunks/YWi4-JPR.js +0 -6
  932. package/build/client/_app/immutable/chunks/YWi4-JPR.js.br +0 -0
  933. package/build/client/_app/immutable/chunks/YWi4-JPR.js.gz +0 -0
  934. package/build/client/_app/immutable/chunks/ZGfwyPNq.js +0 -15
  935. package/build/client/_app/immutable/chunks/ZGfwyPNq.js.br +0 -0
  936. package/build/client/_app/immutable/chunks/ZGfwyPNq.js.gz +0 -0
  937. package/build/client/_app/immutable/chunks/Zznr-cwX.js +0 -6
  938. package/build/client/_app/immutable/chunks/Zznr-cwX.js.br +0 -0
  939. package/build/client/_app/immutable/chunks/Zznr-cwX.js.gz +0 -0
  940. package/build/client/_app/immutable/chunks/bynEV6cE.js +0 -9
  941. package/build/client/_app/immutable/chunks/bynEV6cE.js.br +0 -0
  942. package/build/client/_app/immutable/chunks/bynEV6cE.js.gz +0 -0
  943. package/build/client/_app/immutable/chunks/cxBf7mxj.js +0 -1
  944. package/build/client/_app/immutable/chunks/cxBf7mxj.js.br +0 -0
  945. package/build/client/_app/immutable/chunks/cxBf7mxj.js.gz +0 -0
  946. package/build/client/_app/immutable/chunks/dUCx_-0o.js +0 -6
  947. package/build/client/_app/immutable/chunks/dUCx_-0o.js.br +0 -0
  948. package/build/client/_app/immutable/chunks/dUCx_-0o.js.gz +0 -0
  949. package/build/client/_app/immutable/chunks/ddC1NP9R.js +0 -2
  950. package/build/client/_app/immutable/chunks/ddC1NP9R.js.br +0 -0
  951. package/build/client/_app/immutable/chunks/ddC1NP9R.js.gz +0 -0
  952. package/build/client/_app/immutable/chunks/deUWdS0T.js +0 -6
  953. package/build/client/_app/immutable/chunks/deUWdS0T.js.br +0 -0
  954. package/build/client/_app/immutable/chunks/deUWdS0T.js.gz +0 -0
  955. package/build/client/_app/immutable/chunks/g6pAcE-g.js +0 -1
  956. package/build/client/_app/immutable/chunks/g6pAcE-g.js.br +0 -0
  957. package/build/client/_app/immutable/chunks/g6pAcE-g.js.gz +0 -0
  958. package/build/client/_app/immutable/chunks/gULlE0tz.js +0 -1
  959. package/build/client/_app/immutable/chunks/gULlE0tz.js.br +0 -2
  960. package/build/client/_app/immutable/chunks/gULlE0tz.js.gz +0 -0
  961. package/build/client/_app/immutable/chunks/i9-g7ZhI.js +0 -6
  962. package/build/client/_app/immutable/chunks/i9-g7ZhI.js.br +0 -0
  963. package/build/client/_app/immutable/chunks/i9-g7ZhI.js.gz +0 -0
  964. package/build/client/_app/immutable/chunks/nf6ki56Z.js +0 -6
  965. package/build/client/_app/immutable/chunks/nf6ki56Z.js.br +0 -0
  966. package/build/client/_app/immutable/chunks/nf6ki56Z.js.gz +0 -0
  967. package/build/client/_app/immutable/chunks/nt0OWMrn.js +0 -2
  968. package/build/client/_app/immutable/chunks/nt0OWMrn.js.br +0 -0
  969. package/build/client/_app/immutable/chunks/nt0OWMrn.js.gz +0 -0
  970. package/build/client/_app/immutable/chunks/pnP8ivHi.js +0 -6
  971. package/build/client/_app/immutable/chunks/pnP8ivHi.js.br +0 -0
  972. package/build/client/_app/immutable/chunks/pnP8ivHi.js.gz +0 -0
  973. package/build/client/_app/immutable/chunks/r0jEdDRH.js +0 -1
  974. package/build/client/_app/immutable/chunks/r0jEdDRH.js.br +0 -0
  975. package/build/client/_app/immutable/chunks/r0jEdDRH.js.gz +0 -0
  976. package/build/client/_app/immutable/chunks/rUNN04Wq.js +0 -6
  977. package/build/client/_app/immutable/chunks/rUNN04Wq.js.br +0 -0
  978. package/build/client/_app/immutable/chunks/rUNN04Wq.js.gz +0 -0
  979. package/build/client/_app/immutable/chunks/tGk8EFnU.js +0 -6
  980. package/build/client/_app/immutable/chunks/tGk8EFnU.js.br +0 -0
  981. package/build/client/_app/immutable/chunks/tGk8EFnU.js.gz +0 -0
  982. package/build/client/_app/immutable/chunks/xC2C8d09.js +0 -1
  983. package/build/client/_app/immutable/chunks/xC2C8d09.js.br +0 -0
  984. package/build/client/_app/immutable/chunks/xC2C8d09.js.gz +0 -0
  985. package/build/client/_app/immutable/entry/app.C6BwoHPB.js +0 -2
  986. package/build/client/_app/immutable/entry/app.C6BwoHPB.js.br +0 -0
  987. package/build/client/_app/immutable/entry/app.C6BwoHPB.js.gz +0 -0
  988. package/build/client/_app/immutable/entry/start.DtdsXA4D.js +0 -1
  989. package/build/client/_app/immutable/entry/start.DtdsXA4D.js.br +0 -2
  990. package/build/client/_app/immutable/entry/start.DtdsXA4D.js.gz +0 -0
  991. package/build/client/_app/immutable/nodes/0.Be4zhwyU.js +0 -3
  992. package/build/client/_app/immutable/nodes/0.Be4zhwyU.js.br +0 -0
  993. package/build/client/_app/immutable/nodes/0.Be4zhwyU.js.gz +0 -0
  994. package/build/client/_app/immutable/nodes/1.DU-ZnWjM.js +0 -1
  995. package/build/client/_app/immutable/nodes/1.DU-ZnWjM.js.br +0 -0
  996. package/build/client/_app/immutable/nodes/1.DU-ZnWjM.js.gz +0 -0
  997. package/build/client/_app/immutable/nodes/10.CnYak_rj.js +0 -28
  998. package/build/client/_app/immutable/nodes/10.CnYak_rj.js.br +0 -0
  999. package/build/client/_app/immutable/nodes/10.CnYak_rj.js.gz +0 -0
  1000. package/build/client/_app/immutable/nodes/11.CsTD16Gn.js +0 -1
  1001. package/build/client/_app/immutable/nodes/11.CsTD16Gn.js.br +0 -0
  1002. package/build/client/_app/immutable/nodes/11.CsTD16Gn.js.gz +0 -0
  1003. package/build/client/_app/immutable/nodes/12.DYXd_leK.js +0 -1
  1004. package/build/client/_app/immutable/nodes/12.DYXd_leK.js.br +0 -0
  1005. package/build/client/_app/immutable/nodes/12.DYXd_leK.js.gz +0 -0
  1006. package/build/client/_app/immutable/nodes/13.DQMjAUKq.js +0 -1
  1007. package/build/client/_app/immutable/nodes/13.DQMjAUKq.js.br +0 -1
  1008. package/build/client/_app/immutable/nodes/13.DQMjAUKq.js.gz +0 -0
  1009. package/build/client/_app/immutable/nodes/14.C59tyoG0.js +0 -1
  1010. package/build/client/_app/immutable/nodes/14.C59tyoG0.js.br +0 -0
  1011. package/build/client/_app/immutable/nodes/14.C59tyoG0.js.gz +0 -0
  1012. package/build/client/_app/immutable/nodes/15.DZxmOvq_.js +0 -1
  1013. package/build/client/_app/immutable/nodes/15.DZxmOvq_.js.br +0 -0
  1014. package/build/client/_app/immutable/nodes/15.DZxmOvq_.js.gz +0 -0
  1015. package/build/client/_app/immutable/nodes/16.DRwcAQjb.js +0 -1
  1016. package/build/client/_app/immutable/nodes/16.DRwcAQjb.js.br +0 -0
  1017. package/build/client/_app/immutable/nodes/16.DRwcAQjb.js.gz +0 -0
  1018. package/build/client/_app/immutable/nodes/17.6u3BMaGP.js +0 -3
  1019. package/build/client/_app/immutable/nodes/17.6u3BMaGP.js.br +0 -0
  1020. package/build/client/_app/immutable/nodes/17.6u3BMaGP.js.gz +0 -0
  1021. package/build/client/_app/immutable/nodes/18.B74hqK3k.js +0 -11
  1022. package/build/client/_app/immutable/nodes/18.B74hqK3k.js.br +0 -0
  1023. package/build/client/_app/immutable/nodes/18.B74hqK3k.js.gz +0 -0
  1024. package/build/client/_app/immutable/nodes/2.tsu7vFWw.js +0 -35
  1025. package/build/client/_app/immutable/nodes/2.tsu7vFWw.js.br +0 -0
  1026. package/build/client/_app/immutable/nodes/2.tsu7vFWw.js.gz +0 -0
  1027. package/build/client/_app/immutable/nodes/3.uagy_HG1.js +0 -1
  1028. package/build/client/_app/immutable/nodes/3.uagy_HG1.js.br +0 -0
  1029. package/build/client/_app/immutable/nodes/3.uagy_HG1.js.gz +0 -0
  1030. package/build/client/_app/immutable/nodes/4.DMbfNKYL.js +0 -1
  1031. package/build/client/_app/immutable/nodes/4.DMbfNKYL.js.br +0 -0
  1032. package/build/client/_app/immutable/nodes/4.DMbfNKYL.js.gz +0 -0
  1033. package/build/client/_app/immutable/nodes/5.DpWrPX3L.js +0 -1
  1034. package/build/client/_app/immutable/nodes/5.DpWrPX3L.js.br +0 -0
  1035. package/build/client/_app/immutable/nodes/5.DpWrPX3L.js.gz +0 -0
  1036. package/build/client/_app/immutable/nodes/6.D7wtfdve.js +0 -1
  1037. package/build/client/_app/immutable/nodes/6.D7wtfdve.js.br +0 -0
  1038. package/build/client/_app/immutable/nodes/6.D7wtfdve.js.gz +0 -0
  1039. package/build/client/_app/immutable/nodes/7.7N4iPidV.js +0 -1
  1040. package/build/client/_app/immutable/nodes/7.7N4iPidV.js.br +0 -1
  1041. package/build/client/_app/immutable/nodes/7.7N4iPidV.js.gz +0 -0
  1042. package/build/client/_app/immutable/nodes/8.Bo50UIdy.js +0 -2
  1043. package/build/client/_app/immutable/nodes/8.Bo50UIdy.js.br +0 -0
  1044. package/build/client/_app/immutable/nodes/8.Bo50UIdy.js.gz +0 -0
  1045. package/build/client/_app/immutable/nodes/9.B2xXyeYp.js +0 -2
  1046. package/build/client/_app/immutable/nodes/9.B2xXyeYp.js.br +0 -0
  1047. package/build/client/_app/immutable/nodes/9.B2xXyeYp.js.gz +0 -0
  1048. package/build/client/_app/immutable/workers/css.worker-BRIrhzkG.js +0 -84
  1049. package/build/client/_app/immutable/workers/css.worker-BRIrhzkG.js.br +0 -0
  1050. package/build/client/_app/immutable/workers/css.worker-BRIrhzkG.js.gz +0 -0
  1051. package/build/client/_app/immutable/workers/editor.worker-DX6ApQqM.js +0 -12
  1052. package/build/client/_app/immutable/workers/editor.worker-DX6ApQqM.js.br +0 -0
  1053. package/build/client/_app/immutable/workers/editor.worker-DX6ApQqM.js.gz +0 -0
  1054. package/build/client/_app/immutable/workers/html.worker-CBI4EQBP.js +0 -461
  1055. package/build/client/_app/immutable/workers/html.worker-CBI4EQBP.js.br +0 -0
  1056. package/build/client/_app/immutable/workers/html.worker-CBI4EQBP.js.gz +0 -0
  1057. package/build/client/_app/immutable/workers/json.worker-CIZWV9vN.js +0 -49
  1058. package/build/client/_app/immutable/workers/json.worker-CIZWV9vN.js.br +0 -0
  1059. package/build/client/_app/immutable/workers/json.worker-CIZWV9vN.js.gz +0 -0
  1060. package/build/client/_app/immutable/workers/ts.worker-Ds4I2Msu.js +0 -51334
  1061. package/build/client/_app/immutable/workers/ts.worker-Ds4I2Msu.js.br +0 -0
  1062. package/build/client/_app/immutable/workers/ts.worker-Ds4I2Msu.js.gz +0 -0
  1063. package/build/client/_app/version.json +0 -1
  1064. package/build/client/_app/version.json.br +0 -0
  1065. package/build/client/_app/version.json.gz +0 -0
  1066. package/build/env.js +0 -45
  1067. package/build/handler.js +0 -1390
  1068. package/build/index.js +0 -334
  1069. package/build/server/chunks/0-BFGwTpfy.js +0 -9
  1070. package/build/server/chunks/0-BFGwTpfy.js.map +0 -1
  1071. package/build/server/chunks/1-B_bvJcKE.js +0 -9
  1072. package/build/server/chunks/1-B_bvJcKE.js.map +0 -1
  1073. package/build/server/chunks/10-CVT4oo13.js +0 -9
  1074. package/build/server/chunks/10-CVT4oo13.js.map +0 -1
  1075. package/build/server/chunks/11-CB5q84io.js +0 -25
  1076. package/build/server/chunks/11-CB5q84io.js.map +0 -1
  1077. package/build/server/chunks/12-CfqC_Y1R.js +0 -19
  1078. package/build/server/chunks/12-CfqC_Y1R.js.map +0 -1
  1079. package/build/server/chunks/13-ByddfU7G.js +0 -21
  1080. package/build/server/chunks/13-ByddfU7G.js.map +0 -1
  1081. package/build/server/chunks/14-Dk7DCwHC.js +0 -20
  1082. package/build/server/chunks/14-Dk7DCwHC.js.map +0 -1
  1083. package/build/server/chunks/15-B6cgfT20.js +0 -9
  1084. package/build/server/chunks/15-B6cgfT20.js.map +0 -1
  1085. package/build/server/chunks/16-Y9KLA9UF.js +0 -20
  1086. package/build/server/chunks/16-Y9KLA9UF.js.map +0 -1
  1087. package/build/server/chunks/17-fi2rlX_T.js +0 -9
  1088. package/build/server/chunks/17-fi2rlX_T.js.map +0 -1
  1089. package/build/server/chunks/18-CdypjWwX.js +0 -9
  1090. package/build/server/chunks/18-CdypjWwX.js.map +0 -1
  1091. package/build/server/chunks/2-CkwyQ1U4.js +0 -9
  1092. package/build/server/chunks/2-CkwyQ1U4.js.map +0 -1
  1093. package/build/server/chunks/3-BXLsvzRq.js +0 -9
  1094. package/build/server/chunks/3-BXLsvzRq.js.map +0 -1
  1095. package/build/server/chunks/4-C3Me7zq3.js +0 -9
  1096. package/build/server/chunks/4-C3Me7zq3.js.map +0 -1
  1097. package/build/server/chunks/5-DYS5LmK2.js +0 -9
  1098. package/build/server/chunks/5-DYS5LmK2.js.map +0 -1
  1099. package/build/server/chunks/6-Cp6GA1FS.js +0 -9
  1100. package/build/server/chunks/6-Cp6GA1FS.js.map +0 -1
  1101. package/build/server/chunks/7-olXOjo4r.js +0 -25
  1102. package/build/server/chunks/7-olXOjo4r.js.map +0 -1
  1103. package/build/server/chunks/8-Csly_0ub.js +0 -9
  1104. package/build/server/chunks/8-Csly_0ub.js.map +0 -1
  1105. package/build/server/chunks/9-C1UZfJDT.js +0 -9
  1106. package/build/server/chunks/9-C1UZfJDT.js.map +0 -1
  1107. package/build/server/chunks/AgentSidebar-BqqgUCT2.js +0 -170
  1108. package/build/server/chunks/AgentSidebar-BqqgUCT2.js.map +0 -1
  1109. package/build/server/chunks/Button-Huqrc2wY.js +0 -47
  1110. package/build/server/chunks/Button-Huqrc2wY.js.map +0 -1
  1111. package/build/server/chunks/ChatStepTrace-CmyR6NOL.js +0 -572
  1112. package/build/server/chunks/ChatStepTrace-CmyR6NOL.js.map +0 -1
  1113. package/build/server/chunks/Icon-BJfQMgGu.js +0 -77
  1114. package/build/server/chunks/Icon-BJfQMgGu.js.map +0 -1
  1115. package/build/server/chunks/Input-D-uxKbuX.js +0 -22
  1116. package/build/server/chunks/Input-D-uxKbuX.js.map +0 -1
  1117. package/build/server/chunks/Modal-B_fVcSLK.js +0 -2607
  1118. package/build/server/chunks/Modal-B_fVcSLK.js.map +0 -1
  1119. package/build/server/chunks/Panel-mV52rK4D.js +0 -11
  1120. package/build/server/chunks/Panel-mV52rK4D.js.map +0 -1
  1121. package/build/server/chunks/Tab-tFWS4zzn.js +0 -80
  1122. package/build/server/chunks/Tab-tFWS4zzn.js.map +0 -1
  1123. package/build/server/chunks/_layout.svelte-BjBXlTt-.js +0 -45
  1124. package/build/server/chunks/_layout.svelte-BjBXlTt-.js.map +0 -1
  1125. package/build/server/chunks/_layout.svelte-Bv87ouh2.js +0 -59
  1126. package/build/server/chunks/_layout.svelte-Bv87ouh2.js.map +0 -1
  1127. package/build/server/chunks/_layout.svelte-CHJ_Q00I.js +0 -1886
  1128. package/build/server/chunks/_layout.svelte-CHJ_Q00I.js.map +0 -1
  1129. package/build/server/chunks/_layout.svelte-DPP4TE7p.js +0 -739
  1130. package/build/server/chunks/_layout.svelte-DPP4TE7p.js.map +0 -1
  1131. package/build/server/chunks/_page.svelte-CDGPJuVG.js +0 -1431
  1132. package/build/server/chunks/_page.svelte-CDGPJuVG.js.map +0 -1
  1133. package/build/server/chunks/_page.svelte-CXjHZqjR.js +0 -946
  1134. package/build/server/chunks/_page.svelte-CXjHZqjR.js.map +0 -1
  1135. package/build/server/chunks/_page.svelte-CZXVTrWJ.js +0 -61
  1136. package/build/server/chunks/_page.svelte-CZXVTrWJ.js.map +0 -1
  1137. package/build/server/chunks/_page.svelte-CvPyTgqp.js +0 -47
  1138. package/build/server/chunks/_page.svelte-CvPyTgqp.js.map +0 -1
  1139. package/build/server/chunks/_page.svelte-DHE9UaxV.js +0 -69
  1140. package/build/server/chunks/_page.svelte-DHE9UaxV.js.map +0 -1
  1141. package/build/server/chunks/_page.svelte-DSLYtPvs.js +0 -13
  1142. package/build/server/chunks/_page.svelte-DSLYtPvs.js.map +0 -1
  1143. package/build/server/chunks/_page.svelte-Yjru58jZ.js +0 -1732
  1144. package/build/server/chunks/_page.svelte-Yjru58jZ.js.map +0 -1
  1145. package/build/server/chunks/_page.svelte-nQ_thh1S.js +0 -2211
  1146. package/build/server/chunks/_page.svelte-nQ_thh1S.js.map +0 -1
  1147. package/build/server/chunks/_server.ts-Bn0p9hMs.js +0 -49
  1148. package/build/server/chunks/_server.ts-Bn0p9hMs.js.map +0 -1
  1149. package/build/server/chunks/_server.ts-CbcaMe9z.js +0 -38
  1150. package/build/server/chunks/_server.ts-CbcaMe9z.js.map +0 -1
  1151. package/build/server/chunks/_server.ts-CtO28tLc.js +0 -23
  1152. package/build/server/chunks/_server.ts-CtO28tLc.js.map +0 -1
  1153. package/build/server/chunks/_server.ts-D_eo_OAK.js +0 -139
  1154. package/build/server/chunks/_server.ts-D_eo_OAK.js.map +0 -1
  1155. package/build/server/chunks/agents-context-BdX2j9DI.js +0 -6
  1156. package/build/server/chunks/agents-context-BdX2j9DI.js.map +0 -1
  1157. package/build/server/chunks/chat-content.svelte-x4GXVNwU.js +0 -74
  1158. package/build/server/chunks/chat-content.svelte-x4GXVNwU.js.map +0 -1
  1159. package/build/server/chunks/client-D1Y2ZQJN.js +0 -33
  1160. package/build/server/chunks/client-D1Y2ZQJN.js.map +0 -1
  1161. package/build/server/chunks/conversation-view-memory-CMgSQUdu.js +0 -20
  1162. package/build/server/chunks/conversation-view-memory-CMgSQUdu.js.map +0 -1
  1163. package/build/server/chunks/edit-workspace-context-ClnqepZ4.js +0 -6
  1164. package/build/server/chunks/edit-workspace-context-ClnqepZ4.js.map +0 -1
  1165. package/build/server/chunks/error.svelte-B5VtiMGd.js +0 -15
  1166. package/build/server/chunks/error.svelte-B5VtiMGd.js.map +0 -1
  1167. package/build/server/chunks/hooks.universal-BJphIAi-.js +0 -8
  1168. package/build/server/chunks/hooks.universal-BJphIAi-.js.map +0 -1
  1169. package/build/server/chunks/index-Do08hKbr.js +0 -4065
  1170. package/build/server/chunks/index-Do08hKbr.js.map +0 -1
  1171. package/build/server/chunks/index-NcxaM188.js +0 -236
  1172. package/build/server/chunks/index-NcxaM188.js.map +0 -1
  1173. package/build/server/chunks/index-server-CHFC9Apw.js +0 -17
  1174. package/build/server/chunks/index-server-CHFC9Apw.js.map +0 -1
  1175. package/build/server/chunks/index2-B_Xf0ugP.js +0 -24
  1176. package/build/server/chunks/index2-B_Xf0ugP.js.map +0 -1
  1177. package/build/server/chunks/index3-C9gC86lU.js +0 -63
  1178. package/build/server/chunks/index3-C9gC86lU.js.map +0 -1
  1179. package/build/server/chunks/latency--f3JYIRg.js +0 -157
  1180. package/build/server/chunks/latency--f3JYIRg.js.map +0 -1
  1181. package/build/server/chunks/latency-recordings-CqioXMQl.js +0 -117
  1182. package/build/server/chunks/latency-recordings-CqioXMQl.js.map +0 -1
  1183. package/build/server/chunks/log-content.svelte-D5gN0L7Q.js +0 -7
  1184. package/build/server/chunks/log-content.svelte-D5gN0L7Q.js.map +0 -1
  1185. package/build/server/chunks/root-DoSdrdfw.js +0 -1266
  1186. package/build/server/chunks/root-DoSdrdfw.js.map +0 -1
  1187. package/build/server/chunks/shared-server-DaWdgxVh.js +0 -11
  1188. package/build/server/chunks/shared-server-DaWdgxVh.js.map +0 -1
  1189. package/build/server/chunks/source-selection-1aBuBpkL.js +0 -286
  1190. package/build/server/chunks/source-selection-1aBuBpkL.js.map +0 -1
  1191. package/build/server/chunks/sources.server-C2PLxQXh.js +0 -71
  1192. package/build/server/chunks/sources.server-C2PLxQXh.js.map +0 -1
  1193. package/build/server/chunks/state.svelte-B2OaeWMp.js +0 -11
  1194. package/build/server/chunks/state.svelte-B2OaeWMp.js.map +0 -1
  1195. package/build/server/chunks/steps-DzZCg39h.js +0 -8
  1196. package/build/server/chunks/steps-DzZCg39h.js.map +0 -1
  1197. package/build/server/chunks/trpc-client-D8L6vWf4.js +0 -14
  1198. package/build/server/chunks/trpc-client-D8L6vWf4.js.map +0 -1
  1199. package/build/server/index.js +0 -5995
  1200. package/build/server/index.js.map +0 -1
  1201. package/build/server/manifest.js +0 -181
  1202. package/build/server/manifest.js.map +0 -1
  1203. package/build/shims.js +0 -32
  1204. package/src/backend/lib/apply-v4a-diff.spec.ts +0 -45
  1205. package/src/backend/lib/apply-v4a-diff.ts +0 -167
  1206. package/src/backend/lib/backend-restart.ts +0 -15
  1207. package/src/backend/lib/decode-html-entities.spec.ts +0 -28
  1208. package/src/backend/lib/decode-html-entities.ts +0 -25
  1209. package/src/backend/lib/get-agent-factories.spec.ts +0 -59
  1210. package/src/backend/lib/get-agent-factories.ts +0 -118
  1211. package/src/backend/lib/get-root-path.ts +0 -89
  1212. package/src/backend/lib/import-nonce.ts +0 -10
  1213. package/src/backend/lib/middleware/cors.ts +0 -14
  1214. package/src/backend/lib/project-api.ts +0 -15
  1215. package/src/backend/lib/project-data-dir.spec.ts +0 -19
  1216. package/src/backend/lib/project-data-dir.ts +0 -9
  1217. package/src/backend/lib/trpc-context.ts +0 -8
  1218. package/src/backend/lib/voice-agent-lifecycle.test.ts +0 -31
  1219. package/src/backend/lib/voice-agent-lifecycle.ts +0 -16
  1220. package/src/backend/region/router.ts +0 -54
  1221. package/src/backend/roleplay/agent-loader.ts +0 -49
  1222. package/src/backend/roleplay/agents.ts +0 -756
  1223. package/src/backend/roleplay/fs-persistence.ts +0 -81
  1224. package/src/backend/roleplay/logger.ts +0 -30
  1225. package/src/backend/roleplay/message-dispatcher.ts +0 -93
  1226. package/src/backend/roleplay/old-server.ts +0 -96
  1227. package/src/backend/roleplay/prompt-edit-progress.ts +0 -36
  1228. package/src/backend/roleplay/prompt-edit-proposals.ts +0 -72
  1229. package/src/backend/roleplay/prompt-file.ts +0 -59
  1230. package/src/backend/roleplay/router.spec.ts +0 -75
  1231. package/src/backend/roleplay/router.ts +0 -468
  1232. package/src/backend/roleplay/scheduler.ts +0 -76
  1233. package/src/backend/roleplay/schema-file.spec.ts +0 -38
  1234. package/src/backend/roleplay/schema-file.ts +0 -33
  1235. package/src/backend/roleplay/step-registry.spec.ts +0 -20
  1236. package/src/backend/roleplay/step-registry.ts +0 -22
  1237. package/src/backend/roleplay/suggest-file-edit.ts +0 -160
  1238. package/src/backend/roleplay/suggest-prompt-edit.ts +0 -34
  1239. package/src/backend/roleplay/suggest-test-fix.spec.ts +0 -50
  1240. package/src/backend/roleplay/suggest-test-fix.ts +0 -65
  1241. package/src/backend/roleplay/test-fix-proposal-acceptance.spec.ts +0 -253
  1242. package/src/backend/roleplay/trace-serialization.spec.ts +0 -35
  1243. package/src/backend/roleplay/trace-serialization.ts +0 -57
  1244. package/src/backend/roleplay/variants.spec.ts +0 -53
  1245. package/src/backend/roleplay/variants.ts +0 -298
  1246. package/src/backend/server.ts +0 -70
  1247. package/src/backend/tests/academy-json.spec.ts +0 -97
  1248. package/src/backend/tests/academy.ts +0 -960
  1249. package/src/backend/tests/active-test-runs.spec.ts +0 -27
  1250. package/src/backend/tests/active-test-runs.ts +0 -41
  1251. package/src/backend/tests/analyze.ts +0 -533
  1252. package/src/backend/tests/best-effort-log-writer.spec.ts +0 -39
  1253. package/src/backend/tests/best-effort-log-writer.ts +0 -52
  1254. package/src/backend/tests/context-utils.ts +0 -26
  1255. package/src/backend/tests/data.spec.ts +0 -225
  1256. package/src/backend/tests/data.ts +0 -802
  1257. package/src/backend/tests/emulate-agents.spec.ts +0 -106
  1258. package/src/backend/tests/emulate-agents.ts +0 -244
  1259. package/src/backend/tests/json-field-match.ts +0 -94
  1260. package/src/backend/tests/openai-prompt-cache.ts +0 -68
  1261. package/src/backend/tests/pii-sanitized-test-drafts.spec.ts +0 -163
  1262. package/src/backend/tests/pii-sanitized-test-drafts.ts +0 -106
  1263. package/src/backend/tests/pii-sanitizer.spec.ts +0 -261
  1264. package/src/backend/tests/pii-sanitizer.ts +0 -282
  1265. package/src/backend/tests/prompt-issues.ts +0 -207
  1266. package/src/backend/tests/promptfoo-runtime.spec.ts +0 -41
  1267. package/src/backend/tests/promptfoo-runtime.ts +0 -27
  1268. package/src/backend/tests/report-files.spec.ts +0 -44
  1269. package/src/backend/tests/report-files.ts +0 -120
  1270. package/src/backend/tests/router.ts +0 -374
  1271. package/src/backend/tests/suggest-test-history-edit.spec.ts +0 -20
  1272. package/src/backend/tests/suggest-test-history-edit.ts +0 -52
  1273. package/src/backend/tests/suite.spec.ts +0 -122
  1274. package/src/backend/tests/suite.ts +0 -236
  1275. package/src/backend/tests/test-edit-source.spec.ts +0 -61
  1276. package/src/backend/tests/test-edit-source.ts +0 -34
  1277. package/src/backend/tests/test-history-edit-proposals.ts +0 -69
  1278. package/src/backend/tests/test-history-overrides.spec.ts +0 -24
  1279. package/src/backend/tests/test-selection.ts +0 -27
  1280. package/src/backend/traces/latency-recordings.ts +0 -176
  1281. package/src/lib/agent-catalog.ts +0 -4
  1282. package/src/lib/agents-context.ts +0 -8
  1283. package/src/lib/api-telescope/client.ts +0 -199
  1284. package/src/lib/api-telescope/index.ts +0 -4
  1285. package/src/lib/api-telescope/latency-timeline-view-state.spec.ts +0 -25
  1286. package/src/lib/api-telescope/latency-timeline-view-state.ts +0 -86
  1287. package/src/lib/api-telescope/latency.ts +0 -252
  1288. package/src/lib/api-telescope/source-selection.spec.ts +0 -44
  1289. package/src/lib/api-telescope/source-selection.ts +0 -48
  1290. package/src/lib/api-telescope/sources.server.ts +0 -94
  1291. package/src/lib/api-telescope/types.ts +0 -171
  1292. package/src/lib/components/Button.svelte +0 -62
  1293. package/src/lib/components/CollapseExpand.svelte +0 -425
  1294. package/src/lib/components/CopyTracesDropdown.svelte +0 -118
  1295. package/src/lib/components/Dialog.svelte +0 -69
  1296. package/src/lib/components/Dropdown.svelte +0 -111
  1297. package/src/lib/components/History.svelte +0 -174
  1298. package/src/lib/components/Icon.svelte +0 -94
  1299. package/src/lib/components/Input.svelte +0 -43
  1300. package/src/lib/components/Link.svelte +0 -45
  1301. package/src/lib/components/Modal.svelte +0 -74
  1302. package/src/lib/components/Panel.svelte +0 -12
  1303. package/src/lib/components/PopoverModal.svelte +0 -34
  1304. package/src/lib/components/Popper.svelte +0 -109
  1305. package/src/lib/components/Tab.svelte +0 -89
  1306. package/src/lib/components/Tabs.svelte +0 -140
  1307. package/src/lib/components/Textarea.svelte +0 -41
  1308. package/src/lib/components/agent-colors.ts +0 -70
  1309. package/src/lib/dom/text-selection.ts +0 -97
  1310. package/src/lib/edit/edit-vm.spec.ts +0 -115
  1311. package/src/lib/edit/edit-vm.ts +0 -169
  1312. package/src/lib/edit/edit-workspace-context.ts +0 -97
  1313. package/src/lib/edit/highlight-styles.spec.ts +0 -14
  1314. package/src/lib/edit/prompt-highlighter.spec.ts +0 -80
  1315. package/src/lib/edit/prompt-highlighter.ts +0 -155
  1316. package/src/lib/edit/quote-matching.ts +0 -97
  1317. package/src/lib/edit/test-ai-edit.spec.ts +0 -31
  1318. package/src/lib/edit/test-ai-edit.ts +0 -52
  1319. package/src/lib/monaco/bosun-theme.ts +0 -48
  1320. package/src/lib/monaco/editor-appearance.spec.ts +0 -84
  1321. package/src/lib/monaco/editor-appearance.ts +0 -154
  1322. package/src/lib/monaco/editor-decorations.spec.ts +0 -91
  1323. package/src/lib/monaco/editor-decorations.ts +0 -133
  1324. package/src/lib/monaco/font.ts +0 -2
  1325. package/src/lib/monaco-workers.ts +0 -28
  1326. package/src/lib/steps.ts +0 -19
  1327. package/src/lib/tests/assertion-types.ts +0 -74
  1328. package/src/lib/tests/pii-sanitized-test-draft.ts +0 -50
  1329. package/src/lib/trpc-client.ts +0 -16
  1330. package/src/lib/ws-client.ts +0 -144
  1331. package/src/lib/ws-message.ts +0 -157
  1332. package/tsconfig.json +0 -27
  1333. /package/build/{client/_app → _app}/immutable/assets/codicon.DCmgc-ay.ttf +0 -0
  1334. /package/build/{client/favicon.png → favicon.png} +0 -0
  1335. /package/build/{client/fonts → fonts}/DarkerGrotesque-Black.ttf +0 -0
  1336. /package/build/{client/fonts → fonts}/DarkerGrotesque-Bold.ttf +0 -0
  1337. /package/build/{client/fonts → fonts}/DarkerGrotesque-Light.ttf +0 -0
  1338. /package/build/{client/fonts → fonts}/DarkerGrotesque-Medium.ttf +0 -0
  1339. /package/build/{client/fonts → fonts}/DarkerGrotesque-Regular.ttf +0 -0
  1340. /package/build/{client/fonts → fonts}/DarkerGrotesque-SemiBold.ttf +0 -0
  1341. /package/build/{client/fonts.css → fonts.css} +0 -0
  1342. /package/build/{client/fonts.css.br → fonts.css.br} +0 -0
  1343. /package/build/{client/fonts.css.gz → fonts.css.gz} +0 -0
  1344. /package/build/{client/recombine.svg → recombine.svg} +0 -0
  1345. /package/build/{client/recombine.svg.br → recombine.svg.br} +0 -0
  1346. /package/build/{client/recombine.svg.gz → recombine.svg.gz} +0 -0
  1347. /package/build/{client/telescope-icon.svg → telescope-icon.svg} +0 -0
  1348. /package/build/{client/telescope-icon.svg.br → telescope-icon.svg.br} +0 -0
  1349. /package/build/{client/telescope-icon.svg.gz → telescope-icon.svg.gz} +0 -0
  1350. /package/build/{client/ui → ui}/arrow_tests.svg +0 -0
  1351. /package/build/{client/ui → ui}/arrow_tests.svg.br +0 -0
  1352. /package/build/{client/ui → ui}/arrow_tests.svg.gz +0 -0
  1353. /package/build/{client/ui → ui}/paperclip.svg +0 -0
  1354. /package/build/{client/ui → ui}/paperclip.svg.br +0 -0
  1355. /package/build/{client/ui → ui}/paperclip.svg.gz +0 -0
  1356. /package/build/{client/ui → ui}/send.svg +0 -0
  1357. /package/build/{client/ui → ui}/send.svg.br +0 -0
  1358. /package/build/{client/ui → ui}/send.svg.gz +0 -0
@@ -1,1732 +0,0 @@
1
- import { k as escape_html, l as derived, p as ensure_array_like, y as attr_style, o as attr_class, t as clsx } from './index-Do08hKbr.js';
2
- import { o as onDestroy } from './index-server-CHFC9Apw.js';
3
- import { p as page } from './index2-B_Xf0ugP.js';
4
- import { B as Button } from './Button-Huqrc2wY.js';
5
- import { g as getTelescopeSourceIdFromUrl, b as getPersistedTelescopeSourceId, T as TelescopeClient } from './source-selection-1aBuBpkL.js';
6
- import { i as isMainStepName } from './steps-DzZCg39h.js';
7
- import { b as buildResponseLatencySpans, f as findResponseLatencyUserTurn, R as RESPONSE_LATENCY_THRESHOLD_MS } from './latency--f3JYIRg.js';
8
- import { g as getConversationViewMemory, c as conversationViewMemoryKey } from './conversation-view-memory-CMgSQUdu.js';
9
- import './client-D1Y2ZQJN.js';
10
- import './state.svelte-B2OaeWMp.js';
11
- import './root-DoSdrdfw.js';
12
- import './index3-C9gC86lU.js';
13
- import 'zod';
14
-
15
- function _page($$renderer, $$props) {
16
- $$renderer.component(($$renderer2) => {
17
- const SPEECH_BUBBLE_HEIGHT_PX = 30;
18
- const TIMELINE_RULER_HEIGHT_PX = 32;
19
- const TIMELINE_ROW_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX;
20
- const TIMELINE_ROW_GAP_PX = 5;
21
- const WAVEFORM_ROW_HEIGHT_PX = 160;
22
- const SPEECH_BUBBLE_VERTICAL_GAP_PX = TIMELINE_ROW_GAP_PX;
23
- const SPEECH_BUBBLE_LEVEL_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX + SPEECH_BUBBLE_VERTICAL_GAP_PX;
24
- const SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS = 3e4;
25
- const GUIDE_ROW_LABELS = /* @__PURE__ */ new Set(["VAD", "Playback"]);
26
- const client = new TelescopeClient(fetch);
27
- const BOSUN_COLORS = {
28
- blue: "#569cd6",
29
- green: "#93FF6D",
30
- greenDark: "#00B58A",
31
- orange: "#ce9178",
32
- purple: "#81147D",
33
- red: "#FF6666",
34
- gray: "#767676"
35
- };
36
- const ROW_DEFS = [
37
- {
38
- label: "VAD",
39
- eventTypes: ["vad.activated", "vad.deactivated"]
40
- },
41
- {
42
- label: "STT",
43
- eventTypes: [
44
- "stt.started",
45
- "stt.interim",
46
- "stt.final",
47
- "stt.final_transcript"
48
- ]
49
- },
50
- { label: "Trigger", eventTypes: ["speech.created"] },
51
- {
52
- label: "Reply Pending",
53
- eventTypes: ["reply.pending.started", "reply.pending.completed"]
54
- },
55
- {
56
- label: "LLM Transport",
57
- eventTypes: [
58
- "llm.connect_tcp.started",
59
- "llm.connect_tcp.completed",
60
- "llm.connect_tcp.failed",
61
- "llm.start_tls.started",
62
- "llm.start_tls.completed",
63
- "llm.start_tls.failed"
64
- ]
65
- },
66
- {
67
- label: "LLM Wait",
68
- eventTypes: ["llm.wait.started", "llm.requested", "llm.wait.completed"]
69
- },
70
- {
71
- label: "LLM Stream",
72
- eventTypes: [
73
- "llm.stream.started",
74
- "llm.first_token",
75
- "llm.completed",
76
- "llm.stream.completed"
77
- ]
78
- },
79
- {
80
- label: "TTS Text",
81
- eventTypes: ["tts.text.first_sent", "tts.text.completed"]
82
- },
83
- {
84
- label: "Provider",
85
- eventTypes: [
86
- "tts.provider.started",
87
- "tts.audio.first_received",
88
- "tts.audio.last_received",
89
- "tts.provider.completed"
90
- ]
91
- },
92
- {
93
- label: "Decode",
94
- eventTypes: ["tts.decode.started", "tts.decode.completed"]
95
- },
96
- {
97
- label: "Output Queue",
98
- eventTypes: ["audio.output.wait.started", "audio.output.wait.completed"]
99
- },
100
- {
101
- label: "Playback",
102
- eventTypes: [
103
- "audio.playback.started",
104
- "audio.playback.stopped",
105
- "audio.playback.ended"
106
- ]
107
- },
108
- { label: "Response Latency" },
109
- {
110
- label: "Interruptions",
111
- eventTypes: ["interruption.detected", "audio.playback.interrupted"]
112
- },
113
- { label: "Other" }
114
- ];
115
- const TIMELINE_ROW_LABELS = new Set(ROW_DEFS.map((row) => row.label));
116
- const COLOR_BY_KEY = {
117
- call: tintHex(BOSUN_COLORS.gray, 0.2),
118
- vad: tintHex(BOSUN_COLORS.purple, 0.35),
119
- stt: tintHex(BOSUN_COLORS.purple, 0.2),
120
- trigger: BOSUN_COLORS.greenDark,
121
- "response.latency.ok": BOSUN_COLORS.green,
122
- "response.latency.high": BOSUN_COLORS.red,
123
- "reply.pending": tintHex(BOSUN_COLORS.greenDark, 0.18),
124
- "llm.transport": tintHex(BOSUN_COLORS.blue, 0.18),
125
- "llm.wait": tintHex(BOSUN_COLORS.blue, -0.25),
126
- "llm.stream": BOSUN_COLORS.blue,
127
- "tts.text": BOSUN_COLORS.orange,
128
- "tts.provider.lifecycle": tintHex(BOSUN_COLORS.purple, -0.18),
129
- "tts.provider": tintHex(BOSUN_COLORS.purple, 0.12),
130
- "tts.decode": tintHex(BOSUN_COLORS.orange, -0.12),
131
- "audio.output.wait": BOSUN_COLORS.orange,
132
- playback: tintHex(BOSUN_COLORS.greenDark, -0.08),
133
- interruption: BOSUN_COLORS.orange,
134
- other: BOSUN_COLORS.gray
135
- };
136
- const SPAN_RULES = [
137
- {
138
- startEventType: "reply.pending.started",
139
- endEventType: "reply.pending.completed",
140
- row: "Reply Pending",
141
- colorKey: "reply.pending",
142
- label: "Reply pending",
143
- description: "Derived from adjacent reply-pending lifecycle events"
144
- },
145
- {
146
- startEventType: "llm.connect_tcp.started",
147
- endEventType: "llm.connect_tcp.completed",
148
- row: "LLM Transport",
149
- colorKey: "llm.transport",
150
- label: "Connect TCP",
151
- description: "Derived from adjacent TCP connect lifecycle events"
152
- },
153
- {
154
- startEventType: "llm.start_tls.started",
155
- endEventType: "llm.start_tls.completed",
156
- row: "LLM Transport",
157
- colorKey: "llm.transport",
158
- label: "Start TLS",
159
- description: "Derived from adjacent TLS lifecycle events"
160
- },
161
- {
162
- startEventType: "llm.wait.started",
163
- endEventType: "llm.wait.completed",
164
- row: "LLM Wait",
165
- colorKey: "llm.wait",
166
- label: "LLM wait",
167
- description: "Derived from adjacent LLM wait lifecycle events"
168
- },
169
- {
170
- startEventType: "llm.stream.started",
171
- endEventType: "llm.stream.completed",
172
- row: "LLM Stream",
173
- colorKey: "llm.stream",
174
- label: "LLM stream",
175
- description: "Derived from adjacent LLM stream lifecycle events"
176
- },
177
- {
178
- startEventType: "tts.text.first_sent",
179
- endEventType: "tts.text.completed",
180
- row: "TTS Text",
181
- colorKey: "tts.text",
182
- label: "TTS text send",
183
- description: "Derived from adjacent TTS text send and completion events"
184
- },
185
- {
186
- startEventType: "tts.provider.started",
187
- endEventType: "tts.audio.first_received",
188
- row: "Provider",
189
- colorKey: "tts.provider.lifecycle",
190
- label: "Provider wait",
191
- description: "Derived from adjacent provider start and first-audio events"
192
- },
193
- {
194
- startEventType: "tts.audio.first_received",
195
- endEventType: "tts.provider.completed",
196
- row: "Provider",
197
- colorKey: "tts.provider",
198
- label: "Provider audio",
199
- description: "Derived from adjacent provider first-audio and completion events"
200
- },
201
- {
202
- startEventType: "tts.decode.started",
203
- endEventType: "tts.decode.completed",
204
- row: "Decode",
205
- colorKey: "tts.decode",
206
- label: "Decode",
207
- description: "Derived from adjacent local decode lifecycle events"
208
- },
209
- {
210
- startEventType: "audio.output.wait.started",
211
- endEventType: "audio.output.wait.completed",
212
- row: "Output Queue",
213
- colorKey: "audio.output.wait",
214
- label: "Output queue",
215
- description: "Derived from adjacent audio-output wait lifecycle events"
216
- },
217
- {
218
- startEventType: "audio.playback.started",
219
- endEventType: "audio.playback.stopped",
220
- row: "Playback",
221
- colorKey: "playback",
222
- label: "Playback",
223
- description: "Derived from adjacent playback start and playback stop events"
224
- }
225
- ];
226
- const SPAN_RULE_BY_START = new Map(SPAN_RULES.map((rule) => [rule.startEventType, rule]));
227
- function emptyRecordingResponse() {
228
- return {
229
- exists: false,
230
- audioUrl: null,
231
- fileName: null,
232
- mimeType: null,
233
- size: null,
234
- uploadedAt: null,
235
- alignmentOffsetMs: 0
236
- };
237
- }
238
- const viewMemory = getConversationViewMemory();
239
- const initialSourceId = getTelescopeSourceIdFromUrl(page.url) ?? getPersistedTelescopeSourceId() ?? "";
240
- const initialConversationId = page.params.conversationId ?? "";
241
- const initialMemoryKey = conversationViewMemoryKey(initialConversationId, initialSourceId);
242
- const initialMemory = viewMemory.latency.get(initialMemoryKey);
243
- client.setSourceId(initialSourceId || void 0);
244
- let sourceId = initialSourceId;
245
- let conversation = initialMemory?.conversation ?? null;
246
- let traces = initialMemory?.traces ?? [];
247
- let conversationTraces = initialMemory?.conversationTraces ?? [];
248
- let dataLoaded = initialMemory?.dataLoaded ?? false;
249
- let error = initialMemory?.error ?? null;
250
- let recording = initialMemory?.recording ?? emptyRecordingResponse();
251
- let recordingLoaded = initialMemory?.recordingLoaded ?? false;
252
- let recordingError = initialMemory?.recordingError ?? null;
253
- let uploadInFlight = false;
254
- let waveform = initialMemory?.waveform ?? null;
255
- let waveformError = initialMemory?.waveformError ?? null;
256
- let playbackPositionMs = initialMemory?.playbackPositionMs ?? 0;
257
- let playbackPlaying = false;
258
- let playbackError = null;
259
- let alignmentSaving = false;
260
- let alignmentError = null;
261
- let viewDirty = initialMemory?.viewDirty ?? false;
262
- let viewportStartMs = null;
263
- let viewportEndMs = null;
264
- let scrollViewportEl = null;
265
- let fileInputEl = null;
266
- let humanSpeechBubbleReservedLevels = initialMemory?.humanSpeechBubbleReservedLevels ?? 1;
267
- let copyLatencyState = "idle";
268
- let loadKey = "";
269
- let playbackFrame = 0;
270
- let playbackAudioBuffer = initialMemory?.playbackAudioBuffer ?? null;
271
- let playbackAudioContext = null;
272
- let playbackSourceNode = null;
273
- let playbackStartedAtMs = null;
274
- let playbackStartedAtContextTime = null;
275
- const conversationId = derived(() => page.params.conversationId);
276
- function buildRecordingApiUrlFor(cid, nextSourceId) {
277
- const params = new URLSearchParams();
278
- if (nextSourceId) params.set("source", nextSourceId);
279
- const search = params.toString();
280
- return `/traces/api/latency/${encodeURIComponent(cid)}${search ? `?${search}` : ""}`;
281
- }
282
- const recordingApiUrl = derived(() => {
283
- if (!conversationId()) return "";
284
- return buildRecordingApiUrlFor(conversationId(), sourceId);
285
- });
286
- const timelineOriginMs = derived(() => {
287
- let min = Number.POSITIVE_INFINITY;
288
- for (const trace of traces) {
289
- if (typeof trace.atMs !== "number" || !Number.isFinite(trace.atMs)) continue;
290
- min = Math.min(min, trace.atMs);
291
- }
292
- if (Number.isFinite(min)) return min;
293
- if (typeof conversation?.createdAt === "number" && Number.isFinite(conversation.createdAt)) {
294
- return conversation.createdAt;
295
- }
296
- return Number.isFinite(min) ? min : 0;
297
- });
298
- const callSegments = derived(() => buildCallLatencySegments(traces));
299
- const latencyTraceCount = derived(() => traces.length);
300
- const aiResponses = derived(() => buildAiResponses());
301
- const playbackSpeechMatches = derived(() => buildPlaybackSpeechMatches(callSegments()));
302
- const timelineSegments = derived(() => {
303
- const playbackSegments = callSegments().map((segment) => {
304
- const speech = playbackSpeechMatches().get(segment.id);
305
- if (!speech || segment.row !== "Playback" || segment.durationMs <= 0) return segment;
306
- return {
307
- ...segment,
308
- speechText: speech.text,
309
- speechFullText: speech.fullText,
310
- speechTraceLabel: speech.traceLabel
311
- };
312
- });
313
- return [
314
- ...playbackSegments,
315
- ...buildStandaloneWaitSegments(aiResponses())
316
- ];
317
- });
318
- const timelineRows = derived(() => {
319
- const grouped = /* @__PURE__ */ new Map();
320
- for (const segment of timelineSegments()) {
321
- const items = grouped.get(segment.row);
322
- if (items) items.push(segment);
323
- else grouped.set(segment.row, [segment]);
324
- }
325
- return [...ROW_DEFS].reverse().map((row) => ({ label: row.label, segments: grouped.get(row.label) ?? [] })).filter((row) => row.segments.length > 0);
326
- });
327
- const speechBubbleBaseLayouts = derived(() => buildSpeechBubbleBaseLayouts());
328
- const humanSpeechBubbleLevelCount = derived(() => Math.max(humanSpeechBubbleReservedLevels, speechBubbleRoleLevelCount(speechBubbleBaseLayouts(), "human")));
329
- const speechBubbles = derived(() => compactSpeechBubbleLayouts(speechBubbleBaseLayouts()));
330
- const humanSpeechBubbleLaneHeightPx = derived(() => speechBubbleLaneHeightPx(humanSpeechBubbleLevelCount()));
331
- const speechBubbleAreaHeightPx = derived(() => humanSpeechBubbleLaneHeightPx());
332
- const timelineRowsHeightPx = derived(() => timelineRows().length * TIMELINE_ROW_HEIGHT_PX + Math.max(0, timelineRows().length - 1) * TIMELINE_ROW_GAP_PX);
333
- const traceRowsToBubbleGapPx = derived(() => timelineRows().length > 0 ? TIMELINE_ROW_GAP_PX : 0);
334
- const speechBubbleAreaTopPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx());
335
- const waveformRowVisible = derived(() => recording.exists);
336
- const waveformRowHeightPx = derived(() => waveformRowVisible() ? TIMELINE_ROW_GAP_PX + WAVEFORM_ROW_HEIGHT_PX : 0);
337
- const guideLines = derived(() => buildGuideLines(timelineRows()));
338
- const recordingStartMs = derived(() => {
339
- if (!waveform) return null;
340
- return timelineOriginMs() + recording.alignmentOffsetMs;
341
- });
342
- const timelinePlotHeightPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx() + speechBubbleAreaHeightPx() + waveformRowHeightPx());
343
- const playbackAbsoluteMs = derived(() => {
344
- if (recordingStartMs() == null) return null;
345
- return recordingStartMs() + playbackPositionMs;
346
- });
347
- const playbackCursor = derived(() => {
348
- const absoluteMs = playbackAbsoluteMs();
349
- if (absoluteMs == null || viewportStartMs == null || viewportEndMs == null) return null;
350
- const durationMs = viewportEndMs - viewportStartMs;
351
- if (!Number.isFinite(durationMs) || durationMs <= 0) return null;
352
- if (absoluteMs < viewportStartMs || absoluteMs > viewportEndMs) return null;
353
- return {
354
- leftPercent: clamp((absoluteMs - viewportStartMs) / durationMs * 100, 0, 100),
355
- topPx: TIMELINE_RULER_HEIGHT_PX,
356
- heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)
357
- };
358
- });
359
- const timelineOriginLine = derived(() => {
360
- if (viewportStartMs == null || viewportEndMs == null) return null;
361
- const durationMs = viewportEndMs - viewportStartMs;
362
- if (!Number.isFinite(durationMs) || durationMs <= 0) return null;
363
- if (timelineOriginMs() < viewportStartMs || timelineOriginMs() > viewportEndMs) return null;
364
- return {
365
- leftPercent: (timelineOriginMs() - viewportStartMs) / durationMs * 100,
366
- topPx: TIMELINE_RULER_HEIGHT_PX,
367
- heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)
368
- };
369
- });
370
- const contentExtent = derived(() => {
371
- let min = Number.POSITIVE_INFINITY;
372
- let max = Number.NEGATIVE_INFINITY;
373
- for (const segment of callSegments()) {
374
- min = Math.min(min, segment.start);
375
- max = Math.max(max, segment.end);
376
- }
377
- if (waveform && recordingStartMs() != null) {
378
- min = Math.min(min, recordingStartMs());
379
- max = Math.max(max, recordingStartMs() + waveform.durationMs);
380
- }
381
- if (!Number.isFinite(min) || !Number.isFinite(max)) return null;
382
- if (max <= min) max = min + 1;
383
- return { min, max };
384
- });
385
- const conversationTraceExtent = derived(() => {
386
- let min = Number.POSITIVE_INFINITY;
387
- let max = Number.NEGATIVE_INFINITY;
388
- for (const segment of callSegments()) {
389
- if (!TIMELINE_ROW_LABELS.has(segment.row)) continue;
390
- min = Math.min(min, segment.start);
391
- max = Math.max(max, segment.end);
392
- }
393
- if (!Number.isFinite(min) || !Number.isFinite(max)) return null;
394
- if (max <= min) max = min + 1;
395
- return { min, max };
396
- });
397
- const viewportDurationMs = derived(() => {
398
- if (viewportStartMs == null || viewportEndMs == null) return null;
399
- const duration = viewportEndMs - viewportStartMs;
400
- return duration > 0 ? duration : null;
401
- });
402
- const visibleTicks = derived(() => {
403
- if (viewportStartMs == null || viewportEndMs == null) return [];
404
- return buildTicks(viewportStartMs, viewportEndMs, timelineOriginMs());
405
- });
406
- function saveViewMemory(key = loadKey) {
407
- if (!key) return;
408
- const previous = viewMemory.latency.get(key);
409
- const memory = {
410
- conversation,
411
- traces,
412
- conversationTraces,
413
- dataLoaded,
414
- error,
415
- recording,
416
- recordingLoaded,
417
- recordingError,
418
- waveform,
419
- waveformError,
420
- playbackAudioBuffer,
421
- playbackPositionMs,
422
- viewportStartMs,
423
- viewportEndMs,
424
- viewportOriginMs: timelineOriginMs(),
425
- viewDirty,
426
- humanSpeechBubbleReservedLevels,
427
- scrollTop: previous?.scrollTop ?? scrollViewportEl?.scrollTop ?? 0,
428
- scrollLeft: previous?.scrollLeft ?? scrollViewportEl?.scrollLeft ?? 0
429
- };
430
- viewMemory.latency.set(key, memory);
431
- const cid = conversationId();
432
- const currentSourceId = getTelescopeSourceIdFromUrl(page.url) ?? getPersistedTelescopeSourceId() ?? "";
433
- if (cid && currentSourceId && key === conversationViewMemoryKey(cid, "")) {
434
- viewMemory.latency.set(conversationViewMemoryKey(cid, currentSourceId), memory);
435
- }
436
- }
437
- onDestroy(() => {
438
- saveViewMemory();
439
- stopPlayback(false);
440
- void closePlaybackAudioContext();
441
- });
442
- function normalizeNonEmptyString(value) {
443
- if (typeof value !== "string") return null;
444
- const trimmed = value.trim();
445
- return trimmed ? trimmed : null;
446
- }
447
- function clampByte(value) {
448
- return Math.max(0, Math.min(255, Math.round(value)));
449
- }
450
- function clamp(value, min, max) {
451
- return Math.min(max, Math.max(min, value));
452
- }
453
- function tintHex(hex, amount) {
454
- const raw = (hex ?? "").trim().replace(/^#/, "");
455
- const expanded = raw.length === 3 ? raw.split("").map((part) => `${part}${part}`).join("") : raw;
456
- if (expanded.length !== 6 || !/^[0-9a-fA-F]+$/.test(expanded)) return hex;
457
- const r = parseInt(expanded.slice(0, 2), 16);
458
- const g = parseInt(expanded.slice(2, 4), 16);
459
- const b = parseInt(expanded.slice(4, 6), 16);
460
- const t = Math.abs(Math.max(-1, Math.min(1, amount)));
461
- const target = amount >= 0 ? 255 : 0;
462
- return `#${clampByte(r + (target - r) * t).toString(16).padStart(2, "0")}${clampByte(g + (target - g) * t).toString(16).padStart(2, "0")}${clampByte(b + (target - b) * t).toString(16).padStart(2, "0")}`;
463
- }
464
- function fmtSignedMs(value) {
465
- if (value == null || !Number.isFinite(value)) return "0 ms";
466
- const rounded = Math.round(value);
467
- if (rounded === 0) return "0 ms";
468
- return `${rounded > 0 ? "+" : ""}${rounded} ms`;
469
- }
470
- function formatRelativeTime(offsetMs) {
471
- if (!Number.isFinite(offsetMs)) return "—";
472
- const sign = offsetMs < 0 ? "-" : "";
473
- const abs = Math.abs(offsetMs);
474
- if (abs < 1e4) return `${sign}${(abs / 1e3).toFixed(1)}s`;
475
- if (abs < 6e4) return `${sign}${(abs / 1e3).toFixed(2)}s`;
476
- const totalSeconds = abs / 1e3;
477
- const minutes = Math.floor(totalSeconds / 60);
478
- const seconds = totalSeconds - minutes * 60;
479
- return `${sign}${minutes}:${seconds.toFixed(1).padStart(4, "0")}`;
480
- }
481
- function safeJson(value) {
482
- try {
483
- return JSON.stringify(value ?? null, null, 2);
484
- } catch {
485
- return String(value);
486
- }
487
- }
488
- async function copyLatencyStream() {
489
- try {
490
- await navigator.clipboard.writeText(safeJson(traces));
491
- copyLatencyState = "ok";
492
- window.setTimeout(
493
- () => {
494
- copyLatencyState = "idle";
495
- },
496
- 2e3
497
- );
498
- } catch (reason) {
499
- console.error("Failed to copy latency stream", reason);
500
- copyLatencyState = "error";
501
- window.setTimeout(
502
- () => {
503
- copyLatencyState = "idle";
504
- },
505
- 3e3
506
- );
507
- }
508
- }
509
- function describeTrace(trace) {
510
- const time = typeof trace.createdAt === "number" && Number.isFinite(trace.createdAt) ? new Date(trace.createdAt).toLocaleTimeString() : "unknown time";
511
- if (trace.traceType === "LATENCY") {
512
- return `Latency • #${trace.seq ?? "?"} • ${trace.eventType ?? "unknown"} • ${time}`;
513
- }
514
- if (trace.traceType === "CONVERSATIONAL") {
515
- return `Conversational • ${trace.eventName} • ${time}`;
516
- }
517
- if (trace.traceType === "STEP") {
518
- return `Step • ${trace.name ?? "unknown"} • ${time}`;
519
- }
520
- return `API • ${trace.operationName} • ${time}`;
521
- }
522
- function latencyPayload(trace) {
523
- const payload = trace.payload;
524
- return payload && typeof payload === "object" && !Array.isArray(payload) ? payload : {};
525
- }
526
- function latencyRow(eventType) {
527
- if (eventType === "call.started" || eventType === "call.ended") return "Call";
528
- if (eventType.startsWith("vad.")) return "VAD";
529
- if (eventType.startsWith("stt.")) return "STT";
530
- if (eventType === "speech.created") return "Trigger";
531
- if (eventType.startsWith("reply.pending.")) return "Reply Pending";
532
- if (eventType.startsWith("llm.connect_tcp.") || eventType.startsWith("llm.start_tls.")) {
533
- return "LLM Transport";
534
- }
535
- if (eventType === "llm.requested" || eventType.startsWith("llm.wait.")) return "LLM Wait";
536
- if (eventType === "llm.first_token" || eventType === "llm.completed" || eventType.startsWith("llm.stream.")) {
537
- return "LLM Stream";
538
- }
539
- if (eventType.startsWith("tts.text.")) return "TTS Text";
540
- if (eventType.startsWith("tts.provider.")) return "Provider";
541
- if (eventType === "tts.audio.first_received" || eventType === "tts.audio.last_received") {
542
- return "Provider";
543
- }
544
- if (eventType.startsWith("tts.decode.")) return "Decode";
545
- if (eventType.startsWith("audio.output.wait.")) return "Output Queue";
546
- if (eventType === "interruption.detected" || eventType === "audio.playback.interrupted") {
547
- return "Interruptions";
548
- }
549
- if (eventType.startsWith("audio.playback.")) return "Playback";
550
- return "Other";
551
- }
552
- function latencyColorKey(eventType) {
553
- if (eventType === "call.started" || eventType === "call.ended") return "call";
554
- if (eventType.startsWith("vad.")) return "vad";
555
- if (eventType.startsWith("stt.")) return "stt";
556
- if (eventType === "speech.created") return "trigger";
557
- if (eventType.startsWith("reply.pending.")) return "reply.pending";
558
- if (eventType.startsWith("llm.connect_tcp.") || eventType.startsWith("llm.start_tls.")) {
559
- return "llm.transport";
560
- }
561
- if (eventType === "llm.requested" || eventType.startsWith("llm.wait.")) return "llm.wait";
562
- if (eventType === "llm.first_token" || eventType === "llm.completed" || eventType.startsWith("llm.stream.")) {
563
- return "llm.stream";
564
- }
565
- if (eventType.startsWith("tts.text.")) return "tts.text";
566
- if (eventType.startsWith("tts.provider.")) return "tts.provider.lifecycle";
567
- if (eventType === "tts.audio.first_received" || eventType === "tts.audio.last_received") {
568
- return "tts.provider";
569
- }
570
- if (eventType.startsWith("tts.decode.")) return "tts.decode";
571
- if (eventType.startsWith("audio.output.wait.")) return "audio.output.wait";
572
- if (eventType === "interruption.detected" || eventType === "audio.playback.interrupted") {
573
- return "interruption";
574
- }
575
- if (eventType.startsWith("audio.playback.")) return "playback";
576
- return "other";
577
- }
578
- function latencyEventMarker(eventType) {
579
- switch (eventType) {
580
- case "vad.activated":
581
- case "stt.started":
582
- return "start";
583
- case "vad.deactivated":
584
- case "stt.final":
585
- case "stt.final_transcript":
586
- return "end";
587
- default:
588
- return null;
589
- }
590
- }
591
- function latencyLabel(trace) {
592
- switch (trace.eventType) {
593
- case "call.started":
594
- return "Call started";
595
- case "call.ended":
596
- return "Call ended";
597
- case "vad.activated":
598
- return "VAD activated";
599
- case "vad.deactivated":
600
- return "VAD deactivated";
601
- case "stt.started":
602
- return "STT start";
603
- case "stt.interim":
604
- return "STT interim";
605
- case "stt.final":
606
- case "stt.final_transcript":
607
- return "STT final";
608
- case "speech.created":
609
- return "Speech created";
610
- case "reply.pending.started":
611
- return "Reply pending start";
612
- case "reply.pending.completed":
613
- return "Reply pending end";
614
- case "llm.connect_tcp.started":
615
- return "Connect TCP start";
616
- case "llm.connect_tcp.completed":
617
- return "Connect TCP end";
618
- case "llm.connect_tcp.failed":
619
- return "Connect TCP failed";
620
- case "llm.start_tls.started":
621
- return "TLS start";
622
- case "llm.start_tls.completed":
623
- return "TLS end";
624
- case "llm.start_tls.failed":
625
- return "TLS failed";
626
- case "llm.wait.started":
627
- return "LLM wait start";
628
- case "llm.wait.completed":
629
- return "LLM wait end";
630
- case "llm.stream.started":
631
- return "LLM stream start";
632
- case "llm.stream.completed":
633
- return "LLM stream end";
634
- case "llm.requested":
635
- return "LLM request";
636
- case "llm.first_token":
637
- return "LLM first token";
638
- case "llm.completed":
639
- return "LLM end";
640
- case "tts.text.first_sent":
641
- return "TTS first text";
642
- case "tts.text.completed":
643
- return "TTS text end";
644
- case "tts.provider.started":
645
- return "Provider start";
646
- case "tts.provider.completed":
647
- return "Provider end";
648
- case "tts.audio.first_received":
649
- return "Provider audio received";
650
- case "tts.audio.last_received":
651
- return "Provider audio end";
652
- case "tts.decode.started":
653
- return "Decode start";
654
- case "tts.decode.completed":
655
- return "Decode end";
656
- case "audio.output.wait.started":
657
- return "Output queue start";
658
- case "audio.output.wait.completed":
659
- return "Output queue end";
660
- case "interruption.detected":
661
- return "Interruption detected";
662
- case "audio.playback.started":
663
- return "Playback start";
664
- case "audio.playback.stopped":
665
- return "Playback stop";
666
- case "audio.playback.ended":
667
- return "Playback end";
668
- case "audio.playback.interrupted":
669
- return "Playback interrupted";
670
- default:
671
- return trace.eventType;
672
- }
673
- }
674
- function latencyDescription(trace) {
675
- const payload = latencyPayload(trace);
676
- switch (trace.eventType) {
677
- case "call.started":
678
- return "Call-scoped latency stream started";
679
- case "call.ended":
680
- return "Call-scoped latency stream ended";
681
- case "vad.activated":
682
- return "Raw VAD activation event";
683
- case "vad.deactivated":
684
- return "Raw VAD deactivation event";
685
- case "stt.started":
686
- return "Speech-to-text detected speech start";
687
- case "stt.interim":
688
- return normalizeNonEmptyString(payload.originalType) === "preflight_transcript" ? "Speech-to-text preflight transcript" : "Speech-to-text interim transcript";
689
- case "stt.final":
690
- case "stt.final_transcript":
691
- return "Speech-to-text final transcript";
692
- case "speech.created":
693
- return "LiveKit created a speech handle";
694
- case "reply.pending.started":
695
- return "Reply generation was committed, but downstream generation has not started yet";
696
- case "reply.pending.completed":
697
- return "Reply generation moved from pending into the LLM request phase";
698
- case "llm.connect_tcp.started":
699
- return "httpcore started opening a new TCP connection for the LLM request";
700
- case "llm.connect_tcp.completed":
701
- return "httpcore finished opening a new TCP connection for the LLM request";
702
- case "llm.connect_tcp.failed":
703
- return "httpcore failed while opening a new TCP connection for the LLM request";
704
- case "llm.start_tls.started":
705
- return "httpcore started TLS negotiation for the LLM request";
706
- case "llm.start_tls.completed":
707
- return "httpcore finished TLS negotiation for the LLM request";
708
- case "llm.start_tls.failed":
709
- return "httpcore failed during TLS negotiation for the LLM request";
710
- case "llm.wait.started":
711
- return "LLM request is in flight and waiting for the first token";
712
- case "llm.wait.completed":
713
- return "The LLM wait phase ended when the first token arrived";
714
- case "llm.stream.started":
715
- return "LLM streaming phase started";
716
- case "llm.stream.completed":
717
- return "LLM streaming phase ended";
718
- case "llm.requested":
719
- return "AnyVan received an LLM request";
720
- case "llm.first_token":
721
- return "First LLM token received";
722
- case "llm.completed":
723
- return "LLM streaming completed";
724
- case "tts.text.first_sent":
725
- return "First text chunk sent to the TTS provider";
726
- case "tts.text.completed":
727
- return "Last non-empty text chunk observed for this TTS stream";
728
- case "tts.provider.started":
729
- return "Provider lifecycle started when the first non-empty TTS text chunk was sent";
730
- case "tts.provider.completed":
731
- return "Provider lifecycle ended when the provider stream reported completion";
732
- case "tts.audio.first_received":
733
- return "First audio chunk received from the TTS provider";
734
- case "tts.audio.last_received":
735
- return "Last audio chunk received from the TTS provider";
736
- case "tts.decode.started":
737
- return "First provider audio bytes were handed into the local decode path";
738
- case "tts.decode.completed":
739
- return "The first decoded audio frame left the local decode path";
740
- case "audio.output.wait.started":
741
- return "The first local audio frame was handed to the LiveKit audio output";
742
- case "audio.output.wait.completed":
743
- return "The audio-output wait phase ended when low-level playback actually started";
744
- case "interruption.detected":
745
- return "User speech overlapped active playback; this does not guarantee playback stopped";
746
- case "audio.playback.started":
747
- return "First played audio frame";
748
- case "audio.playback.stopped":
749
- return "Playback lifecycle ended on the Playback row";
750
- case "audio.playback.ended":
751
- return "Audio playback finished normally";
752
- case "audio.playback.interrupted":
753
- return "Audio playback ended because the output buffer was interrupted";
754
- default:
755
- return null;
756
- }
757
- }
758
- function latencyText(trace) {
759
- const payload = latencyPayload(trace);
760
- return normalizeNonEmptyString(payload.text);
761
- }
762
- function isFinalSttLatencyTrace(trace) {
763
- return trace.eventType === "stt.final" || trace.eventType === "stt.final_transcript";
764
- }
765
- function bubbleText(value) {
766
- const text = normalizeNonEmptyString(value);
767
- if (!text) return null;
768
- return text.replace(/\s+/g, " ").trim() || null;
769
- }
770
- function latencyTranscriptText(trace) {
771
- const payload = latencyPayload(trace);
772
- const text = bubbleText(payload.text) ?? bubbleText(payload.transcript) ?? bubbleText(payload.finalTranscript) ?? bubbleText(payload.final_transcript) ?? bubbleText(payload.message);
773
- if (text) return text;
774
- const alternatives = payload.alternatives;
775
- if (Array.isArray(alternatives)) {
776
- for (const alternative of alternatives) {
777
- if (!alternative || typeof alternative !== "object") continue;
778
- const alternativeText = bubbleText(alternative.text);
779
- if (alternativeText) return alternativeText;
780
- }
781
- }
782
- return null;
783
- }
784
- function isConversationalTrace(trace) {
785
- return trace.traceType === "CONVERSATIONAL";
786
- }
787
- function isUserConversationalTrace(trace) {
788
- return isConversationalTrace(trace) && trace.role.toLowerCase() === "user" && (trace.eventName === "received-message" || trace.eventName === "llm-handler-stream-requested");
789
- }
790
- function isAgentConversationalTrace(trace) {
791
- return isConversationalTrace(trace) && (trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message");
792
- }
793
- function conversationalTraceKey(trace) {
794
- return normalizeNonEmptyString(trace.traceId) ?? `${trace.createdAt}:${trace.eventName}:${trace.content}`;
795
- }
796
- function callStartTime() {
797
- for (const trace of traces.slice().sort(compareLatencyTraces)) {
798
- if (trace.eventType === "call.started" && Number.isFinite(trace.atMs)) return trace.atMs;
799
- }
800
- return timelineOriginMs();
801
- }
802
- function findHumanBubbleStartTime(anchorTime, playbackSegments) {
803
- const lastPlayback = playbackSegments.filter((segment) => segment.start <= anchorTime).sort((a, b) => b.start - a.start || b.end - a.end)[0];
804
- if (!lastPlayback) return Math.min(callStartTime(), anchorTime);
805
- if (lastPlayback.end <= anchorTime) return Math.min(lastPlayback.end, anchorTime);
806
- return Math.min(lastPlayback.start, anchorTime);
807
- }
808
- function isWaitResponse(value) {
809
- return /<WAIT\b[^>]*\/?\s*>/i.test(value);
810
- }
811
- function isMainStepResponse(trace) {
812
- return trace.traceType === "STEP" && isMainStepName(trace.name) && normalizeNonEmptyString(trace.response) != null;
813
- }
814
- function responseTextWithoutTags(value) {
815
- return value.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
816
- }
817
- function isEquivalentAiResponseText(a, b) {
818
- if (a === b) return true;
819
- const spokenA = responseTextWithoutTags(a);
820
- const spokenB = responseTextWithoutTags(b);
821
- return spokenA !== "" && spokenA === spokenB;
822
- }
823
- function responseTurnBounds(createdAt) {
824
- let start = createdAt - SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;
825
- let end = createdAt + SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;
826
- for (const trace of conversationTraces) {
827
- if (!isUserConversationalTrace(trace)) continue;
828
- if (trace.createdAt <= createdAt) start = trace.createdAt;
829
- else {
830
- end = trace.createdAt;
831
- break;
832
- }
833
- }
834
- return { start, end };
835
- }
836
- function findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds) {
837
- const bounds = responseTurnBounds(agentTrace.createdAt);
838
- return stepResponses.filter((trace) => !usedStepTraceIds.has(traceKey(trace)) && trace.createdAt >= bounds.start && trace.createdAt < bounds.end).sort((a, b) => Math.abs(a.createdAt - agentTrace.createdAt) - Math.abs(b.createdAt - agentTrace.createdAt))[0] ?? null;
839
- }
840
- function buildAiResponses() {
841
- const built = [];
842
- const usedStepTraceIds = /* @__PURE__ */ new Set();
843
- const stepResponses = conversationTraces.filter(isMainStepResponse).sort(compareConversationTraces);
844
- const agentTraces = conversationTraces.filter(isAgentConversationalTrace).sort(compareConversationTraces);
845
- for (const agentTrace of agentTraces) {
846
- const stepTrace = findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds);
847
- const stepFullText = stepTrace ? normalizeNonEmptyString(stepTrace.response) : null;
848
- const fullText = stepFullText ?? normalizeNonEmptyString(agentTrace.content);
849
- const text = bubbleText(fullText);
850
- if (!text || !fullText) continue;
851
- const duplicate = built.find((response) => response.agentTraceIds.size > 0 && Math.abs(response.createdAt - agentTrace.createdAt) <= 1e3 && isEquivalentAiResponseText(response.fullText, fullText));
852
- if (duplicate) {
853
- duplicate.agentTraceIds.add(conversationalTraceKey(agentTrace));
854
- if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));
855
- continue;
856
- }
857
- if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));
858
- built.push({
859
- id: stepTrace ? `response:step:${traceKey(stepTrace)}` : `response:agent:${conversationalTraceKey(agentTrace)}`,
860
- text,
861
- fullText,
862
- createdAt: agentTrace.createdAt,
863
- agentTraceIds: /* @__PURE__ */ new Set([conversationalTraceKey(agentTrace)]),
864
- traceLabel: describeTrace(stepTrace ?? agentTrace)
865
- });
866
- }
867
- for (const stepTrace of stepResponses) {
868
- const stepTraceId = traceKey(stepTrace);
869
- if (usedStepTraceIds.has(stepTraceId)) continue;
870
- const fullText = normalizeNonEmptyString(stepTrace.response);
871
- const text = bubbleText(fullText);
872
- if (!text || !fullText) continue;
873
- built.push({
874
- id: `response:step:${stepTraceId}`,
875
- text,
876
- fullText,
877
- createdAt: stepTrace.createdAt,
878
- agentTraceIds: /* @__PURE__ */ new Set(),
879
- traceLabel: describeTrace(stepTrace)
880
- });
881
- }
882
- return built.sort((a, b) => a.createdAt - b.createdAt || a.id.localeCompare(b.id));
883
- }
884
- function traceKey(trace) {
885
- return normalizeNonEmptyString(trace.traceId) ?? `${trace.seq ?? "?"}:${trace.createdAt ?? "?"}`;
886
- }
887
- function buildTtsTextEvents() {
888
- return traces.slice().sort(compareLatencyTraces).flatMap((trace) => {
889
- if (trace.eventType !== "tts.text.first_sent" && trace.eventType !== "tts.text.completed") {
890
- return [];
891
- }
892
- const text = bubbleText(latencyText(trace));
893
- return text ? [{ trace, text }] : [];
894
- });
895
- }
896
- function findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTextTraceIds, previousPlaybackEnd) {
897
- const lowerBound = previousPlaybackEnd - 250;
898
- const upperBound = playbackSegment.start + 2e3;
899
- const candidates = ttsTextEvents.filter(({ trace }) => {
900
- if (usedTextTraceIds.has(traceKey(trace))) return false;
901
- return trace.atMs >= lowerBound && trace.atMs <= upperBound;
902
- }).sort((a, b) => Math.abs(a.trace.atMs - playbackSegment.start) - Math.abs(b.trace.atMs - playbackSegment.start));
903
- return candidates[0] ?? null;
904
- }
905
- function buildPlaybackSpeechMatches(inputSegments) {
906
- const bySegmentId = /* @__PURE__ */ new Map();
907
- const playbackSegments = inputSegments.filter((segment) => segment.row === "Playback" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);
908
- const usedTtsTextTraceIds = /* @__PURE__ */ new Set();
909
- const ttsTextEvents = buildTtsTextEvents();
910
- let previousPlaybackEnd = callStartTime();
911
- for (const playbackSegment of playbackSegments) {
912
- const ttsText = findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTtsTextTraceIds, previousPlaybackEnd);
913
- previousPlaybackEnd = Math.max(previousPlaybackEnd, playbackSegment.end);
914
- if (!ttsText) continue;
915
- usedTtsTextTraceIds.add(traceKey(ttsText.trace));
916
- bySegmentId.set(playbackSegment.id, {
917
- text: ttsText.text,
918
- fullText: ttsText.text,
919
- traceLabel: describeTrace(ttsText.trace)
920
- });
921
- }
922
- return bySegmentId;
923
- }
924
- function buildStandaloneWaitSegments(responses) {
925
- return responses.flatMap((response) => {
926
- if (!isWaitResponse(response.fullText)) return [];
927
- const end = findWaitResponseEnd(response.createdAt);
928
- return [
929
- {
930
- ...makeSegment({
931
- id: `playback:wait:${response.id}`,
932
- row: "Playback",
933
- start: response.createdAt,
934
- end,
935
- colorKey: "playback",
936
- label: "WAIT response",
937
- traceLabel: response.traceLabel
938
- }),
939
- speechText: response.text,
940
- speechFullText: response.fullText,
941
- speechTraceLabel: response.traceLabel
942
- }
943
- ];
944
- });
945
- }
946
- function findWaitResponseEnd(start) {
947
- const nextActivity = traces.filter((trace) => trace.atMs > start && (trace.eventType === "audio.playback.started" || trace.eventType === "stt.started" || trace.eventType === "vad.activated" || trace.eventType === "call.ended")).sort((a, b) => a.atMs - b.atMs || a.seq - b.seq)[0];
948
- return nextActivity ? nextActivity.atMs : start + 1;
949
- }
950
- function buildSpeechBubbleCandidates() {
951
- const built = [];
952
- const playbackSegments = callSegments().filter((segment) => segment.row === "Playback" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);
953
- traces.slice().sort(compareLatencyTraces).forEach((trace) => {
954
- if (!isFinalSttLatencyTrace(trace)) return;
955
- const text = latencyTranscriptText(trace);
956
- if (!text) return;
957
- built.push({
958
- id: `bubble:human:${trace.traceId ?? trace.seq}`,
959
- role: "human",
960
- text,
961
- fullText: text,
962
- anchorTime: trace.atMs,
963
- minStartTime: findHumanBubbleStartTime(trace.atMs, playbackSegments),
964
- anchorRow: "STT",
965
- traceLabel: describeTrace(trace)
966
- });
967
- });
968
- return built.sort((a, b) => a.anchorTime - b.anchorTime || a.role.localeCompare(b.role) || a.id.localeCompare(b.id));
969
- }
970
- function timelineRowAnchorPx(rowLabel) {
971
- const rowIndex = timelineRows().findIndex((row) => row.label === rowLabel);
972
- if (rowIndex === -1) return TIMELINE_RULER_HEIGHT_PX;
973
- return TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX) + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);
974
- }
975
- function speechBubbleRoleLevelCount(bubbles, role) {
976
- let maxLevel = -1;
977
- for (const bubble of bubbles) {
978
- if (bubble.role !== role) continue;
979
- maxLevel = Math.max(maxLevel, bubble.level);
980
- }
981
- return maxLevel + 1;
982
- }
983
- function speechBubbleLaneHeightPx(levelCount) {
984
- return Math.max(0, levelCount) * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;
985
- }
986
- function compactSpeechBubbleLayouts(bubbles) {
987
- const bubbleAreaTopPx = speechBubbleAreaTopPx();
988
- return bubbles.map((bubble) => {
989
- const topPx = bubble.level * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;
990
- const globalTopPx = bubbleAreaTopPx + topPx;
991
- const rowAnchorPx = timelineRowAnchorPx(bubble.anchorRow);
992
- return {
993
- ...bubble,
994
- topPx,
995
- lineTopPx: rowAnchorPx,
996
- lineHeightPx: Math.max(1, globalTopPx - rowAnchorPx)
997
- };
998
- });
999
- }
1000
- function buildSpeechBubbleLayoutForRole(role, candidates) {
1001
- return [];
1002
- }
1003
- function buildSpeechBubbleBaseLayouts() {
1004
- buildSpeechBubbleCandidates();
1005
- return buildSpeechBubbleLayoutForRole();
1006
- }
1007
- function speechBubbleStyle(bubble) {
1008
- return `left:${Math.round(bubble.leftPx)}px;top:${Math.round(bubble.topPx)}px;width:${Math.round(bubble.widthPx)}px;height:${SPEECH_BUBBLE_HEIGHT_PX}px;`;
1009
- }
1010
- function speechBubbleLineStyle(bubble) {
1011
- return `left:${bubble.anchorPercent}%;top:${Math.round(bubble.lineTopPx)}px;height:${Math.round(bubble.lineHeightPx)}px;`;
1012
- }
1013
- function speechBubbleClass(bubble) {
1014
- const base = "absolute z-20 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 px-3 text-sm leading-[30px] text-rc-gray-100 backdrop-blur-md";
1015
- if (bubble.role === "agent") {
1016
- return `${base} bg-rc-green-700`;
1017
- }
1018
- return `${base} bg-rc-gray-700`;
1019
- }
1020
- function makeSegment(input) {
1021
- return {
1022
- id: input.id,
1023
- row: input.row,
1024
- start: input.start,
1025
- end: input.end,
1026
- durationMs: Math.max(0, input.end - input.start),
1027
- colorKey: input.colorKey,
1028
- label: input.label,
1029
- description: input.description ?? null,
1030
- explain: input.explain ?? null,
1031
- text: input.text ?? null,
1032
- speechText: null,
1033
- speechFullText: null,
1034
- speechTraceLabel: null,
1035
- traceLabel: input.traceLabel,
1036
- eventMarker: input.eventMarker ?? null
1037
- };
1038
- }
1039
- function compareLatencyTraces(a, b) {
1040
- return a.seq - b.seq || a.atMs - b.atMs || (a.createdAt ?? 0) - (b.createdAt ?? 0) || String(a.traceId ?? "").localeCompare(String(b.traceId ?? ""));
1041
- }
1042
- function findNextLatencyEvent(events, startIndex, match, stop) {
1043
- for (let index = startIndex + 1; index < events.length; index += 1) {
1044
- const next = events[index];
1045
- if (stop(next)) return null;
1046
- if (match(next)) return next;
1047
- }
1048
- return null;
1049
- }
1050
- function buildResponseLatencySegments(events) {
1051
- return buildResponseLatencySpans(events).filter((span) => findResponseLatencyUserTurn(conversationTraces, span) != null).map((span) => makeSegment({
1052
- id: `derived:${span.id}`,
1053
- row: "Response Latency",
1054
- start: span.start,
1055
- end: span.end,
1056
- colorKey: span.isHigh ? "response.latency.high" : "response.latency.ok",
1057
- label: "Final STT -> speech start",
1058
- description: span.speechCreatedTrace ? "Final STT transcript -> first audio for the next uncancelled LiveKit speech" : "Final STT transcript -> next audio playback start",
1059
- explain: span.isHigh ? `High latency (>${RESPONSE_LATENCY_THRESHOLD_MS}ms)` : "OK",
1060
- text: span.text,
1061
- traceLabel: span.speechCreatedTrace ? `${describeTrace(span.startTrace)} -> ${describeTrace(span.speechCreatedTrace)} -> ${describeTrace(span.endTrace)}` : `${describeTrace(span.startTrace)} -> ${describeTrace(span.endTrace)}`
1062
- }));
1063
- }
1064
- function buildDerivedSegments(events) {
1065
- const built = buildResponseLatencySegments(events);
1066
- events.forEach((trace, index) => {
1067
- const rule = SPAN_RULE_BY_START.get(trace.eventType);
1068
- if (!rule) return;
1069
- const next = findNextLatencyEvent(events, index, (candidate) => candidate.eventType === rule.endEventType, (candidate) => candidate.eventType === rule.startEventType);
1070
- if (!next || next.atMs < trace.atMs) return;
1071
- built.push(makeSegment({
1072
- id: `derived:${rule.row.toLowerCase().replaceAll(" ", "_")}:${trace.seq}:${next.seq}`,
1073
- row: rule.row,
1074
- start: trace.atMs,
1075
- end: next.atMs,
1076
- colorKey: rule.colorKey,
1077
- label: rule.label,
1078
- description: rule.description,
1079
- traceLabel: describeTrace(trace)
1080
- }));
1081
- });
1082
- return built;
1083
- }
1084
- function buildCallLatencySegments(input) {
1085
- const events = input.slice().filter((trace) => typeof trace.atMs === "number" && Number.isFinite(trace.atMs) && typeof trace.seq === "number" && Number.isFinite(trace.seq)).sort(compareLatencyTraces);
1086
- const pointSegments = events.map((trace, index) => makeSegment({
1087
- id: `point:${trace.traceId ?? trace.seq}:${index}`,
1088
- row: latencyRow(trace.eventType),
1089
- start: trace.atMs,
1090
- end: trace.atMs,
1091
- colorKey: latencyColorKey(trace.eventType),
1092
- label: latencyLabel(trace),
1093
- description: latencyDescription(trace),
1094
- text: latencyText(trace),
1095
- traceLabel: describeTrace(trace),
1096
- eventMarker: latencyEventMarker(trace.eventType)
1097
- }));
1098
- const derivedSegments = buildDerivedSegments(events);
1099
- return [...derivedSegments, ...pointSegments].sort((a, b) => a.start - b.start || (a.durationMs === 0 ? 1 : 0) - (b.durationMs === 0 ? 1 : 0) || a.end - b.end || a.row.localeCompare(b.row));
1100
- }
1101
- function buildRecordingResponse(raw) {
1102
- const next = raw && typeof raw === "object" ? raw : {};
1103
- const audioUrl = typeof next.audioUrl === "string" && next.audioUrl.trim() ? next.audioUrl : null;
1104
- return {
1105
- exists: next.exists === true && audioUrl != null,
1106
- audioUrl,
1107
- fileName: typeof next.fileName === "string" ? next.fileName : null,
1108
- mimeType: typeof next.mimeType === "string" ? next.mimeType : null,
1109
- size: typeof next.size === "number" && Number.isFinite(next.size) ? next.size : null,
1110
- uploadedAt: typeof next.uploadedAt === "string" ? next.uploadedAt : null,
1111
- alignmentOffsetMs: typeof next.alignmentOffsetMs === "number" && Number.isFinite(next.alignmentOffsetMs) ? next.alignmentOffsetMs : 0
1112
- };
1113
- }
1114
- function getResponseError(payload, fallback) {
1115
- const next = payload && typeof payload === "object" ? payload : {};
1116
- if (typeof next.error === "string" && next.error.trim()) return next.error;
1117
- if (typeof next.message === "string" && next.message.trim()) return next.message;
1118
- return fallback;
1119
- }
1120
- async function readResponsePayload(response) {
1121
- const contentType = response.headers.get("content-type") ?? "";
1122
- if (contentType.includes("application/json")) {
1123
- return response.json().catch(() => ({}));
1124
- }
1125
- const text = (await response.text().catch(() => "")).trim();
1126
- if (!text) return {};
1127
- if (contentType.includes("text/html")) {
1128
- const titleMatch = text.match(/<title>([^<]+)<\/title>/i);
1129
- const headingMatch = text.match(/<h1[^>]*>([^<]+)<\/h1>/i);
1130
- return {
1131
- message: titleMatch?.[1]?.trim() || headingMatch?.[1]?.trim() || `${response.status} ${response.statusText}`.trim()
1132
- };
1133
- }
1134
- return { message: text };
1135
- }
1136
- function isPlaybackTraceBubble(segment) {
1137
- return segment.row === "Playback" && !segment.eventMarker && segment.durationMs > 0;
1138
- }
1139
- function segmentDisplayText(segment) {
1140
- if (isPlaybackTraceBubble(segment)) return segment.speechText;
1141
- return null;
1142
- }
1143
- function segmentStyle(segment) {
1144
- if (viewportStartMs == null || viewportEndMs == null) return null;
1145
- const duration = viewportEndMs - viewportStartMs;
1146
- if (!Number.isFinite(duration) || duration <= 0) return null;
1147
- const fill = COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray;
1148
- const border = tintHex(fill, -0.25);
1149
- if (segment.end === segment.start) {
1150
- if (segment.start < viewportStartMs || segment.start > viewportEndMs) return null;
1151
- const pointPercent = clamp((segment.start - viewportStartMs) / duration * 100, 0, 100);
1152
- if (segment.eventMarker === "start") {
1153
- return `left:${pointPercent}%;width:7px;background:${fill};border-color:${border};clip-path:polygon(0 0,100% 50%,0 100%);`;
1154
- }
1155
- if (segment.eventMarker === "end") {
1156
- return `left:calc(${pointPercent}% - 7px);width:7px;background:${fill};border-color:${border};clip-path:polygon(100% 0,0 50%,100% 100%);`;
1157
- }
1158
- return `left:calc(${pointPercent}% - 2px);width:4px;background:${fill};border-color:${border};`;
1159
- }
1160
- const visibleStart = Math.max(segment.start, viewportStartMs);
1161
- const visibleEnd = Math.min(segment.end, viewportEndMs);
1162
- if (visibleEnd < visibleStart) return null;
1163
- const leftPercent = (visibleStart - viewportStartMs) / duration * 100;
1164
- const widthPercent = (visibleEnd - visibleStart) / duration * 100;
1165
- if (isPlaybackTraceBubble(segment)) {
1166
- return `left:${leftPercent}%;width:max(${widthPercent}%,2px);`;
1167
- }
1168
- return `left:${leftPercent}%;width:max(${widthPercent}%,2px);background:${fill};border-color:${border};`;
1169
- }
1170
- function segmentClass(segment) {
1171
- if (segment.eventMarker) {
1172
- return "absolute inset-y-0 shadow-[0_0_0_1px_rgba(0,0,0,0.28)]";
1173
- }
1174
- if (isPlaybackTraceBubble(segment)) {
1175
- return "absolute inset-y-0 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 bg-rc-green-700 px-3 text-sm leading-[30px] text-rc-gray-100 shadow-[0_0_0_1px_rgba(0,0,0,0.12)] backdrop-blur-md";
1176
- }
1177
- return "absolute inset-y-0 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]";
1178
- }
1179
- function guideLineStyle(guide) {
1180
- return `left:${guide.leftPercent}%;top:${guide.topPx}px;height:${guide.heightPx}px;border-color:${guide.color};opacity:${guide.opacity};`;
1181
- }
1182
- function timelineOriginLineStyle(originLine) {
1183
- return `left:${originLine.leftPercent}%;top:${originLine.topPx}px;height:${originLine.heightPx}px;`;
1184
- }
1185
- function tickLabelClass(tick) {
1186
- const base = "absolute top-1 whitespace-nowrap text-[11px] text-rc-gray-400";
1187
- if (tick.leftPercent <= 0.1) return base;
1188
- if (tick.leftPercent >= 99.9) return `${base} -translate-x-full`;
1189
- return `${base} -translate-x-1/2`;
1190
- }
1191
- function buildGuideLines(rows) {
1192
- if (!recording.exists || viewportStartMs == null || viewportEndMs == null) return [];
1193
- const rangeStartMs = viewportStartMs;
1194
- const rangeEndMs = viewportEndMs;
1195
- const durationMs = rangeEndMs - rangeStartMs;
1196
- if (!Number.isFinite(durationMs) || durationMs <= 0) return [];
1197
- const waveformBottomPx = timelinePlotHeightPx();
1198
- const seen = /* @__PURE__ */ new Set();
1199
- const built = [];
1200
- rows.forEach((row, rowIndex) => {
1201
- if (!GUIDE_ROW_LABELS.has(row.label)) return;
1202
- const rowTopPx = TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX);
1203
- const rowAnchorPx = rowTopPx + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);
1204
- row.segments.forEach((segment) => {
1205
- if (segment.id.startsWith("playback:wait:")) return;
1206
- const color = tintHex(COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray, 0.15);
1207
- const times = segment.end === segment.start ? segment.start >= rangeStartMs && segment.start <= rangeEndMs ? [segment.start] : [] : (() => {
1208
- const visibleStart = Math.max(segment.start, rangeStartMs);
1209
- const visibleEnd = Math.min(segment.end, rangeEndMs);
1210
- return visibleEnd < visibleStart ? [] : [visibleStart, visibleEnd];
1211
- })();
1212
- for (const timeMs of times) {
1213
- const roundedTime = Math.round(timeMs);
1214
- const key = `${row.label}:${roundedTime}`;
1215
- if (seen.has(key)) continue;
1216
- seen.add(key);
1217
- const leftPercent = clamp((timeMs - rangeStartMs) / durationMs * 100, 0, 100);
1218
- built.push({
1219
- id: `${segment.id}:${roundedTime}`,
1220
- leftPercent,
1221
- topPx: rowAnchorPx,
1222
- heightPx: Math.max(1, waveformBottomPx - rowAnchorPx),
1223
- color,
1224
- opacity: row.label === "VAD" ? 0.62 : 0.48
1225
- });
1226
- }
1227
- });
1228
- });
1229
- return built;
1230
- }
1231
- function chooseTickStep(durationMs) {
1232
- const approx = durationMs / 7;
1233
- const magnitude = 10 ** Math.floor(Math.log10(Math.max(1, approx)));
1234
- const normalized = approx / magnitude;
1235
- if (normalized <= 1) return 1 * magnitude;
1236
- if (normalized <= 2) return 2 * magnitude;
1237
- if (normalized <= 5) return 5 * magnitude;
1238
- return 10 * magnitude;
1239
- }
1240
- function buildTicks(startMs, endMs, originMs) {
1241
- const durationMs = endMs - startMs;
1242
- if (!Number.isFinite(durationMs) || durationMs <= 0) return [];
1243
- const stepMs = chooseTickStep(durationMs);
1244
- const firstTick = Math.ceil((startMs - originMs) / stepMs) * stepMs + originMs;
1245
- const ticks = [];
1246
- for (let tick = firstTick; tick <= endMs; tick += stepMs) {
1247
- const leftPercent = (tick - startMs) / durationMs * 100;
1248
- ticks.push({
1249
- time: tick,
1250
- leftPercent,
1251
- label: formatRelativeTime(tick - originMs)
1252
- });
1253
- }
1254
- return ticks;
1255
- }
1256
- function createAudioContext() {
1257
- const next = window.AudioContext ?? window.webkitAudioContext;
1258
- if (!next) {
1259
- throw new Error("Web Audio is not available in this browser");
1260
- }
1261
- return new next();
1262
- }
1263
- function stopPlaybackTicker() {
1264
- if (!playbackFrame) return;
1265
- window.cancelAnimationFrame(playbackFrame);
1266
- playbackFrame = 0;
1267
- }
1268
- async function closePlaybackAudioContext() {
1269
- const context = playbackAudioContext;
1270
- playbackAudioContext = null;
1271
- if (!context) return;
1272
- await context.close().catch(() => {
1273
- });
1274
- }
1275
- async function ensurePlaybackAudioContext() {
1276
- if (!playbackAudioContext || playbackAudioContext.state === "closed") {
1277
- playbackAudioContext = createAudioContext();
1278
- }
1279
- if (playbackAudioContext.state === "suspended") {
1280
- await playbackAudioContext.resume();
1281
- }
1282
- return playbackAudioContext;
1283
- }
1284
- function getPlaybackPositionMs() {
1285
- const durationMs = getRecordingDurationMs();
1286
- if (playbackPlaying && playbackAudioContext && playbackStartedAtMs != null && playbackStartedAtContextTime != null) {
1287
- const elapsedMs = (playbackAudioContext.currentTime - playbackStartedAtContextTime) * 1e3;
1288
- const currentMs = playbackStartedAtMs + Math.max(0, elapsedMs);
1289
- return durationMs > 0 ? clamp(currentMs, 0, durationMs) : Math.max(0, currentMs);
1290
- }
1291
- return durationMs > 0 ? clamp(playbackPositionMs, 0, durationMs) : Math.max(0, playbackPositionMs);
1292
- }
1293
- function stopPlayback(preservePosition = true) {
1294
- if (preservePosition) {
1295
- playbackPositionMs = getPlaybackPositionMs();
1296
- }
1297
- const source = playbackSourceNode;
1298
- playbackSourceNode = null;
1299
- playbackStartedAtMs = null;
1300
- playbackStartedAtContextTime = null;
1301
- playbackPlaying = false;
1302
- stopPlaybackTicker();
1303
- if (!source) return;
1304
- source.onended = null;
1305
- try {
1306
- source.stop();
1307
- } catch {
1308
- }
1309
- source.disconnect();
1310
- }
1311
- function startPlaybackTicker() {
1312
- stopPlaybackTicker();
1313
- const tick = () => {
1314
- if (!playbackPlaying) {
1315
- playbackFrame = 0;
1316
- return;
1317
- }
1318
- playbackPositionMs = getPlaybackPositionMs();
1319
- playbackFrame = window.requestAnimationFrame(tick);
1320
- };
1321
- playbackFrame = window.requestAnimationFrame(tick);
1322
- }
1323
- function getRecordingDurationMs() {
1324
- if (waveform && Number.isFinite(waveform.durationMs)) {
1325
- return Math.max(0, waveform.durationMs);
1326
- }
1327
- if (playbackAudioBuffer && Number.isFinite(playbackAudioBuffer.duration)) {
1328
- return Math.max(0, playbackAudioBuffer.duration * 1e3);
1329
- }
1330
- return 0;
1331
- }
1332
- async function togglePlayback() {
1333
- if (!recording.exists || !recording.audioUrl) return;
1334
- playbackError = null;
1335
- if (playbackPlaying) {
1336
- stopPlayback(true);
1337
- return;
1338
- }
1339
- await startPlaybackAtMs(playbackPositionMs);
1340
- }
1341
- async function startPlaybackAtMs(nextMs) {
1342
- const buffer = playbackAudioBuffer;
1343
- if (!buffer) {
1344
- playbackError = "Failed to decode recording for playback";
1345
- return;
1346
- }
1347
- const durationMs = Math.max(0, buffer.duration * 1e3);
1348
- const startMs = durationMs > 0 ? nextMs >= durationMs ? 0 : clamp(nextMs, 0, durationMs) : Math.max(0, nextMs);
1349
- stopPlayback(false);
1350
- playbackPositionMs = startMs;
1351
- try {
1352
- const context = await ensurePlaybackAudioContext();
1353
- const source = context.createBufferSource();
1354
- source.buffer = buffer;
1355
- source.connect(context.destination);
1356
- source.onended = () => {
1357
- if (playbackSourceNode !== source) return;
1358
- playbackSourceNode = null;
1359
- playbackStartedAtMs = null;
1360
- playbackStartedAtContextTime = null;
1361
- playbackPlaying = false;
1362
- playbackPositionMs = durationMs;
1363
- stopPlaybackTicker();
1364
- };
1365
- playbackSourceNode = source;
1366
- playbackStartedAtMs = startMs;
1367
- playbackStartedAtContextTime = context.currentTime;
1368
- playbackPlaying = true;
1369
- playbackError = null;
1370
- startPlaybackTicker();
1371
- source.start(0, startMs / 1e3);
1372
- } catch (reason) {
1373
- stopPlayback(false);
1374
- playbackPlaying = false;
1375
- playbackError = reason instanceof Error ? reason.message : "Failed to play recording";
1376
- }
1377
- }
1378
- function compareConversationTraces(a, b) {
1379
- return a.createdAt - b.createdAt || String(a.traceId ?? "").localeCompare(String(b.traceId ?? ""));
1380
- }
1381
- function fitViewport(markDirty = true) {
1382
- const extent = conversationTraceExtent() ?? contentExtent();
1383
- if (!extent) return;
1384
- const originMs = timelineOriginMs();
1385
- viewportStartMs = originMs;
1386
- viewportEndMs = Math.max(originMs + 1e3, extent.max);
1387
- viewDirty = markDirty;
1388
- }
1389
- function clampViewport(startMs, endMs) {
1390
- const extent = contentExtent();
1391
- if (!extent) return { startMs, endMs };
1392
- const durationMs = endMs - startMs;
1393
- if (durationMs <= 0) return { startMs, endMs };
1394
- const marginMs = Math.max(1e3, durationMs * 0.25);
1395
- const minAllowed = extent.min - marginMs;
1396
- const maxAllowed = extent.max + marginMs;
1397
- if (durationMs >= maxAllowed - minAllowed) {
1398
- return { startMs: minAllowed, endMs: maxAllowed };
1399
- }
1400
- if (startMs < minAllowed) {
1401
- endMs += minAllowed - startMs;
1402
- startMs = minAllowed;
1403
- }
1404
- if (endMs > maxAllowed) {
1405
- startMs -= endMs - maxAllowed;
1406
- endMs = maxAllowed;
1407
- }
1408
- return { startMs, endMs };
1409
- }
1410
- function setViewport(startMs, endMs) {
1411
- if (!Number.isFinite(startMs) || !Number.isFinite(endMs) || endMs <= startMs) return;
1412
- const next = clampViewport(startMs, endMs);
1413
- viewportStartMs = next.startMs;
1414
- viewportEndMs = next.endMs;
1415
- }
1416
- function zoomViewport(factor, focusRatio = 0.5) {
1417
- if (viewportStartMs == null || viewportEndMs == null) return;
1418
- const currentDuration = viewportEndMs - viewportStartMs;
1419
- if (!Number.isFinite(currentDuration) || currentDuration <= 0) return;
1420
- const extent = contentExtent();
1421
- const contentDuration = extent ? extent.max - extent.min : currentDuration;
1422
- const minDuration = Math.min(100, currentDuration);
1423
- const maxDuration = Math.max(contentDuration + Math.max(2e3, contentDuration * 0.1), 5e3);
1424
- const nextDuration = clamp(currentDuration * factor, minDuration, maxDuration);
1425
- const nextFocusRatio = clamp(focusRatio, 0, 1);
1426
- const focusMs = viewportStartMs + currentDuration * nextFocusRatio;
1427
- const nextStartMs = focusMs - nextDuration * nextFocusRatio;
1428
- viewDirty = true;
1429
- setViewport(nextStartMs, nextStartMs + nextDuration);
1430
- }
1431
- function setLocalAlignmentOffset(nextOffsetMs) {
1432
- recording = { ...recording, alignmentOffsetMs: Math.round(nextOffsetMs) };
1433
- }
1434
- async function persistAlignmentOffset() {
1435
- if (!recording.exists || !recordingApiUrl()) return;
1436
- alignmentSaving = true;
1437
- alignmentError = null;
1438
- try {
1439
- const response = await fetch(recordingApiUrl(), {
1440
- method: "PATCH",
1441
- headers: {
1442
- accept: "application/json",
1443
- "content-type": "application/json"
1444
- },
1445
- body: JSON.stringify({ alignmentOffsetMs: recording.alignmentOffsetMs })
1446
- });
1447
- const payload = await readResponsePayload(response);
1448
- if (!response.ok) {
1449
- throw new Error(getResponseError(payload, "Failed to save alignment offset"));
1450
- }
1451
- recording = buildRecordingResponse(payload);
1452
- } catch (reason) {
1453
- alignmentError = reason instanceof Error ? reason.message : String(reason);
1454
- } finally {
1455
- alignmentSaving = false;
1456
- }
1457
- }
1458
- async function resetAlignment() {
1459
- if (!recording.exists) return;
1460
- viewDirty = true;
1461
- setLocalAlignmentOffset(0);
1462
- await persistAlignmentOffset();
1463
- }
1464
- $$renderer2.push(`<div class="flex h-full min-h-0 flex-col bg-rc-gray-700"><div class="flex-none border-b border-rc-gray-300/40 p-4"><div class="flex flex-wrap items-start justify-between gap-3"><div><h2 class="text-lg font-semibold text-rc-gray-100">Latency `);
1465
- if (conversationId()) {
1466
- $$renderer2.push("<!--[0-->");
1467
- $$renderer2.push(`<span class="text-rc-gray-100">for conversation Id:</span> <span class="text-rc-green-200">${escape_html(conversationId())}</span>`);
1468
- } else {
1469
- $$renderer2.push("<!--[-1-->");
1470
- }
1471
- $$renderer2.push(`<!--]--></h2> <div class="mt-2 flex flex-wrap gap-x-5 gap-y-1 text-xs text-rc-gray-300"><div><span class="text-rc-gray-400">Latency events:</span> <span class="font-mono text-rc-gray-100">${escape_html(latencyTraceCount())}</span></div> <div><span class="text-rc-gray-400">Timeline items:</span> <span class="font-mono text-rc-gray-100">${escape_html(callSegments().length)}</span></div> <div><span class="text-rc-gray-400">Recording offset:</span> <span class="font-mono text-rc-gray-100">${escape_html(fmtSignedMs(recording.alignmentOffsetMs))}</span></div> `);
1472
- if (recording.exists && playbackAbsoluteMs() != null) {
1473
- $$renderer2.push("<!--[0-->");
1474
- $$renderer2.push(`<div><span class="text-rc-gray-400">Playhead:</span> <span class="font-mono text-rc-gray-100">${escape_html(formatRelativeTime(playbackAbsoluteMs() - timelineOriginMs()))}</span></div>`);
1475
- } else {
1476
- $$renderer2.push("<!--[-1-->");
1477
- }
1478
- $$renderer2.push(`<!--]--> `);
1479
- if (viewportStartMs != null && viewportEndMs != null) {
1480
- $$renderer2.push("<!--[0-->");
1481
- $$renderer2.push(`<div><span class="text-rc-gray-400">Viewport:</span> <span class="font-mono text-rc-gray-100">${escape_html(formatRelativeTime(viewportStartMs - timelineOriginMs()))} → ${escape_html(formatRelativeTime(viewportEndMs - timelineOriginMs()))}</span></div>`);
1482
- } else {
1483
- $$renderer2.push("<!--[-1-->");
1484
- }
1485
- $$renderer2.push(`<!--]--></div></div> <div class="flex flex-wrap items-center gap-2"><input type="file" accept=".wav,audio/wav,audio/x-wav" class="hidden"/> `);
1486
- Button($$renderer2, {
1487
- variant: "secondary",
1488
- size: "small",
1489
- disabled: uploadInFlight,
1490
- onclick: () => fileInputEl?.click(),
1491
- children: ($$renderer3) => {
1492
- $$renderer3.push(`<!---->${escape_html(recording.exists ? "Replace WAV" : "Upload WAV")}`);
1493
- },
1494
- $$slots: { default: true }
1495
- });
1496
- $$renderer2.push(`<!----> `);
1497
- Button($$renderer2, {
1498
- variant: "secondary",
1499
- size: "small",
1500
- disabled: !recording.exists,
1501
- onclick: () => void togglePlayback(),
1502
- children: ($$renderer3) => {
1503
- $$renderer3.push(`<!---->${escape_html(playbackPlaying ? "Pause" : "Play")}`);
1504
- },
1505
- $$slots: { default: true }
1506
- });
1507
- $$renderer2.push(`<!----> `);
1508
- Button($$renderer2, {
1509
- variant: "secondary",
1510
- size: "small",
1511
- disabled: viewportDurationMs() == null,
1512
- onclick: () => zoomViewport(0.8),
1513
- children: ($$renderer3) => {
1514
- $$renderer3.push(`<!---->Zoom in`);
1515
- },
1516
- $$slots: { default: true }
1517
- });
1518
- $$renderer2.push(`<!----> `);
1519
- Button($$renderer2, {
1520
- variant: "secondary",
1521
- size: "small",
1522
- disabled: viewportDurationMs() == null,
1523
- onclick: () => zoomViewport(1.25),
1524
- children: ($$renderer3) => {
1525
- $$renderer3.push(`<!---->Zoom out`);
1526
- },
1527
- $$slots: { default: true }
1528
- });
1529
- $$renderer2.push(`<!----> `);
1530
- Button($$renderer2, {
1531
- variant: "secondary",
1532
- size: "small",
1533
- disabled: !(conversationTraceExtent() ?? contentExtent()),
1534
- onclick: () => fitViewport(true),
1535
- children: ($$renderer3) => {
1536
- $$renderer3.push(`<!---->Fit call`);
1537
- },
1538
- $$slots: { default: true }
1539
- });
1540
- $$renderer2.push(`<!----> `);
1541
- Button($$renderer2, {
1542
- variant: "secondary",
1543
- size: "small",
1544
- disabled: !recording.exists || alignmentSaving,
1545
- onclick: resetAlignment,
1546
- children: ($$renderer3) => {
1547
- $$renderer3.push(`<!---->Reset alignment`);
1548
- },
1549
- $$slots: { default: true }
1550
- });
1551
- $$renderer2.push(`<!----> `);
1552
- Button($$renderer2, {
1553
- variant: "secondary",
1554
- size: "small",
1555
- disabled: !traces.length,
1556
- onclick: copyLatencyStream,
1557
- children: ($$renderer3) => {
1558
- $$renderer3.push(`<!---->${escape_html(copyLatencyState === "ok" ? "Copied" : copyLatencyState === "error" ? "Copy failed" : "Copy latency stream")}`);
1559
- },
1560
- $$slots: { default: true }
1561
- });
1562
- $$renderer2.push(`<!----></div></div> `);
1563
- {
1564
- $$renderer2.push("<!--[-1-->");
1565
- }
1566
- $$renderer2.push(`<!--]--> `);
1567
- if (error) {
1568
- $$renderer2.push("<!--[0-->");
1569
- $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Failed to load latency traces: ${escape_html(error)}</div>`);
1570
- } else {
1571
- $$renderer2.push("<!--[-1-->");
1572
- }
1573
- $$renderer2.push(`<!--]--> `);
1574
- if (recordingError) {
1575
- $$renderer2.push("<!--[0-->");
1576
- $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Recording error: ${escape_html(recordingError)}</div>`);
1577
- } else {
1578
- $$renderer2.push("<!--[-1-->");
1579
- }
1580
- $$renderer2.push(`<!--]--> `);
1581
- if (alignmentError) {
1582
- $$renderer2.push("<!--[0-->");
1583
- $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Alignment error: ${escape_html(alignmentError)}</div>`);
1584
- } else {
1585
- $$renderer2.push("<!--[-1-->");
1586
- }
1587
- $$renderer2.push(`<!--]--> `);
1588
- if (playbackError) {
1589
- $$renderer2.push("<!--[0-->");
1590
- $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Playback error: ${escape_html(playbackError)}</div>`);
1591
- } else {
1592
- $$renderer2.push("<!--[-1-->");
1593
- }
1594
- $$renderer2.push(`<!--]--></div> <div class="rc-scroll min-h-0 flex-1 overflow-auto p-4"><div class="flex flex-col gap-4"><div class="rounded-md border border-rc-gray-650 p-3">`);
1595
- if (!callSegments().length) {
1596
- $$renderer2.push("<!--[1-->");
1597
- $$renderer2.push(`<div class="text-sm text-rc-gray-300">No latency events were found on this call.</div>`);
1598
- } else if (viewportStartMs == null || viewportEndMs == null) {
1599
- $$renderer2.push("<!--[2-->");
1600
- $$renderer2.push(`<div class="text-sm text-rc-gray-300">Preparing timeline…</div>`);
1601
- } else {
1602
- $$renderer2.push("<!--[-1-->");
1603
- $$renderer2.push(`<div class="grid grid-cols-[140px_minmax(0,1fr)] gap-x-3"><div class="flex flex-col"><div class="h-8"></div> <!--[-->`);
1604
- const each_array = ensure_array_like(timelineRows());
1605
- for (let rowIndex = 0, $$length = each_array.length; rowIndex < $$length; rowIndex++) {
1606
- let row = each_array[rowIndex];
1607
- $$renderer2.push(`<div class="flex items-center text-xs text-rc-gray-300"${attr_style(`height:${TIMELINE_ROW_HEIGHT_PX}px;margin-top:${rowIndex === 0 ? 0 : TIMELINE_ROW_GAP_PX}px;`)}>${escape_html(row.label)}</div>`);
1608
- }
1609
- $$renderer2.push(`<!--]--> <div class="flex items-center text-xs text-rc-gray-300"${attr_style(`height:${humanSpeechBubbleLaneHeightPx()}px;margin-top:${traceRowsToBubbleGapPx()}px;`)}>Human</div> `);
1610
- if (waveformRowVisible()) {
1611
- $$renderer2.push("<!--[0-->");
1612
- $$renderer2.push(`<div class="flex items-center text-xs text-rc-gray-300"${attr_style(`height:${WAVEFORM_ROW_HEIGHT_PX}px;margin-top:${TIMELINE_ROW_GAP_PX}px;`)}>Waveform</div>`);
1613
- } else {
1614
- $$renderer2.push("<!--[-1-->");
1615
- }
1616
- $$renderer2.push(`<!--]--></div> <div class="relative"><div class="pointer-events-none absolute inset-0 z-10 overflow-hidden"><!--[-->`);
1617
- const each_array_1 = ensure_array_like(speechBubbles());
1618
- for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
1619
- let bubble = each_array_1[$$index_1];
1620
- $$renderer2.push(`<div class="absolute -translate-x-1/2 border-l border-rc-gray-300/40"${attr_style(speechBubbleLineStyle(bubble))}></div>`);
1621
- }
1622
- $$renderer2.push(`<!--]--> <!--[-->`);
1623
- const each_array_2 = ensure_array_like(guideLines());
1624
- for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
1625
- let guide = each_array_2[$$index_2];
1626
- $$renderer2.push(`<div class="absolute -translate-x-1/2 border-l border-dashed"${attr_style(guideLineStyle(guide))}></div>`);
1627
- }
1628
- $$renderer2.push(`<!--]--> `);
1629
- if (timelineOriginLine()) {
1630
- $$renderer2.push("<!--[0-->");
1631
- $$renderer2.push(`<div class="absolute border-l border-rc-gray-200/80"${attr_style(timelineOriginLineStyle(timelineOriginLine()))}></div>`);
1632
- } else {
1633
- $$renderer2.push("<!--[-1-->");
1634
- }
1635
- $$renderer2.push(`<!--]--> `);
1636
- if (playbackCursor()) {
1637
- $$renderer2.push("<!--[0-->");
1638
- $$renderer2.push(`<div class="absolute -translate-x-1/2 border-l-2 border-rc-green-200/90"${attr_style(`left:${playbackCursor().leftPercent}%;top:${playbackCursor().topPx}px;height:${playbackCursor().heightPx}px;`)}></div> <div class="absolute h-2 w-2 -translate-x-1/2 rounded-full bg-rc-green-200"${attr_style(`left:${playbackCursor().leftPercent}%;top:${playbackCursor().topPx - 4}px;`)}></div>`);
1639
- } else {
1640
- $$renderer2.push("<!--[-1-->");
1641
- }
1642
- $$renderer2.push(`<!--]--></div> <div class="relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60"><!--[-->`);
1643
- const each_array_3 = ensure_array_like(visibleTicks());
1644
- for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {
1645
- let tick = each_array_3[$$index_3];
1646
- $$renderer2.push(`<div class="absolute inset-y-0 w-px bg-rc-gray-700/70"${attr_style(`left:${tick.leftPercent}%;`)}></div> <div${attr_class(clsx(tickLabelClass(tick)))}${attr_style(`left:${tick.leftPercent}%;`)}>${escape_html(tick.label)}</div>`);
1647
- }
1648
- $$renderer2.push(`<!--]--></div> <!--[-->`);
1649
- const each_array_4 = ensure_array_like(timelineRows());
1650
- for (let rowIndex = 0, $$length = each_array_4.length; rowIndex < $$length; rowIndex++) {
1651
- let row = each_array_4[rowIndex];
1652
- $$renderer2.push(`<div class="relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60"${attr_style(`height:${TIMELINE_ROW_HEIGHT_PX}px;margin-top:${rowIndex === 0 ? 0 : TIMELINE_ROW_GAP_PX}px;`)}><!--[-->`);
1653
- const each_array_5 = ensure_array_like(visibleTicks());
1654
- for (let $$index_4 = 0, $$length2 = each_array_5.length; $$index_4 < $$length2; $$index_4++) {
1655
- let tick = each_array_5[$$index_4];
1656
- $$renderer2.push(`<div class="absolute inset-y-0 w-px bg-rc-gray-700/60"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);
1657
- }
1658
- $$renderer2.push(`<!--]--> <!--[-->`);
1659
- const each_array_6 = ensure_array_like(row.segments);
1660
- for (let $$index_5 = 0, $$length2 = each_array_6.length; $$index_5 < $$length2; $$index_5++) {
1661
- let segment = each_array_6[$$index_5];
1662
- const style = segmentStyle(segment);
1663
- const text = segmentDisplayText(segment);
1664
- if (style) {
1665
- $$renderer2.push("<!--[0-->");
1666
- $$renderer2.push(`<div${attr_class(clsx(segmentClass(segment)))}${attr_style(style)}>`);
1667
- if (text) {
1668
- $$renderer2.push("<!--[0-->");
1669
- $$renderer2.push(`<span class="block truncate">${escape_html(text)}</span>`);
1670
- } else {
1671
- $$renderer2.push("<!--[-1-->");
1672
- }
1673
- $$renderer2.push(`<!--]--></div>`);
1674
- } else {
1675
- $$renderer2.push("<!--[-1-->");
1676
- }
1677
- $$renderer2.push(`<!--]-->`);
1678
- }
1679
- $$renderer2.push(`<!--]--></div>`);
1680
- }
1681
- $$renderer2.push(`<!--]--> <div${attr_class("relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60", void 0, {
1682
- "rounded-b": !waveformRowVisible(),
1683
- "border-b": !waveformRowVisible()
1684
- })}${attr_style(`height:${speechBubbleAreaHeightPx()}px;margin-top:${traceRowsToBubbleGapPx()}px;`)}><div class="absolute inset-x-0 top-0 border-b border-rc-gray-700/50"${attr_style(`height:${humanSpeechBubbleLaneHeightPx()}px;`)}></div> <!--[-->`);
1685
- const each_array_7 = ensure_array_like(visibleTicks());
1686
- for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {
1687
- let tick = each_array_7[$$index_7];
1688
- $$renderer2.push(`<div class="absolute inset-y-0 w-px bg-rc-gray-700/45"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);
1689
- }
1690
- $$renderer2.push(`<!--]--> <!--[-->`);
1691
- const each_array_8 = ensure_array_like(speechBubbles());
1692
- for (let $$index_8 = 0, $$length = each_array_8.length; $$index_8 < $$length; $$index_8++) {
1693
- let bubble = each_array_8[$$index_8];
1694
- $$renderer2.push(`<div${attr_class(clsx(speechBubbleClass(bubble)))}${attr_style(speechBubbleStyle(bubble))}>${escape_html(bubble.text)}</div>`);
1695
- }
1696
- $$renderer2.push(`<!--]--></div> `);
1697
- if (waveformRowVisible()) {
1698
- $$renderer2.push("<!--[0-->");
1699
- $$renderer2.push(`<div class="relative z-0 overflow-hidden rounded-b border-x border-b border-t border-rc-gray-700/60"${attr_style(`height:${WAVEFORM_ROW_HEIGHT_PX}px;margin-top:${TIMELINE_ROW_GAP_PX}px;`)}>`);
1700
- if (waveformError) {
1701
- $$renderer2.push("<!--[1-->");
1702
- $$renderer2.push(`<div class="absolute inset-0 flex items-center justify-center px-4 text-sm text-red-300">Failed to decode waveform: ${escape_html(waveformError)}</div>`);
1703
- } else {
1704
- $$renderer2.push("<!--[-1-->");
1705
- $$renderer2.push(`<canvas class="absolute inset-0 h-full w-full"></canvas>`);
1706
- }
1707
- $$renderer2.push(`<!--]--> <!--[-->`);
1708
- const each_array_9 = ensure_array_like(visibleTicks());
1709
- for (let $$index_9 = 0, $$length = each_array_9.length; $$index_9 < $$length; $$index_9++) {
1710
- let tick = each_array_9[$$index_9];
1711
- $$renderer2.push(`<div class="absolute inset-y-0 w-px bg-rc-gray-700/60"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);
1712
- }
1713
- $$renderer2.push(`<!--]--></div>`);
1714
- } else {
1715
- $$renderer2.push("<!--[-1-->");
1716
- }
1717
- $$renderer2.push(`<!--]--></div></div>`);
1718
- }
1719
- $$renderer2.push(`<!--]--></div></div></div></div> `);
1720
- {
1721
- $$renderer2.push("<!--[-1-->");
1722
- }
1723
- $$renderer2.push(`<!--]--> `);
1724
- {
1725
- $$renderer2.push("<!--[-1-->");
1726
- }
1727
- $$renderer2.push(`<!--]-->`);
1728
- });
1729
- }
1730
-
1731
- export { _page as default };
1732
- //# sourceMappingURL=_page.svelte-Yjru58jZ.js.map