@recombine-ai/platform 0.2.6-test.8 → 0.3.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 (1153) hide show
  1. package/README.md +27 -2
  2. package/bin/bosun.js +300 -0
  3. package/bin/rc-build.js +12 -0
  4. package/build/agent/index.d.ts +5 -0
  5. package/build/agent/index.d.ts.map +1 -0
  6. package/build/agent/index.js +2 -0
  7. package/build/agent/text-agent.d.ts +14 -0
  8. package/build/agent/text-agent.d.ts.map +1 -0
  9. package/build/agent/text-agent.js +28 -0
  10. package/build/agent/timed.d.ts +2 -0
  11. package/build/agent/timed.d.ts.map +1 -0
  12. package/build/agent/timed.js +9 -0
  13. package/build/agent/voice-agent.d.ts +24 -0
  14. package/build/agent/voice-agent.d.ts.map +1 -0
  15. package/build/agent/voice-agent.js +24 -0
  16. package/build/bosun/context.d.ts +23 -0
  17. package/build/bosun/context.d.ts.map +1 -0
  18. package/build/bosun/context.js +41 -0
  19. package/build/bosun/index.d.ts +11 -0
  20. package/build/bosun/index.d.ts.map +1 -0
  21. package/build/bosun/index.js +7 -0
  22. package/build/bosun/interfaces/agent.d.ts +40 -0
  23. package/build/bosun/interfaces/agent.d.ts.map +1 -0
  24. package/build/bosun/interfaces/agent.js +3 -0
  25. package/build/bosun/mock.d.ts +6 -0
  26. package/build/bosun/mock.d.ts.map +1 -0
  27. package/build/bosun/mock.js +28 -0
  28. package/build/bosun/std-mocks/call-control.d.ts +11 -0
  29. package/build/bosun/std-mocks/call-control.d.ts.map +1 -0
  30. package/build/bosun/std-mocks/call-control.js +128 -0
  31. package/build/bosun/std-mocks/platform.d.ts +8 -0
  32. package/build/bosun/std-mocks/platform.d.ts.map +1 -0
  33. package/build/bosun/std-mocks/platform.js +45 -0
  34. package/build/bosun/test-agent.d.ts +4 -0
  35. package/build/bosun/test-agent.d.ts.map +1 -0
  36. package/build/bosun/test-agent.js +70 -0
  37. package/build/bosun/test-step-registry.d.ts +14 -0
  38. package/build/bosun/test-step-registry.d.ts.map +1 -0
  39. package/build/bosun/test-step-registry.js +48 -0
  40. package/build/bosun/utils.d.ts +4 -0
  41. package/build/bosun/utils.d.ts.map +1 -0
  42. package/build/bosun/utils.js +7 -0
  43. package/build/bosun-app/backend/server.js +48570 -0
  44. package/build/bosun-app/backend/server.js.map +7 -0
  45. package/build/bosun-app/frontend/client/_app/immutable/assets/0.B5fEz2jr.css +1 -0
  46. package/build/bosun-app/frontend/client/_app/immutable/assets/0.B5fEz2jr.css.br +0 -0
  47. package/build/bosun-app/frontend/client/_app/immutable/assets/0.B5fEz2jr.css.gz +0 -0
  48. package/build/bosun-app/frontend/client/_app/immutable/assets/10.DIVePEYf.css +1 -0
  49. package/build/bosun-app/frontend/client/_app/immutable/assets/10.DIVePEYf.css.br +0 -0
  50. package/build/bosun-app/frontend/client/_app/immutable/assets/10.DIVePEYf.css.gz +0 -0
  51. package/build/bosun-app/frontend/client/_app/immutable/assets/18.C5apk4jm.css +1 -0
  52. package/build/bosun-app/frontend/client/_app/immutable/assets/18.C5apk4jm.css.br +0 -0
  53. package/build/bosun-app/frontend/client/_app/immutable/assets/18.C5apk4jm.css.gz +0 -0
  54. package/build/bosun-app/frontend/client/_app/immutable/assets/2.DtxQDOXx.css +1 -0
  55. package/build/bosun-app/frontend/client/_app/immutable/assets/2.DtxQDOXx.css.br +0 -0
  56. package/build/bosun-app/frontend/client/_app/immutable/assets/2.DtxQDOXx.css.gz +0 -0
  57. package/build/bosun-app/frontend/client/_app/immutable/assets/3.Dzh7_Q8n.css +1 -0
  58. package/build/bosun-app/frontend/client/_app/immutable/assets/3.Dzh7_Q8n.css.br +0 -0
  59. package/build/bosun-app/frontend/client/_app/immutable/assets/3.Dzh7_Q8n.css.gz +0 -0
  60. package/build/bosun-app/frontend/client/_app/immutable/assets/5.CZVw96CJ.css +1 -0
  61. package/build/bosun-app/frontend/client/_app/immutable/assets/5.CZVw96CJ.css.br +0 -0
  62. package/build/bosun-app/frontend/client/_app/immutable/assets/5.CZVw96CJ.css.gz +0 -0
  63. package/build/bosun-app/frontend/client/_app/immutable/assets/9.DlSPCZj0.css +1 -0
  64. package/build/bosun-app/frontend/client/_app/immutable/assets/9.DlSPCZj0.css.br +0 -0
  65. package/build/bosun-app/frontend/client/_app/immutable/assets/9.DlSPCZj0.css.gz +0 -0
  66. package/build/bosun-app/frontend/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css +1 -0
  67. package/build/bosun-app/frontend/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css.br +0 -0
  68. package/build/bosun-app/frontend/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css.gz +0 -0
  69. package/build/bosun-app/frontend/client/_app/immutable/assets/Input.CJ8KyccG.css +1 -0
  70. package/build/bosun-app/frontend/client/_app/immutable/assets/Input.CJ8KyccG.css.br +0 -0
  71. package/build/bosun-app/frontend/client/_app/immutable/assets/Input.CJ8KyccG.css.gz +0 -0
  72. package/build/bosun-app/frontend/client/_app/immutable/assets/Popper.CLTyHc88.css +1 -0
  73. package/build/bosun-app/frontend/client/_app/immutable/assets/Popper.CLTyHc88.css.br +0 -0
  74. package/build/bosun-app/frontend/client/_app/immutable/assets/Popper.CLTyHc88.css.gz +0 -0
  75. package/build/bosun-app/frontend/client/_app/immutable/assets/ReadOnlyMonacoDiff.iiWNRlR-.css +1 -0
  76. package/build/bosun-app/frontend/client/_app/immutable/assets/ReadOnlyMonacoDiff.iiWNRlR-.css.br +0 -0
  77. package/build/bosun-app/frontend/client/_app/immutable/assets/ReadOnlyMonacoDiff.iiWNRlR-.css.gz +0 -0
  78. package/build/bosun-app/frontend/client/_app/immutable/assets/Tab.DlCfjMY1.css +1 -0
  79. package/build/bosun-app/frontend/client/_app/immutable/assets/Tab.DlCfjMY1.css.br +0 -0
  80. package/build/bosun-app/frontend/client/_app/immutable/assets/Tab.DlCfjMY1.css.gz +0 -0
  81. package/build/bosun-app/frontend/client/_app/immutable/assets/chat-content.Cabnnfyv.css +1 -0
  82. package/build/bosun-app/frontend/client/_app/immutable/assets/chat-content.Cabnnfyv.css.br +0 -0
  83. package/build/bosun-app/frontend/client/_app/immutable/assets/chat-content.Cabnnfyv.css.gz +0 -0
  84. package/build/bosun-app/frontend/client/_app/immutable/assets/codicon.DCmgc-ay.ttf +0 -0
  85. package/build/bosun-app/frontend/client/_app/immutable/assets/editor.BMIWPGx3.css +1 -0
  86. package/build/bosun-app/frontend/client/_app/immutable/assets/editor.BMIWPGx3.css.br +0 -0
  87. package/build/bosun-app/frontend/client/_app/immutable/assets/editor.BMIWPGx3.css.gz +0 -0
  88. package/build/bosun-app/frontend/client/_app/immutable/chunks/-UyI9lYi.js +1 -0
  89. package/build/bosun-app/frontend/client/_app/immutable/chunks/-UyI9lYi.js.br +0 -0
  90. package/build/bosun-app/frontend/client/_app/immutable/chunks/-UyI9lYi.js.gz +0 -0
  91. package/build/bosun-app/frontend/client/_app/immutable/chunks/0cvrggvQ.js +6 -0
  92. package/build/bosun-app/frontend/client/_app/immutable/chunks/0cvrggvQ.js.br +0 -0
  93. package/build/bosun-app/frontend/client/_app/immutable/chunks/0cvrggvQ.js.gz +0 -0
  94. package/build/bosun-app/frontend/client/_app/immutable/chunks/25W9uPmb.js +6 -0
  95. package/build/bosun-app/frontend/client/_app/immutable/chunks/25W9uPmb.js.br +0 -0
  96. package/build/bosun-app/frontend/client/_app/immutable/chunks/25W9uPmb.js.gz +0 -0
  97. package/build/bosun-app/frontend/client/_app/immutable/chunks/4Ik7cdeQ.js +8 -0
  98. package/build/bosun-app/frontend/client/_app/immutable/chunks/4Ik7cdeQ.js.br +0 -0
  99. package/build/bosun-app/frontend/client/_app/immutable/chunks/4Ik7cdeQ.js.gz +0 -0
  100. package/build/bosun-app/frontend/client/_app/immutable/chunks/5Rap-vPy.js +6 -0
  101. package/build/bosun-app/frontend/client/_app/immutable/chunks/5Rap-vPy.js.br +3 -0
  102. package/build/bosun-app/frontend/client/_app/immutable/chunks/5Rap-vPy.js.gz +0 -0
  103. package/build/bosun-app/frontend/client/_app/immutable/chunks/9mOMnnWN.js +1 -0
  104. package/build/bosun-app/frontend/client/_app/immutable/chunks/9mOMnnWN.js.br +0 -0
  105. package/build/bosun-app/frontend/client/_app/immutable/chunks/9mOMnnWN.js.gz +0 -0
  106. package/build/bosun-app/frontend/client/_app/immutable/chunks/B03wrqEc.js +6 -0
  107. package/build/bosun-app/frontend/client/_app/immutable/chunks/B03wrqEc.js.br +0 -0
  108. package/build/bosun-app/frontend/client/_app/immutable/chunks/B03wrqEc.js.gz +0 -0
  109. package/build/bosun-app/frontend/client/_app/immutable/chunks/B0XwC4Ot.js +1 -0
  110. package/build/bosun-app/frontend/client/_app/immutable/chunks/B0XwC4Ot.js.br +0 -0
  111. package/build/bosun-app/frontend/client/_app/immutable/chunks/B0XwC4Ot.js.gz +0 -0
  112. package/build/bosun-app/frontend/client/_app/immutable/chunks/B0nqNj93.js +2 -0
  113. package/build/bosun-app/frontend/client/_app/immutable/chunks/B0nqNj93.js.br +0 -0
  114. package/build/bosun-app/frontend/client/_app/immutable/chunks/B0nqNj93.js.gz +0 -0
  115. package/build/bosun-app/frontend/client/_app/immutable/chunks/B1dhmiqQ.js +1 -0
  116. package/build/bosun-app/frontend/client/_app/immutable/chunks/B1dhmiqQ.js.br +0 -0
  117. package/build/bosun-app/frontend/client/_app/immutable/chunks/B1dhmiqQ.js.gz +0 -0
  118. package/build/bosun-app/frontend/client/_app/immutable/chunks/B5zXfXm9.js +6 -0
  119. package/build/bosun-app/frontend/client/_app/immutable/chunks/B5zXfXm9.js.br +0 -0
  120. package/build/bosun-app/frontend/client/_app/immutable/chunks/B5zXfXm9.js.gz +0 -0
  121. package/build/bosun-app/frontend/client/_app/immutable/chunks/B8q_gCwD.js +1 -0
  122. package/build/bosun-app/frontend/client/_app/immutable/chunks/B8q_gCwD.js.br +2 -0
  123. package/build/bosun-app/frontend/client/_app/immutable/chunks/B8q_gCwD.js.gz +0 -0
  124. package/build/bosun-app/frontend/client/_app/immutable/chunks/B9Xyijhd.js +6 -0
  125. package/build/bosun-app/frontend/client/_app/immutable/chunks/B9Xyijhd.js.br +0 -0
  126. package/build/bosun-app/frontend/client/_app/immutable/chunks/B9Xyijhd.js.gz +0 -0
  127. package/build/bosun-app/frontend/client/_app/immutable/chunks/B9pMb6OP.js +1 -0
  128. package/build/bosun-app/frontend/client/_app/immutable/chunks/B9pMb6OP.js.br +0 -0
  129. package/build/bosun-app/frontend/client/_app/immutable/chunks/B9pMb6OP.js.gz +0 -0
  130. package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js +2 -0
  131. package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.br +0 -0
  132. package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.gz +0 -0
  133. package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js +1 -0
  134. package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.br +0 -0
  135. package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.gz +0 -0
  136. package/build/bosun-app/frontend/client/_app/immutable/chunks/BFG1Mk7z.js +6 -0
  137. package/build/bosun-app/frontend/client/_app/immutable/chunks/BFG1Mk7z.js.br +0 -0
  138. package/build/bosun-app/frontend/client/_app/immutable/chunks/BFG1Mk7z.js.gz +0 -0
  139. package/build/bosun-app/frontend/client/_app/immutable/chunks/BIv9DU6q.js +303 -0
  140. package/build/bosun-app/frontend/client/_app/immutable/chunks/BIv9DU6q.js.br +0 -0
  141. package/build/bosun-app/frontend/client/_app/immutable/chunks/BIv9DU6q.js.gz +0 -0
  142. package/build/bosun-app/frontend/client/_app/immutable/chunks/BJ9KKLWf.js +1 -0
  143. package/build/bosun-app/frontend/client/_app/immutable/chunks/BJ9KKLWf.js.br +0 -0
  144. package/build/bosun-app/frontend/client/_app/immutable/chunks/BJ9KKLWf.js.gz +0 -0
  145. package/build/bosun-app/frontend/client/_app/immutable/chunks/BKW04JRY.js +1 -0
  146. package/build/bosun-app/frontend/client/_app/immutable/chunks/BKW04JRY.js.br +0 -0
  147. package/build/bosun-app/frontend/client/_app/immutable/chunks/BKW04JRY.js.gz +0 -0
  148. package/build/bosun-app/frontend/client/_app/immutable/chunks/BKlk5iyT.js +6 -0
  149. package/build/bosun-app/frontend/client/_app/immutable/chunks/BKlk5iyT.js.br +0 -0
  150. package/build/bosun-app/frontend/client/_app/immutable/chunks/BKlk5iyT.js.gz +0 -0
  151. package/build/bosun-app/frontend/client/_app/immutable/chunks/BMYSavKM.js +6 -0
  152. package/build/bosun-app/frontend/client/_app/immutable/chunks/BMYSavKM.js.br +0 -0
  153. package/build/bosun-app/frontend/client/_app/immutable/chunks/BMYSavKM.js.gz +0 -0
  154. package/build/bosun-app/frontend/client/_app/immutable/chunks/BOiOqwrA.js +3 -0
  155. package/build/bosun-app/frontend/client/_app/immutable/chunks/BOiOqwrA.js.br +0 -0
  156. package/build/bosun-app/frontend/client/_app/immutable/chunks/BOiOqwrA.js.gz +0 -0
  157. package/build/bosun-app/frontend/client/_app/immutable/chunks/BQIf5msi.js +1 -0
  158. package/build/bosun-app/frontend/client/_app/immutable/chunks/BQIf5msi.js.br +1 -0
  159. package/build/bosun-app/frontend/client/_app/immutable/chunks/BQIf5msi.js.gz +0 -0
  160. package/build/bosun-app/frontend/client/_app/immutable/chunks/BSkB5QuD.js +6 -0
  161. package/build/bosun-app/frontend/client/_app/immutable/chunks/BSkB5QuD.js.br +0 -0
  162. package/build/bosun-app/frontend/client/_app/immutable/chunks/BSkB5QuD.js.gz +0 -0
  163. package/build/bosun-app/frontend/client/_app/immutable/chunks/BU7aeYn4.js +1 -0
  164. package/build/bosun-app/frontend/client/_app/immutable/chunks/BU7aeYn4.js.br +0 -0
  165. package/build/bosun-app/frontend/client/_app/immutable/chunks/BU7aeYn4.js.gz +0 -0
  166. package/build/bosun-app/frontend/client/_app/immutable/chunks/BUkXSKT3.js +1 -0
  167. package/build/bosun-app/frontend/client/_app/immutable/chunks/BUkXSKT3.js.br +0 -0
  168. package/build/bosun-app/frontend/client/_app/immutable/chunks/BUkXSKT3.js.gz +0 -0
  169. package/build/bosun-app/frontend/client/_app/immutable/chunks/BW6P0Ecp.js +33 -0
  170. package/build/bosun-app/frontend/client/_app/immutable/chunks/BW6P0Ecp.js.br +0 -0
  171. package/build/bosun-app/frontend/client/_app/immutable/chunks/BW6P0Ecp.js.gz +0 -0
  172. package/build/bosun-app/frontend/client/_app/immutable/chunks/BY8d35y9.js +16 -0
  173. package/build/bosun-app/frontend/client/_app/immutable/chunks/BY8d35y9.js.br +0 -0
  174. package/build/bosun-app/frontend/client/_app/immutable/chunks/BY8d35y9.js.gz +0 -0
  175. package/build/bosun-app/frontend/client/_app/immutable/chunks/B_c3zf-v.js +6 -0
  176. package/build/bosun-app/frontend/client/_app/immutable/chunks/B_c3zf-v.js.br +0 -0
  177. package/build/bosun-app/frontend/client/_app/immutable/chunks/B_c3zf-v.js.gz +0 -0
  178. package/build/bosun-app/frontend/client/_app/immutable/chunks/B_fMsGYe.js +6 -0
  179. package/build/bosun-app/frontend/client/_app/immutable/chunks/B_fMsGYe.js.br +0 -0
  180. package/build/bosun-app/frontend/client/_app/immutable/chunks/B_fMsGYe.js.gz +0 -0
  181. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaJupSGV.js +6 -0
  182. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaJupSGV.js.br +0 -0
  183. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaJupSGV.js.gz +0 -0
  184. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaLxmfj-.js +6 -0
  185. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaLxmfj-.js.br +0 -0
  186. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaLxmfj-.js.gz +0 -0
  187. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bc-ZgV77.js +6 -0
  188. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bc-ZgV77.js.br +0 -0
  189. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bc-ZgV77.js.gz +0 -0
  190. package/build/bosun-app/frontend/client/_app/immutable/chunks/BcbX6huO.js +1 -0
  191. package/build/bosun-app/frontend/client/_app/immutable/chunks/BcbX6huO.js.br +0 -0
  192. package/build/bosun-app/frontend/client/_app/immutable/chunks/BcbX6huO.js.gz +0 -0
  193. package/build/bosun-app/frontend/client/_app/immutable/chunks/BfEKNvv3.js +7 -0
  194. package/build/bosun-app/frontend/client/_app/immutable/chunks/BfEKNvv3.js.br +0 -0
  195. package/build/bosun-app/frontend/client/_app/immutable/chunks/BfEKNvv3.js.gz +0 -0
  196. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bhzvs7bI.js +6 -0
  197. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bhzvs7bI.js.br +0 -0
  198. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bhzvs7bI.js.gz +0 -0
  199. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bio4gycK.js +6 -0
  200. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bio4gycK.js.br +0 -0
  201. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bio4gycK.js.gz +0 -0
  202. package/build/bosun-app/frontend/client/_app/immutable/chunks/BoFRg7Ot.js +6 -0
  203. package/build/bosun-app/frontend/client/_app/immutable/chunks/BoFRg7Ot.js.br +0 -0
  204. package/build/bosun-app/frontend/client/_app/immutable/chunks/BoFRg7Ot.js.gz +0 -0
  205. package/build/bosun-app/frontend/client/_app/immutable/chunks/BoX_BZZY.js +1 -0
  206. package/build/bosun-app/frontend/client/_app/immutable/chunks/BoX_BZZY.js.br +0 -0
  207. package/build/bosun-app/frontend/client/_app/immutable/chunks/BoX_BZZY.js.gz +0 -0
  208. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bp8N7Z1t.js +1 -0
  209. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bp8N7Z1t.js.br +0 -0
  210. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bp8N7Z1t.js.gz +0 -0
  211. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bqgm2twL.js +6 -0
  212. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bqgm2twL.js.br +0 -0
  213. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bqgm2twL.js.gz +0 -0
  214. package/build/bosun-app/frontend/client/_app/immutable/chunks/BrgZPUOV.js +6 -0
  215. package/build/bosun-app/frontend/client/_app/immutable/chunks/BrgZPUOV.js.br +0 -0
  216. package/build/bosun-app/frontend/client/_app/immutable/chunks/BrgZPUOV.js.gz +0 -0
  217. package/build/bosun-app/frontend/client/_app/immutable/chunks/BsTHnhdd.js +7 -0
  218. package/build/bosun-app/frontend/client/_app/immutable/chunks/BsTHnhdd.js.br +0 -0
  219. package/build/bosun-app/frontend/client/_app/immutable/chunks/BsTHnhdd.js.gz +0 -0
  220. package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js +1 -0
  221. package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.br +0 -0
  222. package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.gz +0 -0
  223. package/build/bosun-app/frontend/client/_app/immutable/chunks/C1FmrZbK.js +1 -0
  224. package/build/bosun-app/frontend/client/_app/immutable/chunks/C1FmrZbK.js.br +0 -0
  225. package/build/bosun-app/frontend/client/_app/immutable/chunks/C1FmrZbK.js.gz +0 -0
  226. package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js +9 -0
  227. package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.br +0 -0
  228. package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.gz +0 -0
  229. package/build/bosun-app/frontend/client/_app/immutable/chunks/C4mbwMvt.js +6 -0
  230. package/build/bosun-app/frontend/client/_app/immutable/chunks/C4mbwMvt.js.br +0 -0
  231. package/build/bosun-app/frontend/client/_app/immutable/chunks/C4mbwMvt.js.gz +0 -0
  232. package/build/bosun-app/frontend/client/_app/immutable/chunks/C5WLch3f.js +6 -0
  233. package/build/bosun-app/frontend/client/_app/immutable/chunks/C5WLch3f.js.br +0 -0
  234. package/build/bosun-app/frontend/client/_app/immutable/chunks/C5WLch3f.js.gz +0 -0
  235. package/build/bosun-app/frontend/client/_app/immutable/chunks/C9yBjdYI.js +2 -0
  236. package/build/bosun-app/frontend/client/_app/immutable/chunks/C9yBjdYI.js.br +0 -0
  237. package/build/bosun-app/frontend/client/_app/immutable/chunks/C9yBjdYI.js.gz +0 -0
  238. package/build/bosun-app/frontend/client/_app/immutable/chunks/CAFoob5N.js +6 -0
  239. package/build/bosun-app/frontend/client/_app/immutable/chunks/CAFoob5N.js.br +0 -0
  240. package/build/bosun-app/frontend/client/_app/immutable/chunks/CAFoob5N.js.gz +0 -0
  241. package/build/bosun-app/frontend/client/_app/immutable/chunks/CCSDG5nI.js +6 -0
  242. package/build/bosun-app/frontend/client/_app/immutable/chunks/CCSDG5nI.js.br +0 -0
  243. package/build/bosun-app/frontend/client/_app/immutable/chunks/CCSDG5nI.js.gz +0 -0
  244. package/build/bosun-app/frontend/client/_app/immutable/chunks/CCYriF4C.js +1 -0
  245. package/build/bosun-app/frontend/client/_app/immutable/chunks/CCYriF4C.js.br +0 -0
  246. package/build/bosun-app/frontend/client/_app/immutable/chunks/CCYriF4C.js.gz +0 -0
  247. package/build/bosun-app/frontend/client/_app/immutable/chunks/CDGzqUPQ.js +6 -0
  248. package/build/bosun-app/frontend/client/_app/immutable/chunks/CDGzqUPQ.js.br +0 -0
  249. package/build/bosun-app/frontend/client/_app/immutable/chunks/CDGzqUPQ.js.gz +0 -0
  250. package/build/bosun-app/frontend/client/_app/immutable/chunks/CDntyWJ8.js +6 -0
  251. package/build/bosun-app/frontend/client/_app/immutable/chunks/CDntyWJ8.js.br +0 -0
  252. package/build/bosun-app/frontend/client/_app/immutable/chunks/CDntyWJ8.js.gz +0 -0
  253. package/build/bosun-app/frontend/client/_app/immutable/chunks/CFKIUWau.js +6 -0
  254. package/build/bosun-app/frontend/client/_app/immutable/chunks/CFKIUWau.js.br +0 -0
  255. package/build/bosun-app/frontend/client/_app/immutable/chunks/CFKIUWau.js.gz +0 -0
  256. package/build/bosun-app/frontend/client/_app/immutable/chunks/CFOPXBzS.js +6 -0
  257. package/build/bosun-app/frontend/client/_app/immutable/chunks/CFOPXBzS.js.br +0 -0
  258. package/build/bosun-app/frontend/client/_app/immutable/chunks/CFOPXBzS.js.gz +0 -0
  259. package/build/bosun-app/frontend/client/_app/immutable/chunks/CGinwM47.js +8 -0
  260. package/build/bosun-app/frontend/client/_app/immutable/chunks/CGinwM47.js.br +0 -0
  261. package/build/bosun-app/frontend/client/_app/immutable/chunks/CGinwM47.js.gz +0 -0
  262. package/build/bosun-app/frontend/client/_app/immutable/chunks/CHCMKZAC.js +1 -0
  263. package/build/bosun-app/frontend/client/_app/immutable/chunks/CHCMKZAC.js.br +0 -0
  264. package/build/bosun-app/frontend/client/_app/immutable/chunks/CHCMKZAC.js.gz +0 -0
  265. package/build/bosun-app/frontend/client/_app/immutable/chunks/CLLBncYj.js +6 -0
  266. package/build/bosun-app/frontend/client/_app/immutable/chunks/CLLBncYj.js.br +0 -0
  267. package/build/bosun-app/frontend/client/_app/immutable/chunks/CLLBncYj.js.gz +0 -0
  268. package/build/bosun-app/frontend/client/_app/immutable/chunks/COyEY5Pt.js +7 -0
  269. package/build/bosun-app/frontend/client/_app/immutable/chunks/COyEY5Pt.js.br +0 -0
  270. package/build/bosun-app/frontend/client/_app/immutable/chunks/COyEY5Pt.js.gz +0 -0
  271. package/build/bosun-app/frontend/client/_app/immutable/chunks/CPajHgWi.js +6 -0
  272. package/build/bosun-app/frontend/client/_app/immutable/chunks/CPajHgWi.js.br +0 -0
  273. package/build/bosun-app/frontend/client/_app/immutable/chunks/CPajHgWi.js.gz +0 -0
  274. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR-uVjxM.js +1 -0
  275. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR-uVjxM.js.br +0 -0
  276. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR-uVjxM.js.gz +0 -0
  277. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js +1 -0
  278. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.br +0 -0
  279. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.gz +0 -0
  280. package/build/bosun-app/frontend/client/_app/immutable/chunks/CVwtpugi.js +6 -0
  281. package/build/bosun-app/frontend/client/_app/immutable/chunks/CVwtpugi.js.br +0 -0
  282. package/build/bosun-app/frontend/client/_app/immutable/chunks/CVwtpugi.js.gz +0 -0
  283. package/build/bosun-app/frontend/client/_app/immutable/chunks/CX-rkNHf.js +6 -0
  284. package/build/bosun-app/frontend/client/_app/immutable/chunks/CX-rkNHf.js.br +0 -0
  285. package/build/bosun-app/frontend/client/_app/immutable/chunks/CX-rkNHf.js.gz +0 -0
  286. package/build/bosun-app/frontend/client/_app/immutable/chunks/CXOwvkN_.js +6 -0
  287. package/build/bosun-app/frontend/client/_app/immutable/chunks/CXOwvkN_.js.br +0 -0
  288. package/build/bosun-app/frontend/client/_app/immutable/chunks/CXOwvkN_.js.gz +0 -0
  289. package/build/bosun-app/frontend/client/_app/immutable/chunks/CdQndTaG.js +6 -0
  290. package/build/bosun-app/frontend/client/_app/immutable/chunks/CdQndTaG.js.br +0 -0
  291. package/build/bosun-app/frontend/client/_app/immutable/chunks/CdQndTaG.js.gz +0 -0
  292. package/build/bosun-app/frontend/client/_app/immutable/chunks/Ce3n6wWz.js +6 -0
  293. package/build/bosun-app/frontend/client/_app/immutable/chunks/Ce3n6wWz.js.br +0 -0
  294. package/build/bosun-app/frontend/client/_app/immutable/chunks/Ce3n6wWz.js.gz +0 -0
  295. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cg7bfA9N.js +6 -0
  296. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cg7bfA9N.js.br +0 -0
  297. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cg7bfA9N.js.gz +0 -0
  298. package/build/bosun-app/frontend/client/_app/immutable/chunks/ClLUwVGq.js +1 -0
  299. package/build/bosun-app/frontend/client/_app/immutable/chunks/ClLUwVGq.js.br +0 -0
  300. package/build/bosun-app/frontend/client/_app/immutable/chunks/ClLUwVGq.js.gz +0 -0
  301. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cp1zYvxS.js +6 -0
  302. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cp1zYvxS.js.br +0 -0
  303. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cp1zYvxS.js.gz +0 -0
  304. package/build/bosun-app/frontend/client/_app/immutable/chunks/CpIb_Oan.js +6 -0
  305. package/build/bosun-app/frontend/client/_app/immutable/chunks/CpIb_Oan.js.br +0 -0
  306. package/build/bosun-app/frontend/client/_app/immutable/chunks/CpIb_Oan.js.gz +0 -0
  307. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cpb6xl2v.js +6 -0
  308. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cpb6xl2v.js.br +0 -0
  309. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cpb6xl2v.js.gz +0 -0
  310. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cphgjts3.js +6 -0
  311. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cphgjts3.js.br +0 -0
  312. package/build/bosun-app/frontend/client/_app/immutable/chunks/Cphgjts3.js.gz +0 -0
  313. package/build/bosun-app/frontend/client/_app/immutable/chunks/CrxwEwqu.js +6 -0
  314. package/build/bosun-app/frontend/client/_app/immutable/chunks/CrxwEwqu.js.br +0 -0
  315. package/build/bosun-app/frontend/client/_app/immutable/chunks/CrxwEwqu.js.gz +0 -0
  316. package/build/bosun-app/frontend/client/_app/immutable/chunks/CwNk8-XU.js +6 -0
  317. package/build/bosun-app/frontend/client/_app/immutable/chunks/CwNk8-XU.js.br +0 -0
  318. package/build/bosun-app/frontend/client/_app/immutable/chunks/CwNk8-XU.js.gz +0 -0
  319. package/build/bosun-app/frontend/client/_app/immutable/chunks/CwmAWymP.js +6 -0
  320. package/build/bosun-app/frontend/client/_app/immutable/chunks/CwmAWymP.js.br +0 -0
  321. package/build/bosun-app/frontend/client/_app/immutable/chunks/CwmAWymP.js.gz +0 -0
  322. package/build/bosun-app/frontend/client/_app/immutable/chunks/CzKuDChf.js +6 -0
  323. package/build/bosun-app/frontend/client/_app/immutable/chunks/CzKuDChf.js.br +0 -0
  324. package/build/bosun-app/frontend/client/_app/immutable/chunks/CzKuDChf.js.gz +0 -0
  325. package/build/bosun-app/frontend/client/_app/immutable/chunks/D-MeaMDU.js +6 -0
  326. package/build/bosun-app/frontend/client/_app/immutable/chunks/D-MeaMDU.js.br +0 -0
  327. package/build/bosun-app/frontend/client/_app/immutable/chunks/D-MeaMDU.js.gz +0 -0
  328. package/build/bosun-app/frontend/client/_app/immutable/chunks/D3h14YRZ.js +8 -0
  329. package/build/bosun-app/frontend/client/_app/immutable/chunks/D3h14YRZ.js.br +0 -0
  330. package/build/bosun-app/frontend/client/_app/immutable/chunks/D3h14YRZ.js.gz +0 -0
  331. package/build/bosun-app/frontend/client/_app/immutable/chunks/D5C2fndG.js +6 -0
  332. package/build/bosun-app/frontend/client/_app/immutable/chunks/D5C2fndG.js.br +0 -0
  333. package/build/bosun-app/frontend/client/_app/immutable/chunks/D5C2fndG.js.gz +0 -0
  334. package/build/bosun-app/frontend/client/_app/immutable/chunks/DDMPVpvs.js +6 -0
  335. package/build/bosun-app/frontend/client/_app/immutable/chunks/DDMPVpvs.js.br +0 -0
  336. package/build/bosun-app/frontend/client/_app/immutable/chunks/DDMPVpvs.js.gz +0 -0
  337. package/build/bosun-app/frontend/client/_app/immutable/chunks/DDwshQtU.js +6 -0
  338. package/build/bosun-app/frontend/client/_app/immutable/chunks/DDwshQtU.js.br +0 -0
  339. package/build/bosun-app/frontend/client/_app/immutable/chunks/DDwshQtU.js.gz +0 -0
  340. package/build/bosun-app/frontend/client/_app/immutable/chunks/DEz15oJb.js +1 -0
  341. package/build/bosun-app/frontend/client/_app/immutable/chunks/DEz15oJb.js.br +0 -0
  342. package/build/bosun-app/frontend/client/_app/immutable/chunks/DEz15oJb.js.gz +0 -0
  343. package/build/bosun-app/frontend/client/_app/immutable/chunks/DGc0An5V.js +1 -0
  344. package/build/bosun-app/frontend/client/_app/immutable/chunks/DGc0An5V.js.br +0 -0
  345. package/build/bosun-app/frontend/client/_app/immutable/chunks/DGc0An5V.js.gz +0 -0
  346. package/build/bosun-app/frontend/client/_app/immutable/chunks/DHaeiCBh.js +6 -0
  347. package/build/bosun-app/frontend/client/_app/immutable/chunks/DHaeiCBh.js.br +0 -0
  348. package/build/bosun-app/frontend/client/_app/immutable/chunks/DHaeiCBh.js.gz +0 -0
  349. package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js +1 -0
  350. package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.br +0 -0
  351. package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.gz +0 -0
  352. package/build/bosun-app/frontend/client/_app/immutable/chunks/DLQqXQ6R.js +751 -0
  353. package/build/bosun-app/frontend/client/_app/immutable/chunks/DLQqXQ6R.js.br +0 -0
  354. package/build/bosun-app/frontend/client/_app/immutable/chunks/DLQqXQ6R.js.gz +0 -0
  355. package/build/bosun-app/frontend/client/_app/immutable/chunks/DNvczHUR.js +1 -0
  356. package/build/bosun-app/frontend/client/_app/immutable/chunks/DNvczHUR.js.br +0 -0
  357. package/build/bosun-app/frontend/client/_app/immutable/chunks/DNvczHUR.js.gz +0 -0
  358. package/build/bosun-app/frontend/client/_app/immutable/chunks/DRIMs3uA.js +6 -0
  359. package/build/bosun-app/frontend/client/_app/immutable/chunks/DRIMs3uA.js.br +0 -0
  360. package/build/bosun-app/frontend/client/_app/immutable/chunks/DRIMs3uA.js.gz +0 -0
  361. package/build/bosun-app/frontend/client/_app/immutable/chunks/DSZPf7rp.js +6 -0
  362. package/build/bosun-app/frontend/client/_app/immutable/chunks/DSZPf7rp.js.br +0 -0
  363. package/build/bosun-app/frontend/client/_app/immutable/chunks/DSZPf7rp.js.gz +0 -0
  364. package/build/bosun-app/frontend/client/_app/immutable/chunks/DTECt2xU.js +6 -0
  365. package/build/bosun-app/frontend/client/_app/immutable/chunks/DTECt2xU.js.br +0 -0
  366. package/build/bosun-app/frontend/client/_app/immutable/chunks/DTECt2xU.js.gz +0 -0
  367. package/build/bosun-app/frontend/client/_app/immutable/chunks/DUeN9t8P.js +6 -0
  368. package/build/bosun-app/frontend/client/_app/immutable/chunks/DUeN9t8P.js.br +0 -0
  369. package/build/bosun-app/frontend/client/_app/immutable/chunks/DUeN9t8P.js.gz +0 -0
  370. package/build/bosun-app/frontend/client/_app/immutable/chunks/DWH0347h.js +6 -0
  371. package/build/bosun-app/frontend/client/_app/immutable/chunks/DWH0347h.js.br +0 -0
  372. package/build/bosun-app/frontend/client/_app/immutable/chunks/DWH0347h.js.gz +0 -0
  373. package/build/bosun-app/frontend/client/_app/immutable/chunks/DXsF11_5.js +1 -0
  374. package/build/bosun-app/frontend/client/_app/immutable/chunks/DXsF11_5.js.br +2 -0
  375. package/build/bosun-app/frontend/client/_app/immutable/chunks/DXsF11_5.js.gz +0 -0
  376. package/build/bosun-app/frontend/client/_app/immutable/chunks/DXyYeYxl.js +6 -0
  377. package/build/bosun-app/frontend/client/_app/immutable/chunks/DXyYeYxl.js.br +0 -0
  378. package/build/bosun-app/frontend/client/_app/immutable/chunks/DXyYeYxl.js.gz +0 -0
  379. package/build/bosun-app/frontend/client/_app/immutable/chunks/DZxMt77D.js +6 -0
  380. package/build/bosun-app/frontend/client/_app/immutable/chunks/DZxMt77D.js.br +0 -0
  381. package/build/bosun-app/frontend/client/_app/immutable/chunks/DZxMt77D.js.gz +0 -0
  382. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dba0_Upf.js +1 -0
  383. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dba0_Upf.js.br +2 -0
  384. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dba0_Upf.js.gz +0 -0
  385. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dd3NCNK9.js +6 -0
  386. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dd3NCNK9.js.br +0 -0
  387. package/build/bosun-app/frontend/client/_app/immutable/chunks/Dd3NCNK9.js.gz +0 -0
  388. package/build/bosun-app/frontend/client/_app/immutable/chunks/DfzH4Xui.js +6 -0
  389. package/build/bosun-app/frontend/client/_app/immutable/chunks/DfzH4Xui.js.br +0 -0
  390. package/build/bosun-app/frontend/client/_app/immutable/chunks/DfzH4Xui.js.gz +0 -0
  391. package/build/bosun-app/frontend/client/_app/immutable/chunks/DgGeUDDh.js +1 -0
  392. package/build/bosun-app/frontend/client/_app/immutable/chunks/DgGeUDDh.js.br +0 -0
  393. package/build/bosun-app/frontend/client/_app/immutable/chunks/DgGeUDDh.js.gz +0 -0
  394. package/build/bosun-app/frontend/client/_app/immutable/chunks/DgyLZaXg.js +6 -0
  395. package/build/bosun-app/frontend/client/_app/immutable/chunks/DgyLZaXg.js.br +0 -0
  396. package/build/bosun-app/frontend/client/_app/immutable/chunks/DgyLZaXg.js.gz +0 -0
  397. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjDhNM9l.js +9 -0
  398. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjDhNM9l.js.br +0 -0
  399. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjDhNM9l.js.gz +0 -0
  400. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjujL8K1.js +1 -0
  401. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjujL8K1.js.br +0 -0
  402. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjujL8K1.js.gz +0 -0
  403. package/build/bosun-app/frontend/client/_app/immutable/chunks/DnHyzjbg.js +6 -0
  404. package/build/bosun-app/frontend/client/_app/immutable/chunks/DnHyzjbg.js.br +0 -0
  405. package/build/bosun-app/frontend/client/_app/immutable/chunks/DnHyzjbg.js.gz +0 -0
  406. package/build/bosun-app/frontend/client/_app/immutable/chunks/DnMQeiTY.js +1 -0
  407. package/build/bosun-app/frontend/client/_app/immutable/chunks/DnMQeiTY.js.br +0 -0
  408. package/build/bosun-app/frontend/client/_app/immutable/chunks/DnMQeiTY.js.gz +0 -0
  409. package/build/bosun-app/frontend/client/_app/immutable/chunks/DrQuvNYM.js +6 -0
  410. package/build/bosun-app/frontend/client/_app/immutable/chunks/DrQuvNYM.js.br +0 -0
  411. package/build/bosun-app/frontend/client/_app/immutable/chunks/DrQuvNYM.js.gz +0 -0
  412. package/build/bosun-app/frontend/client/_app/immutable/chunks/Drc7WvVn.js +6 -0
  413. package/build/bosun-app/frontend/client/_app/immutable/chunks/Drc7WvVn.js.br +0 -0
  414. package/build/bosun-app/frontend/client/_app/immutable/chunks/Drc7WvVn.js.gz +0 -0
  415. package/build/bosun-app/frontend/client/_app/immutable/chunks/DuQdgMax.js +1 -0
  416. package/build/bosun-app/frontend/client/_app/immutable/chunks/DuQdgMax.js.br +0 -0
  417. package/build/bosun-app/frontend/client/_app/immutable/chunks/DuQdgMax.js.gz +0 -0
  418. package/build/bosun-app/frontend/client/_app/immutable/chunks/DwJ7jVG9.js +8 -0
  419. package/build/bosun-app/frontend/client/_app/immutable/chunks/DwJ7jVG9.js.br +0 -0
  420. package/build/bosun-app/frontend/client/_app/immutable/chunks/DwJ7jVG9.js.gz +0 -0
  421. package/build/bosun-app/frontend/client/_app/immutable/chunks/DyP6w7ZV.js +6 -0
  422. package/build/bosun-app/frontend/client/_app/immutable/chunks/DyP6w7ZV.js.br +0 -0
  423. package/build/bosun-app/frontend/client/_app/immutable/chunks/DyP6w7ZV.js.gz +0 -0
  424. package/build/bosun-app/frontend/client/_app/immutable/chunks/IKQcdn9t.js +1 -0
  425. package/build/bosun-app/frontend/client/_app/immutable/chunks/IKQcdn9t.js.br +2 -0
  426. package/build/bosun-app/frontend/client/_app/immutable/chunks/IKQcdn9t.js.gz +0 -0
  427. package/build/bosun-app/frontend/client/_app/immutable/chunks/OERrxy3_.js +64 -0
  428. package/build/bosun-app/frontend/client/_app/immutable/chunks/OERrxy3_.js.br +0 -0
  429. package/build/bosun-app/frontend/client/_app/immutable/chunks/OERrxy3_.js.gz +0 -0
  430. package/build/bosun-app/frontend/client/_app/immutable/chunks/T0seCQS_.js +1 -0
  431. package/build/bosun-app/frontend/client/_app/immutable/chunks/T0seCQS_.js.br +0 -0
  432. package/build/bosun-app/frontend/client/_app/immutable/chunks/T0seCQS_.js.gz +0 -0
  433. package/build/bosun-app/frontend/client/_app/immutable/chunks/Tw7wswEv.js +6 -0
  434. package/build/bosun-app/frontend/client/_app/immutable/chunks/Tw7wswEv.js.br +0 -0
  435. package/build/bosun-app/frontend/client/_app/immutable/chunks/Tw7wswEv.js.gz +0 -0
  436. package/build/bosun-app/frontend/client/_app/immutable/chunks/YWi4-JPR.js +6 -0
  437. package/build/bosun-app/frontend/client/_app/immutable/chunks/YWi4-JPR.js.br +0 -0
  438. package/build/bosun-app/frontend/client/_app/immutable/chunks/YWi4-JPR.js.gz +0 -0
  439. package/build/bosun-app/frontend/client/_app/immutable/chunks/ZGfwyPNq.js +15 -0
  440. package/build/bosun-app/frontend/client/_app/immutable/chunks/ZGfwyPNq.js.br +0 -0
  441. package/build/bosun-app/frontend/client/_app/immutable/chunks/ZGfwyPNq.js.gz +0 -0
  442. package/build/bosun-app/frontend/client/_app/immutable/chunks/Zznr-cwX.js +6 -0
  443. package/build/bosun-app/frontend/client/_app/immutable/chunks/Zznr-cwX.js.br +0 -0
  444. package/build/bosun-app/frontend/client/_app/immutable/chunks/Zznr-cwX.js.gz +0 -0
  445. package/build/bosun-app/frontend/client/_app/immutable/chunks/bynEV6cE.js +9 -0
  446. package/build/bosun-app/frontend/client/_app/immutable/chunks/bynEV6cE.js.br +0 -0
  447. package/build/bosun-app/frontend/client/_app/immutable/chunks/bynEV6cE.js.gz +0 -0
  448. package/build/bosun-app/frontend/client/_app/immutable/chunks/dUCx_-0o.js +6 -0
  449. package/build/bosun-app/frontend/client/_app/immutable/chunks/dUCx_-0o.js.br +0 -0
  450. package/build/bosun-app/frontend/client/_app/immutable/chunks/dUCx_-0o.js.gz +0 -0
  451. package/build/bosun-app/frontend/client/_app/immutable/chunks/ddC1NP9R.js +2 -0
  452. package/build/bosun-app/frontend/client/_app/immutable/chunks/ddC1NP9R.js.br +0 -0
  453. package/build/bosun-app/frontend/client/_app/immutable/chunks/ddC1NP9R.js.gz +0 -0
  454. package/build/bosun-app/frontend/client/_app/immutable/chunks/deUWdS0T.js +6 -0
  455. package/build/bosun-app/frontend/client/_app/immutable/chunks/deUWdS0T.js.br +0 -0
  456. package/build/bosun-app/frontend/client/_app/immutable/chunks/deUWdS0T.js.gz +0 -0
  457. package/build/bosun-app/frontend/client/_app/immutable/chunks/i9-g7ZhI.js +6 -0
  458. package/build/bosun-app/frontend/client/_app/immutable/chunks/i9-g7ZhI.js.br +0 -0
  459. package/build/bosun-app/frontend/client/_app/immutable/chunks/i9-g7ZhI.js.gz +0 -0
  460. package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js +11 -0
  461. package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.br +0 -0
  462. package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.gz +0 -0
  463. package/build/bosun-app/frontend/client/_app/immutable/chunks/nf6ki56Z.js +6 -0
  464. package/build/bosun-app/frontend/client/_app/immutable/chunks/nf6ki56Z.js.br +0 -0
  465. package/build/bosun-app/frontend/client/_app/immutable/chunks/nf6ki56Z.js.gz +0 -0
  466. package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js +1 -0
  467. package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.br +0 -0
  468. package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.gz +0 -0
  469. package/build/bosun-app/frontend/client/_app/immutable/chunks/pnP8ivHi.js +6 -0
  470. package/build/bosun-app/frontend/client/_app/immutable/chunks/pnP8ivHi.js.br +0 -0
  471. package/build/bosun-app/frontend/client/_app/immutable/chunks/pnP8ivHi.js.gz +0 -0
  472. package/build/bosun-app/frontend/client/_app/immutable/chunks/qiSVE_6c.js +1 -0
  473. package/build/bosun-app/frontend/client/_app/immutable/chunks/qiSVE_6c.js.br +0 -0
  474. package/build/bosun-app/frontend/client/_app/immutable/chunks/qiSVE_6c.js.gz +0 -0
  475. package/build/bosun-app/frontend/client/_app/immutable/chunks/rUNN04Wq.js +6 -0
  476. package/build/bosun-app/frontend/client/_app/immutable/chunks/rUNN04Wq.js.br +0 -0
  477. package/build/bosun-app/frontend/client/_app/immutable/chunks/rUNN04Wq.js.gz +0 -0
  478. package/build/bosun-app/frontend/client/_app/immutable/chunks/sKHuRf4Z.js +2 -0
  479. package/build/bosun-app/frontend/client/_app/immutable/chunks/sKHuRf4Z.js.br +0 -0
  480. package/build/bosun-app/frontend/client/_app/immutable/chunks/sKHuRf4Z.js.gz +0 -0
  481. package/build/bosun-app/frontend/client/_app/immutable/chunks/tGk8EFnU.js +6 -0
  482. package/build/bosun-app/frontend/client/_app/immutable/chunks/tGk8EFnU.js.br +0 -0
  483. package/build/bosun-app/frontend/client/_app/immutable/chunks/tGk8EFnU.js.gz +0 -0
  484. package/build/bosun-app/frontend/client/_app/immutable/chunks/wbPk3Yxo.js +81 -0
  485. package/build/bosun-app/frontend/client/_app/immutable/chunks/wbPk3Yxo.js.br +0 -0
  486. package/build/bosun-app/frontend/client/_app/immutable/chunks/wbPk3Yxo.js.gz +0 -0
  487. package/build/bosun-app/frontend/client/_app/immutable/chunks/xC2C8d09.js +1 -0
  488. package/build/bosun-app/frontend/client/_app/immutable/chunks/xC2C8d09.js.br +0 -0
  489. package/build/bosun-app/frontend/client/_app/immutable/chunks/xC2C8d09.js.gz +0 -0
  490. package/build/bosun-app/frontend/client/_app/immutable/entry/app.Bni-2yHM.js +2 -0
  491. package/build/bosun-app/frontend/client/_app/immutable/entry/app.Bni-2yHM.js.br +0 -0
  492. package/build/bosun-app/frontend/client/_app/immutable/entry/app.Bni-2yHM.js.gz +0 -0
  493. package/build/bosun-app/frontend/client/_app/immutable/entry/start.Bwh8stkk.js +1 -0
  494. package/build/bosun-app/frontend/client/_app/immutable/entry/start.Bwh8stkk.js.br +0 -0
  495. package/build/bosun-app/frontend/client/_app/immutable/entry/start.Bwh8stkk.js.gz +0 -0
  496. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.CyFCeOko.js +3 -0
  497. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.CyFCeOko.js.br +0 -0
  498. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.CyFCeOko.js.gz +0 -0
  499. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.D9Za90TC.js +1 -0
  500. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.D9Za90TC.js.br +0 -0
  501. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.D9Za90TC.js.gz +0 -0
  502. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.CQP8ZYdc.js +35 -0
  503. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.CQP8ZYdc.js.br +0 -0
  504. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.CQP8ZYdc.js.gz +0 -0
  505. package/build/bosun-app/frontend/client/_app/immutable/nodes/11.1H8cz_S1.js +1 -0
  506. package/build/bosun-app/frontend/client/_app/immutable/nodes/11.1H8cz_S1.js.br +2 -0
  507. package/build/bosun-app/frontend/client/_app/immutable/nodes/11.1H8cz_S1.js.gz +0 -0
  508. package/build/bosun-app/frontend/client/_app/immutable/nodes/12.Douyi5CF.js +1 -0
  509. package/build/bosun-app/frontend/client/_app/immutable/nodes/12.Douyi5CF.js.br +0 -0
  510. package/build/bosun-app/frontend/client/_app/immutable/nodes/12.Douyi5CF.js.gz +0 -0
  511. package/build/bosun-app/frontend/client/_app/immutable/nodes/13.DmDIoZI2.js +1 -0
  512. package/build/bosun-app/frontend/client/_app/immutable/nodes/13.DmDIoZI2.js.br +0 -0
  513. package/build/bosun-app/frontend/client/_app/immutable/nodes/13.DmDIoZI2.js.gz +0 -0
  514. package/build/bosun-app/frontend/client/_app/immutable/nodes/14.DfC4E0Jp.js +1 -0
  515. package/build/bosun-app/frontend/client/_app/immutable/nodes/14.DfC4E0Jp.js.br +0 -0
  516. package/build/bosun-app/frontend/client/_app/immutable/nodes/14.DfC4E0Jp.js.gz +0 -0
  517. package/build/bosun-app/frontend/client/_app/immutable/nodes/15.drIyAxl2.js +1 -0
  518. package/build/bosun-app/frontend/client/_app/immutable/nodes/15.drIyAxl2.js.br +1 -0
  519. package/build/bosun-app/frontend/client/_app/immutable/nodes/15.drIyAxl2.js.gz +0 -0
  520. package/build/bosun-app/frontend/client/_app/immutable/nodes/16.u0CZMrcc.js +1 -0
  521. package/build/bosun-app/frontend/client/_app/immutable/nodes/16.u0CZMrcc.js.br +4 -0
  522. package/build/bosun-app/frontend/client/_app/immutable/nodes/16.u0CZMrcc.js.gz +0 -0
  523. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.C-6g-4TG.js +3 -0
  524. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.C-6g-4TG.js.br +0 -0
  525. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.C-6g-4TG.js.gz +0 -0
  526. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.CKu_cfLu.js +11 -0
  527. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.CKu_cfLu.js.br +0 -0
  528. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.CKu_cfLu.js.gz +0 -0
  529. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.lZxPEqtw.js +35 -0
  530. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.lZxPEqtw.js.br +0 -0
  531. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.lZxPEqtw.js.gz +0 -0
  532. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.BjH4Ma-k.js +1 -0
  533. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.BjH4Ma-k.js.br +0 -0
  534. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.BjH4Ma-k.js.gz +0 -0
  535. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.B_swg0wq.js +1 -0
  536. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.B_swg0wq.js.br +0 -0
  537. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.B_swg0wq.js.gz +0 -0
  538. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.CJfS926N.js +1 -0
  539. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.CJfS926N.js.br +0 -0
  540. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.CJfS926N.js.gz +0 -0
  541. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.4aRjHu4u.js +1 -0
  542. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.4aRjHu4u.js.br +0 -0
  543. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.4aRjHu4u.js.gz +0 -0
  544. package/build/bosun-app/frontend/client/_app/immutable/nodes/7.BzXqUj2v.js +1 -0
  545. package/build/bosun-app/frontend/client/_app/immutable/nodes/7.BzXqUj2v.js.br +0 -0
  546. package/build/bosun-app/frontend/client/_app/immutable/nodes/7.BzXqUj2v.js.gz +0 -0
  547. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.BZFIHe4g.js +2 -0
  548. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.BZFIHe4g.js.br +0 -0
  549. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.BZFIHe4g.js.gz +0 -0
  550. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.BYJRzNt4.js +2 -0
  551. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.BYJRzNt4.js.br +0 -0
  552. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.BYJRzNt4.js.gz +0 -0
  553. package/build/bosun-app/frontend/client/_app/immutable/workers/css.worker-BRIrhzkG.js +84 -0
  554. package/build/bosun-app/frontend/client/_app/immutable/workers/css.worker-BRIrhzkG.js.br +0 -0
  555. package/build/bosun-app/frontend/client/_app/immutable/workers/css.worker-BRIrhzkG.js.gz +0 -0
  556. package/build/bosun-app/frontend/client/_app/immutable/workers/editor.worker-DX6ApQqM.js +12 -0
  557. package/build/bosun-app/frontend/client/_app/immutable/workers/editor.worker-DX6ApQqM.js.br +0 -0
  558. package/build/bosun-app/frontend/client/_app/immutable/workers/editor.worker-DX6ApQqM.js.gz +0 -0
  559. package/build/bosun-app/frontend/client/_app/immutable/workers/html.worker-CBI4EQBP.js +461 -0
  560. package/build/bosun-app/frontend/client/_app/immutable/workers/html.worker-CBI4EQBP.js.br +0 -0
  561. package/build/bosun-app/frontend/client/_app/immutable/workers/html.worker-CBI4EQBP.js.gz +0 -0
  562. package/build/bosun-app/frontend/client/_app/immutable/workers/json.worker-CIZWV9vN.js +49 -0
  563. package/build/bosun-app/frontend/client/_app/immutable/workers/json.worker-CIZWV9vN.js.br +0 -0
  564. package/build/bosun-app/frontend/client/_app/immutable/workers/json.worker-CIZWV9vN.js.gz +0 -0
  565. package/build/bosun-app/frontend/client/_app/immutable/workers/ts.worker-Ds4I2Msu.js +51334 -0
  566. package/build/bosun-app/frontend/client/_app/immutable/workers/ts.worker-Ds4I2Msu.js.br +0 -0
  567. package/build/bosun-app/frontend/client/_app/immutable/workers/ts.worker-Ds4I2Msu.js.gz +0 -0
  568. package/build/bosun-app/frontend/client/_app/version.json +1 -0
  569. package/build/bosun-app/frontend/client/_app/version.json.br +0 -0
  570. package/build/bosun-app/frontend/client/_app/version.json.gz +0 -0
  571. package/build/bosun-app/frontend/client/favicon.png +0 -0
  572. package/build/bosun-app/frontend/client/fonts/DarkerGrotesque-Black.ttf +0 -0
  573. package/build/bosun-app/frontend/client/fonts/DarkerGrotesque-Bold.ttf +0 -0
  574. package/build/bosun-app/frontend/client/fonts/DarkerGrotesque-Light.ttf +0 -0
  575. package/build/bosun-app/frontend/client/fonts/DarkerGrotesque-Medium.ttf +0 -0
  576. package/build/bosun-app/frontend/client/fonts/DarkerGrotesque-Regular.ttf +0 -0
  577. package/build/bosun-app/frontend/client/fonts/DarkerGrotesque-SemiBold.ttf +0 -0
  578. package/build/bosun-app/frontend/client/fonts.css +42 -0
  579. package/build/bosun-app/frontend/client/fonts.css.br +0 -0
  580. package/build/bosun-app/frontend/client/fonts.css.gz +0 -0
  581. package/build/bosun-app/frontend/client/recombine.svg +11 -0
  582. package/build/bosun-app/frontend/client/recombine.svg.br +0 -0
  583. package/build/bosun-app/frontend/client/recombine.svg.gz +0 -0
  584. package/build/bosun-app/frontend/client/telescope-icon.svg +4 -0
  585. package/build/bosun-app/frontend/client/telescope-icon.svg.br +0 -0
  586. package/build/bosun-app/frontend/client/telescope-icon.svg.gz +0 -0
  587. package/build/bosun-app/frontend/client/ui/arrow_tests.svg +3 -0
  588. package/build/bosun-app/frontend/client/ui/arrow_tests.svg.br +0 -0
  589. package/build/bosun-app/frontend/client/ui/arrow_tests.svg.gz +0 -0
  590. package/build/bosun-app/frontend/client/ui/paperclip.svg +3 -0
  591. package/build/bosun-app/frontend/client/ui/paperclip.svg.br +0 -0
  592. package/build/bosun-app/frontend/client/ui/paperclip.svg.gz +0 -0
  593. package/build/bosun-app/frontend/client/ui/send.svg +4 -0
  594. package/build/bosun-app/frontend/client/ui/send.svg.br +0 -0
  595. package/build/bosun-app/frontend/client/ui/send.svg.gz +0 -0
  596. package/build/bosun-app/frontend/env.js +70 -0
  597. package/build/bosun-app/frontend/env.js.map +1 -0
  598. package/build/bosun-app/frontend/handler.js +28 -0
  599. package/build/bosun-app/frontend/handler.js.map +1 -0
  600. package/build/bosun-app/frontend/index.js +151 -0
  601. package/build/bosun-app/frontend/index.js.map +1 -0
  602. package/build/bosun-app/frontend/server/chunks/chunks/AgentSidebar.js-CFHwsTeS.js +170 -0
  603. package/build/bosun-app/frontend/server/chunks/chunks/AgentSidebar.js-CFHwsTeS.js.map +1 -0
  604. package/build/bosun-app/frontend/server/chunks/chunks/Button.js-IbO6ojjD.js +47 -0
  605. package/build/bosun-app/frontend/server/chunks/chunks/Button.js-IbO6ojjD.js.map +1 -0
  606. package/build/bosun-app/frontend/server/chunks/chunks/ChatStepTrace.js-VTtwaKGp.js +558 -0
  607. package/build/bosun-app/frontend/server/chunks/chunks/ChatStepTrace.js-VTtwaKGp.js.map +1 -0
  608. package/build/bosun-app/frontend/server/chunks/chunks/Dropdown.js-VxjZvXGD.js +62 -0
  609. package/build/bosun-app/frontend/server/chunks/chunks/Dropdown.js-VxjZvXGD.js.map +1 -0
  610. package/build/bosun-app/frontend/server/chunks/chunks/Icon.js-DzsiLkia.js +77 -0
  611. package/build/bosun-app/frontend/server/chunks/chunks/Icon.js-DzsiLkia.js.map +1 -0
  612. package/build/bosun-app/frontend/server/chunks/chunks/Input.js-V9tWKRFS.js +22 -0
  613. package/build/bosun-app/frontend/server/chunks/chunks/Input.js-V9tWKRFS.js.map +1 -0
  614. package/build/bosun-app/frontend/server/chunks/chunks/Modal.js-BUDSUOER.js +2290 -0
  615. package/build/bosun-app/frontend/server/chunks/chunks/Modal.js-BUDSUOER.js.map +1 -0
  616. package/build/bosun-app/frontend/server/chunks/chunks/Panel.js-Dyc_ecR2.js +11 -0
  617. package/build/bosun-app/frontend/server/chunks/chunks/Panel.js-Dyc_ecR2.js.map +1 -0
  618. package/build/bosun-app/frontend/server/chunks/chunks/Tab.js-DpBcUmVx.js +83 -0
  619. package/build/bosun-app/frontend/server/chunks/chunks/Tab.js-DpBcUmVx.js.map +1 -0
  620. package/build/bosun-app/frontend/server/chunks/chunks/agents-context.js-DdI5kzRS.js +6 -0
  621. package/build/bosun-app/frontend/server/chunks/chunks/agents-context.js-DdI5kzRS.js.map +1 -0
  622. package/build/bosun-app/frontend/server/chunks/chunks/client.js-C_B2rv3r.js +19 -0
  623. package/build/bosun-app/frontend/server/chunks/chunks/client.js-C_B2rv3r.js.map +1 -0
  624. package/build/bosun-app/frontend/server/chunks/chunks/conversation-view-memory.js-DjOFeigb.js +20 -0
  625. package/build/bosun-app/frontend/server/chunks/chunks/conversation-view-memory.js-DjOFeigb.js.map +1 -0
  626. package/build/bosun-app/frontend/server/chunks/chunks/edit-workspace-context.js-DGPpbvI5.js +6 -0
  627. package/build/bosun-app/frontend/server/chunks/chunks/edit-workspace-context.js-DGPpbvI5.js.map +1 -0
  628. package/build/bosun-app/frontend/server/chunks/chunks/event.js-BfLhxAp5.js +19 -0
  629. package/build/bosun-app/frontend/server/chunks/chunks/event.js-BfLhxAp5.js.map +1 -0
  630. package/build/bosun-app/frontend/server/chunks/chunks/exports.js-8HOoaa4e.js +161 -0
  631. package/build/bosun-app/frontend/server/chunks/chunks/exports.js-8HOoaa4e.js.map +1 -0
  632. package/build/bosun-app/frontend/server/chunks/chunks/index-server.js-CALBgpac.js +17 -0
  633. package/build/bosun-app/frontend/server/chunks/chunks/index-server.js-CALBgpac.js.map +1 -0
  634. package/build/bosun-app/frontend/server/chunks/chunks/index.js-DczFGj-7.js +3383 -0
  635. package/build/bosun-app/frontend/server/chunks/chunks/index.js-DczFGj-7.js.map +1 -0
  636. package/build/bosun-app/frontend/server/chunks/chunks/index2.js-DYVLcO2-.js +28 -0
  637. package/build/bosun-app/frontend/server/chunks/chunks/index2.js-DYVLcO2-.js.map +1 -0
  638. package/build/bosun-app/frontend/server/chunks/chunks/index3.js-WpnIn8V1.js +111 -0
  639. package/build/bosun-app/frontend/server/chunks/chunks/index3.js-WpnIn8V1.js.map +1 -0
  640. package/build/bosun-app/frontend/server/chunks/chunks/index4.js-C9gg2iSH.js +63 -0
  641. package/build/bosun-app/frontend/server/chunks/chunks/index4.js-C9gg2iSH.js.map +1 -0
  642. package/build/bosun-app/frontend/server/chunks/chunks/internal.js-V8Wfo1-F.js +121 -0
  643. package/build/bosun-app/frontend/server/chunks/chunks/internal.js-V8Wfo1-F.js.map +1 -0
  644. package/build/bosun-app/frontend/server/chunks/chunks/js-yaml.js-Dx-xfeGn.js +733 -0
  645. package/build/bosun-app/frontend/server/chunks/chunks/js-yaml.js-Dx-xfeGn.js.map +1 -0
  646. package/build/bosun-app/frontend/server/chunks/chunks/latency-recordings.js-CqioXMQl.js +117 -0
  647. package/build/bosun-app/frontend/server/chunks/chunks/latency-recordings.js-CqioXMQl.js.map +1 -0
  648. package/build/bosun-app/frontend/server/chunks/chunks/latency.js--f3JYIRg.js +157 -0
  649. package/build/bosun-app/frontend/server/chunks/chunks/latency.js--f3JYIRg.js.map +1 -0
  650. package/build/bosun-app/frontend/server/chunks/chunks/log-content.svelte.js-C6EzbHLC.js +20 -0
  651. package/build/bosun-app/frontend/server/chunks/chunks/log-content.svelte.js-C6EzbHLC.js.map +1 -0
  652. package/build/bosun-app/frontend/server/chunks/chunks/root.js-CJvqqGUj.js +1052 -0
  653. package/build/bosun-app/frontend/server/chunks/chunks/root.js-CJvqqGUj.js.map +1 -0
  654. package/build/bosun-app/frontend/server/chunks/chunks/schemas.js-W-DP3mDr.js +4506 -0
  655. package/build/bosun-app/frontend/server/chunks/chunks/schemas.js-W-DP3mDr.js.map +1 -0
  656. package/build/bosun-app/frontend/server/chunks/chunks/server.js-Bf8x1V_n.js +16 -0
  657. package/build/bosun-app/frontend/server/chunks/chunks/server.js-Bf8x1V_n.js.map +1 -0
  658. package/build/bosun-app/frontend/server/chunks/chunks/shared-server.js-DaWdgxVh.js +11 -0
  659. package/build/bosun-app/frontend/server/chunks/chunks/shared-server.js-DaWdgxVh.js.map +1 -0
  660. package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-Cc6RX6-m.js +243 -0
  661. package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-Cc6RX6-m.js.map +1 -0
  662. package/build/bosun-app/frontend/server/chunks/chunks/sources.server.js-B6fpC51P.js +74 -0
  663. package/build/bosun-app/frontend/server/chunks/chunks/sources.server.js-B6fpC51P.js.map +1 -0
  664. package/build/bosun-app/frontend/server/chunks/chunks/state.svelte.js-DDOPLPl-.js +13 -0
  665. package/build/bosun-app/frontend/server/chunks/chunks/state.svelte.js-DDOPLPl-.js.map +1 -0
  666. package/build/bosun-app/frontend/server/chunks/chunks/steps.js-DzZCg39h.js +8 -0
  667. package/build/bosun-app/frontend/server/chunks/chunks/steps.js-DzZCg39h.js.map +1 -0
  668. package/build/bosun-app/frontend/server/chunks/chunks/trpc-client.js-zIPF9ytu.js +1154 -0
  669. package/build/bosun-app/frontend/server/chunks/chunks/trpc-client.js-zIPF9ytu.js.map +1 -0
  670. package/build/bosun-app/frontend/server/chunks/chunks/uneval.js-5Y6J9rDU.js +530 -0
  671. package/build/bosun-app/frontend/server/chunks/chunks/uneval.js-5Y6J9rDU.js.map +1 -0
  672. package/build/bosun-app/frontend/server/chunks/chunks/utils.js-BQzn9ikS.js +38 -0
  673. package/build/bosun-app/frontend/server/chunks/chunks/utils.js-BQzn9ikS.js.map +1 -0
  674. package/build/bosun-app/frontend/server/chunks/chunks/utils2.js-DyJSCbBx.js +1365 -0
  675. package/build/bosun-app/frontend/server/chunks/chunks/utils2.js-DyJSCbBx.js.map +1 -0
  676. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/latency/_conversationId_/_server.ts.js-hHR2eFvt.js +140 -0
  677. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/latency/_conversationId_/_server.ts.js-hHR2eFvt.js.map +1 -0
  678. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/latency/_conversationId_/audio/_server.ts.js-BluTfSQd.js +38 -0
  679. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/latency/_conversationId_/audio/_server.ts.js-BluTfSQd.js.map +1 -0
  680. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/proxy/_...path_/_server.ts.js-CHrOiduq.js +51 -0
  681. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/proxy/_...path_/_server.ts.js-CHrOiduq.js.map +1 -0
  682. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/sources/_server.ts.js-C2FIU8Kr.js +24 -0
  683. package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/sources/_server.ts.js-C2FIU8Kr.js.map +1 -0
  684. package/build/bosun-app/frontend/server/chunks/entries/fallbacks/error.svelte.js-CUaQ38ir.js +17 -0
  685. package/build/bosun-app/frontend/server/chunks/entries/fallbacks/error.svelte.js-CUaQ38ir.js.map +1 -0
  686. package/build/bosun-app/frontend/server/chunks/entries/hooks.universal.js-BJphIAi-.js +8 -0
  687. package/build/bosun-app/frontend/server/chunks/entries/hooks.universal.js-BJphIAi-.js.map +1 -0
  688. package/build/bosun-app/frontend/server/chunks/entries/pages/_layout.svelte.js-BzoISDtG.js +48 -0
  689. package/build/bosun-app/frontend/server/chunks/entries/pages/_layout.svelte.js-BzoISDtG.js.map +1 -0
  690. package/build/bosun-app/frontend/server/chunks/entries/pages/_page.svelte.js-Dx0vF3Lq.js +47 -0
  691. package/build/bosun-app/frontend/server/chunks/entries/pages/_page.svelte.js-Dx0vF3Lq.js.map +1 -0
  692. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_layout.svelte.js-B2wHKJV7.js +9089 -0
  693. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_layout.svelte.js-B2wHKJV7.js.map +1 -0
  694. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_page.ts.js-CFNiL-gK.js +19 -0
  695. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_page.ts.js-CFNiL-gK.js.map +1 -0
  696. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/configure/_page.svelte.js-CEL_4VPG.js +61 -0
  697. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/configure/_page.svelte.js-CEL_4VPG.js.map +1 -0
  698. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/_page.svelte.js-DDcIjgZD.js +1435 -0
  699. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/_page.svelte.js-DDcIjgZD.js.map +1 -0
  700. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/_page.svelte.js-UVUg89-t.js +2169 -0
  701. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/_page.svelte.js-UVUg89-t.js.map +1 -0
  702. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_page.svelte.js-kE5Ar91A.js +73 -0
  703. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_page.svelte.js-kE5Ar91A.js.map +1 -0
  704. package/build/bosun-app/frontend/server/chunks/entries/pages/roleplay/_page.ts.js-7xRh8oLz.js +19 -0
  705. package/build/bosun-app/frontend/server/chunks/entries/pages/roleplay/_page.ts.js-7xRh8oLz.js.map +1 -0
  706. package/build/bosun-app/frontend/server/chunks/entries/pages/tests/_agent_/_page.ts.js-CoMBAK66.js +15 -0
  707. package/build/bosun-app/frontend/server/chunks/entries/pages/tests/_agent_/_page.ts.js-CoMBAK66.js.map +1 -0
  708. package/build/bosun-app/frontend/server/chunks/entries/pages/tests/_page.ts.js-BeaHASlP.js +13 -0
  709. package/build/bosun-app/frontend/server/chunks/entries/pages/tests/_page.ts.js-BeaHASlP.js.map +1 -0
  710. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/_page.ts.js-BDwYwqJJ.js +14 -0
  711. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/_page.ts.js-BDwYwqJJ.js.map +1 -0
  712. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/_layout.svelte.js-BunyOuzX.js +64 -0
  713. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/_layout.svelte.js-BunyOuzX.js.map +1 -0
  714. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/_page.ts.js-DCdyFx8I.js +14 -0
  715. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/_page.ts.js-DCdyFx8I.js.map +1 -0
  716. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js-tdUdTo4m.js +1821 -0
  717. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js-tdUdTo4m.js.map +1 -0
  718. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-Ca79DBzJ.js +947 -0
  719. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-Ca79DBzJ.js.map +1 -0
  720. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-Dvn3tfM7.js +478 -0
  721. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-Dvn3tfM7.js.map +1 -0
  722. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_page.svelte.js-DvRZkYfo.js +14 -0
  723. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_page.svelte.js-DvRZkYfo.js.map +1 -0
  724. package/build/bosun-app/frontend/server/chunks/handler-I7zF-fv9.js +1756 -0
  725. package/build/bosun-app/frontend/server/chunks/handler-I7zF-fv9.js.map +1 -0
  726. package/build/bosun-app/frontend/server/chunks/index.js-Ca0Ef2Tt.js +4120 -0
  727. package/build/bosun-app/frontend/server/chunks/index.js-Ca0Ef2Tt.js.map +1 -0
  728. package/build/bosun-app/frontend/server/chunks/manifest.js-D22OChaf.js +177 -0
  729. package/build/bosun-app/frontend/server/chunks/manifest.js-D22OChaf.js.map +1 -0
  730. package/build/bosun-app/frontend/server/chunks/nodes/0.js-CoDyOiLt.js +9 -0
  731. package/build/bosun-app/frontend/server/chunks/nodes/0.js-CoDyOiLt.js.map +1 -0
  732. package/build/bosun-app/frontend/server/chunks/nodes/1.js-BesNpd2w.js +9 -0
  733. package/build/bosun-app/frontend/server/chunks/nodes/1.js-BesNpd2w.js.map +1 -0
  734. package/build/bosun-app/frontend/server/chunks/nodes/10.js-DN5elTKV.js +9 -0
  735. package/build/bosun-app/frontend/server/chunks/nodes/10.js-DN5elTKV.js.map +1 -0
  736. package/build/bosun-app/frontend/server/chunks/nodes/11.js-DY_yGGfd.js +12 -0
  737. package/build/bosun-app/frontend/server/chunks/nodes/11.js-DY_yGGfd.js.map +1 -0
  738. package/build/bosun-app/frontend/server/chunks/nodes/12.js-Y03iWeel.js +12 -0
  739. package/build/bosun-app/frontend/server/chunks/nodes/12.js-Y03iWeel.js.map +1 -0
  740. package/build/bosun-app/frontend/server/chunks/nodes/13.js-1lz41CRL.js +12 -0
  741. package/build/bosun-app/frontend/server/chunks/nodes/13.js-1lz41CRL.js.map +1 -0
  742. package/build/bosun-app/frontend/server/chunks/nodes/14.js-DkuFA-fc.js +12 -0
  743. package/build/bosun-app/frontend/server/chunks/nodes/14.js-DkuFA-fc.js.map +1 -0
  744. package/build/bosun-app/frontend/server/chunks/nodes/15.js-cNd06B9T.js +9 -0
  745. package/build/bosun-app/frontend/server/chunks/nodes/15.js-cNd06B9T.js.map +1 -0
  746. package/build/bosun-app/frontend/server/chunks/nodes/16.js-BnrzEE51.js +12 -0
  747. package/build/bosun-app/frontend/server/chunks/nodes/16.js-BnrzEE51.js.map +1 -0
  748. package/build/bosun-app/frontend/server/chunks/nodes/17.js-DExEAB_e.js +9 -0
  749. package/build/bosun-app/frontend/server/chunks/nodes/17.js-DExEAB_e.js.map +1 -0
  750. package/build/bosun-app/frontend/server/chunks/nodes/18.js-OLWFvVu0.js +9 -0
  751. package/build/bosun-app/frontend/server/chunks/nodes/18.js-OLWFvVu0.js.map +1 -0
  752. package/build/bosun-app/frontend/server/chunks/nodes/2.js-DdMhYSQT.js +9 -0
  753. package/build/bosun-app/frontend/server/chunks/nodes/2.js-DdMhYSQT.js.map +1 -0
  754. package/build/bosun-app/frontend/server/chunks/nodes/3.js-DRo_79wF.js +9 -0
  755. package/build/bosun-app/frontend/server/chunks/nodes/3.js-DRo_79wF.js.map +1 -0
  756. package/build/bosun-app/frontend/server/chunks/nodes/4.js-Bb8ZnG8K.js +9 -0
  757. package/build/bosun-app/frontend/server/chunks/nodes/4.js-Bb8ZnG8K.js.map +1 -0
  758. package/build/bosun-app/frontend/server/chunks/nodes/5.js-DNbqpjRZ.js +9 -0
  759. package/build/bosun-app/frontend/server/chunks/nodes/5.js-DNbqpjRZ.js.map +1 -0
  760. package/build/bosun-app/frontend/server/chunks/nodes/6.js-MMZWg86o.js +9 -0
  761. package/build/bosun-app/frontend/server/chunks/nodes/6.js-MMZWg86o.js.map +1 -0
  762. package/build/bosun-app/frontend/server/chunks/nodes/7.js-CmnAMDtD.js +12 -0
  763. package/build/bosun-app/frontend/server/chunks/nodes/7.js-CmnAMDtD.js.map +1 -0
  764. package/build/bosun-app/frontend/server/chunks/nodes/8.js-Cs981zJ4.js +9 -0
  765. package/build/bosun-app/frontend/server/chunks/nodes/8.js-Cs981zJ4.js.map +1 -0
  766. package/build/bosun-app/frontend/server/chunks/nodes/9.js-h4jeZZT-.js +9 -0
  767. package/build/bosun-app/frontend/server/chunks/nodes/9.js-h4jeZZT-.js.map +1 -0
  768. package/build/bosun-app/frontend/shims.js +33 -0
  769. package/build/bosun-app/frontend/shims.js.map +1 -0
  770. package/build/build/agent-service.d.ts +8 -0
  771. package/build/build/agent-service.d.ts.map +1 -0
  772. package/build/build/agent-service.js +32 -0
  773. package/build/build/cli.d.ts +13 -0
  774. package/build/build/cli.d.ts.map +1 -0
  775. package/build/build/cli.js +103 -0
  776. package/build/build/common.d.ts +12 -0
  777. package/build/build/common.d.ts.map +1 -0
  778. package/build/build/common.js +75 -0
  779. package/build/build/index.d.ts +7 -0
  780. package/build/build/index.d.ts.map +1 -0
  781. package/build/build/index.js +3 -0
  782. package/build/build/text-function.d.ts +6 -0
  783. package/build/build/text-function.d.ts.map +1 -0
  784. package/build/build/text-function.js +55 -0
  785. package/build/call-control/call-control.d.ts +36 -0
  786. package/build/call-control/call-control.d.ts.map +1 -0
  787. package/build/call-control/call-control.js +207 -0
  788. package/build/call-control/call-details/index.d.ts +2 -0
  789. package/build/call-control/call-details/index.d.ts.map +1 -0
  790. package/build/call-control/call-details/index.js +1 -0
  791. package/build/call-control/call-details/noop-storage.d.ts +10 -0
  792. package/build/call-control/call-details/noop-storage.d.ts.map +1 -0
  793. package/build/call-control/call-details/noop-storage.js +11 -0
  794. package/build/call-control/index.d.ts +7 -0
  795. package/build/call-control/index.d.ts.map +1 -0
  796. package/build/call-control/index.js +4 -0
  797. package/build/call-control/port.d.ts +15 -0
  798. package/build/call-control/port.d.ts.map +1 -0
  799. package/build/call-control/port.js +1 -0
  800. package/build/call-control/schemas.generated.d.ts +156 -0
  801. package/build/call-control/schemas.generated.d.ts.map +1 -0
  802. package/build/call-control/schemas.generated.js +281 -0
  803. package/build/call-control/sip-setup-lock.d.ts +6 -0
  804. package/build/call-control/sip-setup-lock.d.ts.map +1 -0
  805. package/build/call-control/sip-setup-lock.js +60 -0
  806. package/build/call-control/sip.d.ts +41 -0
  807. package/build/call-control/sip.d.ts.map +1 -0
  808. package/build/call-control/sip.js +423 -0
  809. package/build/call-control/types.d.ts +352 -0
  810. package/build/call-control/types.d.ts.map +1 -0
  811. package/build/call-control/types.js +30 -0
  812. package/build/call-control/utils.d.ts +13 -0
  813. package/build/call-control/utils.d.ts.map +1 -0
  814. package/build/call-control/utils.js +43 -0
  815. package/build/{context-cache.d.ts → context-cache/index.d.ts} +4 -3
  816. package/build/context-cache/index.d.ts.map +1 -0
  817. package/build/{context-cache.js → context-cache/index.js} +20 -8
  818. package/build/core/index.d.ts +6 -0
  819. package/build/core/index.d.ts.map +1 -0
  820. package/build/core/index.js +2 -0
  821. package/build/core/make-text-platform.d.ts +15 -0
  822. package/build/core/make-text-platform.d.ts.map +1 -0
  823. package/build/core/make-text-platform.js +27 -0
  824. package/build/core/make-voice-platform.d.ts +16 -0
  825. package/build/core/make-voice-platform.d.ts.map +1 -0
  826. package/build/core/make-voice-platform.js +51 -0
  827. package/build/core/platform.d.ts +30 -0
  828. package/build/core/platform.d.ts.map +1 -0
  829. package/build/core/platform.js +1 -0
  830. package/build/dockyard/index.d.ts +4 -0
  831. package/build/dockyard/index.d.ts.map +1 -0
  832. package/build/dockyard/index.js +2 -0
  833. package/build/dockyard/logger/base.d.ts +20 -0
  834. package/build/dockyard/logger/base.d.ts.map +1 -0
  835. package/build/dockyard/logger/base.js +26 -0
  836. package/build/dockyard/logger/configuration.d.ts +13 -0
  837. package/build/dockyard/logger/configuration.d.ts.map +1 -0
  838. package/build/dockyard/logger/configuration.js +22 -0
  839. package/build/dockyard/logger/helpers.d.ts +6 -0
  840. package/build/dockyard/logger/helpers.d.ts.map +1 -0
  841. package/build/dockyard/logger/helpers.js +46 -0
  842. package/build/dockyard/logger/index.d.ts +12 -0
  843. package/build/dockyard/logger/index.d.ts.map +1 -0
  844. package/build/dockyard/logger/index.js +92 -0
  845. package/build/dockyard/logger/local-context.d.ts +11 -0
  846. package/build/dockyard/logger/local-context.d.ts.map +1 -0
  847. package/build/dockyard/logger/local-context.js +23 -0
  848. package/build/engine/bosun/action.d.ts +10 -0
  849. package/build/engine/bosun/action.d.ts.map +1 -0
  850. package/build/engine/bosun/action.js +32 -0
  851. package/build/engine/bosun/agent.d.ts +37 -0
  852. package/build/engine/bosun/agent.d.ts.map +1 -0
  853. package/build/engine/bosun/agent.js +3 -0
  854. package/build/engine/bosun/api-call-tracer.d.ts +8 -0
  855. package/build/engine/bosun/api-call-tracer.d.ts.map +1 -0
  856. package/build/engine/bosun/api-call-tracer.js +8 -0
  857. package/build/engine/bosun/context.d.ts +23 -0
  858. package/build/engine/bosun/context.d.ts.map +1 -0
  859. package/build/engine/bosun/context.js +41 -0
  860. package/build/engine/bosun/conversational-tracer.d.ts +8 -0
  861. package/build/engine/bosun/conversational-tracer.d.ts.map +1 -0
  862. package/build/engine/bosun/conversational-tracer.js +8 -0
  863. package/build/engine/bosun/index.d.ts +9 -0
  864. package/build/engine/bosun/index.d.ts.map +1 -0
  865. package/build/engine/bosun/index.js +7 -0
  866. package/build/engine/bosun/mock.d.ts +6 -0
  867. package/build/engine/bosun/mock.d.ts.map +1 -0
  868. package/build/engine/bosun/mock.js +28 -0
  869. package/build/engine/bosun/step-tracer.d.ts +8 -0
  870. package/build/engine/bosun/step-tracer.d.ts.map +1 -0
  871. package/build/engine/bosun/step-tracer.js +29 -0
  872. package/build/engine/default-logger.d.ts +3 -0
  873. package/build/engine/default-logger.d.ts.map +1 -0
  874. package/build/engine/default-logger.js +5 -0
  875. package/build/engine/engine.d.ts +6 -0
  876. package/build/engine/engine.d.ts.map +1 -0
  877. package/build/engine/engine.js +306 -0
  878. package/build/engine/index.d.ts +15 -0
  879. package/build/engine/index.d.ts.map +1 -0
  880. package/build/engine/index.js +7 -0
  881. package/build/engine/interfaces/adapter.d.ts +12 -0
  882. package/build/engine/interfaces/adapter.d.ts.map +1 -0
  883. package/build/engine/interfaces/adapter.js +1 -0
  884. package/build/engine/interfaces/conversation.d.ts +19 -0
  885. package/build/engine/interfaces/conversation.d.ts.map +1 -0
  886. package/build/engine/interfaces/conversation.js +1 -0
  887. package/build/engine/interfaces/engine.d.ts +21 -0
  888. package/build/engine/interfaces/engine.d.ts.map +1 -0
  889. package/build/engine/interfaces/engine.js +1 -0
  890. package/build/engine/interfaces/index.d.ts +8 -0
  891. package/build/engine/interfaces/index.d.ts.map +1 -0
  892. package/build/engine/interfaces/index.js +7 -0
  893. package/build/engine/interfaces/other.d.ts +7 -0
  894. package/build/engine/interfaces/other.d.ts.map +1 -0
  895. package/build/engine/interfaces/other.js +1 -0
  896. package/build/engine/interfaces/steps.d.ts +33 -0
  897. package/build/engine/interfaces/steps.d.ts.map +1 -0
  898. package/build/engine/interfaces/steps.js +1 -0
  899. package/build/engine/interfaces/stream.d.ts +43 -0
  900. package/build/engine/interfaces/stream.d.ts.map +1 -0
  901. package/build/engine/interfaces/stream.js +1 -0
  902. package/build/engine/interfaces/workflow.d.ts +18 -0
  903. package/build/engine/interfaces/workflow.d.ts.map +1 -0
  904. package/build/engine/interfaces/workflow.js +1 -0
  905. package/build/engine/llm-adapters/index.d.ts +5 -0
  906. package/build/engine/llm-adapters/index.d.ts.map +1 -0
  907. package/build/engine/llm-adapters/index.js +4 -0
  908. package/build/engine/llm-adapters/mock.d.ts +3 -0
  909. package/build/engine/llm-adapters/mock.d.ts.map +1 -0
  910. package/build/engine/llm-adapters/mock.js +11 -0
  911. package/build/engine/llm-adapters/openai-stream.d.ts +6 -0
  912. package/build/engine/llm-adapters/openai-stream.d.ts.map +1 -0
  913. package/build/engine/llm-adapters/openai-stream.js +29 -0
  914. package/build/engine/llm-adapters/openai.d.ts +8 -0
  915. package/build/engine/llm-adapters/openai.d.ts.map +1 -0
  916. package/build/engine/llm-adapters/openai.js +34 -0
  917. package/build/engine/llm-adapters/provider.d.ts +4 -0
  918. package/build/engine/llm-adapters/provider.d.ts.map +1 -0
  919. package/build/engine/llm-adapters/provider.js +10 -0
  920. package/build/engine/monitoring/index.d.ts +2 -0
  921. package/build/engine/monitoring/index.d.ts.map +1 -0
  922. package/build/engine/monitoring/index.js +1 -0
  923. package/build/engine/monitoring/provider-errors.d.ts +19 -0
  924. package/build/engine/monitoring/provider-errors.d.ts.map +1 -0
  925. package/build/engine/monitoring/provider-errors.js +133 -0
  926. package/build/engine/prompt-fs.d.ts +17 -0
  927. package/build/engine/prompt-fs.d.ts.map +1 -0
  928. package/build/engine/prompt-fs.js +18 -0
  929. package/build/engine/schedule.d.ts +30 -0
  930. package/build/engine/schedule.d.ts.map +1 -0
  931. package/build/engine/schedule.js +109 -0
  932. package/build/engine/step-registry.d.ts +19 -0
  933. package/build/engine/step-registry.d.ts.map +1 -0
  934. package/build/engine/step-registry.js +16 -0
  935. package/build/engine/stream/engine.d.ts +3 -0
  936. package/build/engine/stream/engine.d.ts.map +1 -0
  937. package/build/engine/stream/engine.js +167 -0
  938. package/build/engine/stream/get-client.d.ts +15 -0
  939. package/build/engine/stream/get-client.d.ts.map +1 -0
  940. package/build/engine/stream/get-client.js +118 -0
  941. package/build/engine/stream/index.d.ts +4 -0
  942. package/build/engine/stream/index.d.ts.map +1 -0
  943. package/build/engine/stream/index.js +2 -0
  944. package/build/engine/stream/token-transformers.d.ts +6 -0
  945. package/build/engine/stream/token-transformers.d.ts.map +1 -0
  946. package/build/engine/stream/token-transformers.js +50 -0
  947. package/build/index.d.ts +2 -7
  948. package/build/index.d.ts.map +1 -1
  949. package/build/index.js +2 -23
  950. package/build/notifications/index.d.ts +5 -0
  951. package/build/notifications/index.d.ts.map +1 -0
  952. package/build/notifications/index.js +4 -0
  953. package/build/notifications/logger.d.ts +2 -0
  954. package/build/notifications/logger.d.ts.map +1 -0
  955. package/build/notifications/logger.js +2 -0
  956. package/build/notifications/publisher.d.ts +10 -0
  957. package/build/notifications/publisher.d.ts.map +1 -0
  958. package/build/notifications/publisher.js +31 -0
  959. package/build/notifications/router.d.ts +18 -0
  960. package/build/notifications/router.d.ts.map +1 -0
  961. package/build/notifications/router.js +132 -0
  962. package/build/notifications/transport.d.ts +11 -0
  963. package/build/notifications/transport.d.ts.map +1 -0
  964. package/build/notifications/transport.js +31 -0
  965. package/build/notifications/types.d.ts +20 -0
  966. package/build/notifications/types.d.ts.map +1 -0
  967. package/build/notifications/types.js +1 -0
  968. package/build/steps/helpers.d.ts +11 -0
  969. package/build/steps/helpers.d.ts.map +1 -0
  970. package/build/steps/helpers.js +36 -0
  971. package/build/steps/index.d.ts +10 -0
  972. package/build/steps/index.d.ts.map +1 -0
  973. package/build/steps/index.js +5 -0
  974. package/build/steps/instructions-or-query.d.ts +9 -0
  975. package/build/steps/instructions-or-query.d.ts.map +1 -0
  976. package/build/steps/instructions-or-query.js +15 -0
  977. package/build/steps/make-all-required.d.ts +3 -0
  978. package/build/steps/make-all-required.d.ts.map +1 -0
  979. package/build/steps/make-all-required.js +41 -0
  980. package/build/steps/slot-booker/book-slot/prompt.d.ts +2 -0
  981. package/build/steps/slot-booker/book-slot/prompt.d.ts.map +1 -0
  982. package/build/steps/slot-booker/book-slot/prompt.js +24 -0
  983. package/build/steps/slot-booker/book-slot/step.d.ts +12 -0
  984. package/build/steps/slot-booker/book-slot/step.d.ts.map +1 -0
  985. package/build/steps/slot-booker/book-slot/step.js +51 -0
  986. package/build/steps/slot-booker/check-slots-for-match/prompt.d.ts +2 -0
  987. package/build/steps/slot-booker/check-slots-for-match/prompt.d.ts.map +1 -0
  988. package/build/steps/slot-booker/check-slots-for-match/prompt.js +30 -0
  989. package/build/steps/slot-booker/check-slots-for-match/step.d.ts +9 -0
  990. package/build/steps/slot-booker/check-slots-for-match/step.d.ts.map +1 -0
  991. package/build/steps/slot-booker/check-slots-for-match/step.js +23 -0
  992. package/build/steps/slot-booker/cleanup/step.d.ts +5 -0
  993. package/build/steps/slot-booker/cleanup/step.d.ts.map +1 -0
  994. package/build/steps/slot-booker/cleanup/step.js +22 -0
  995. package/build/steps/slot-booker/context.d.ts +14 -0
  996. package/build/steps/slot-booker/context.d.ts.map +1 -0
  997. package/build/steps/slot-booker/context.js +1 -0
  998. package/build/steps/slot-booker/find-slots/prompt.d.ts +2 -0
  999. package/build/steps/slot-booker/find-slots/prompt.d.ts.map +1 -0
  1000. package/build/steps/slot-booker/find-slots/prompt.js +27 -0
  1001. package/build/steps/slot-booker/find-slots/step.d.ts +12 -0
  1002. package/build/steps/slot-booker/find-slots/step.d.ts.map +1 -0
  1003. package/build/steps/slot-booker/find-slots/step.js +79 -0
  1004. package/build/steps/slot-booker/init/step.d.ts +5 -0
  1005. package/build/steps/slot-booker/init/step.d.ts.map +1 -0
  1006. package/build/steps/slot-booker/init/step.js +37 -0
  1007. package/build/steps/slot-booker/interfaces.d.ts +29 -0
  1008. package/build/steps/slot-booker/interfaces.d.ts.map +1 -0
  1009. package/build/steps/slot-booker/interfaces.js +1 -0
  1010. package/build/steps/slot-booker/slot-booker.d.ts +27 -0
  1011. package/build/steps/slot-booker/slot-booker.d.ts.map +1 -0
  1012. package/build/steps/slot-booker/slot-booker.js +28 -0
  1013. package/build/steps/slot-booker/util.d.ts +8 -0
  1014. package/build/steps/slot-booker/util.d.ts.map +1 -0
  1015. package/build/steps/slot-booker/util.js +26 -0
  1016. package/build/telescope/api.d.ts +13 -0
  1017. package/build/telescope/api.d.ts.map +1 -0
  1018. package/build/telescope/api.js +43 -0
  1019. package/build/telescope/create-telescope.d.ts +10 -0
  1020. package/build/telescope/create-telescope.d.ts.map +1 -0
  1021. package/build/telescope/create-telescope.js +7 -0
  1022. package/build/telescope/index.d.ts +22 -0
  1023. package/build/telescope/index.d.ts.map +1 -0
  1024. package/build/telescope/index.js +8 -0
  1025. package/build/telescope/interfaces/api-call-tracer.d.ts +21 -0
  1026. package/build/telescope/interfaces/api-call-tracer.d.ts.map +1 -0
  1027. package/build/telescope/interfaces/api-call-tracer.js +1 -0
  1028. package/build/telescope/interfaces/conversation.d.ts +22 -0
  1029. package/build/telescope/interfaces/conversation.d.ts.map +1 -0
  1030. package/build/telescope/interfaces/conversation.js +1 -0
  1031. package/build/telescope/interfaces/conversational-tracer.d.ts +16 -0
  1032. package/build/telescope/interfaces/conversational-tracer.d.ts.map +1 -0
  1033. package/build/telescope/interfaces/conversational-tracer.js +1 -0
  1034. package/build/telescope/interfaces/event-tracer.d.ts +125 -0
  1035. package/build/telescope/interfaces/event-tracer.d.ts.map +1 -0
  1036. package/build/telescope/interfaces/event-tracer.js +1 -0
  1037. package/build/telescope/interfaces/latency-tracer.d.ts +14 -0
  1038. package/build/telescope/interfaces/latency-tracer.d.ts.map +1 -0
  1039. package/build/telescope/interfaces/latency-tracer.js +1 -0
  1040. package/build/telescope/interfaces/step-tracer.d.ts +30 -0
  1041. package/build/telescope/interfaces/step-tracer.d.ts.map +1 -0
  1042. package/build/telescope/interfaces/step-tracer.js +1 -0
  1043. package/build/telescope/interfaces/storage.d.ts +17 -0
  1044. package/build/telescope/interfaces/storage.d.ts.map +1 -0
  1045. package/build/telescope/interfaces/storage.js +1 -0
  1046. package/build/telescope/interfaces/telescope.d.ts +22 -0
  1047. package/build/telescope/interfaces/telescope.d.ts.map +1 -0
  1048. package/build/telescope/interfaces/telescope.js +1 -0
  1049. package/build/telescope/interfaces/traces.d.ts +88 -0
  1050. package/build/telescope/interfaces/traces.d.ts.map +1 -0
  1051. package/build/telescope/interfaces/traces.js +1 -0
  1052. package/build/telescope/latency-events.d.ts +15 -0
  1053. package/build/telescope/latency-events.d.ts.map +1 -0
  1054. package/build/telescope/latency-events.js +41 -0
  1055. package/build/telescope/stub-storage.d.ts +21 -0
  1056. package/build/telescope/stub-storage.d.ts.map +1 -0
  1057. package/build/telescope/stub-storage.js +55 -0
  1058. package/build/telescope/stub-telescope.d.ts +5 -0
  1059. package/build/telescope/stub-telescope.d.ts.map +1 -0
  1060. package/build/telescope/stub-telescope.js +47 -0
  1061. package/build/telescope/stubs.d.ts +22 -0
  1062. package/build/telescope/stubs.d.ts.map +1 -0
  1063. package/build/telescope/stubs.js +51 -0
  1064. package/build/telescope/telescope.d.ts +21 -0
  1065. package/build/telescope/telescope.d.ts.map +1 -0
  1066. package/build/telescope/telescope.js +41 -0
  1067. package/build/telescope/trace-helpers.d.ts +12 -0
  1068. package/build/telescope/trace-helpers.d.ts.map +1 -0
  1069. package/build/telescope/trace-helpers.js +54 -0
  1070. package/build/telescope/tracers/api-call-tracer.d.ts +15 -0
  1071. package/build/telescope/tracers/api-call-tracer.d.ts.map +1 -0
  1072. package/build/telescope/tracers/api-call-tracer.js +53 -0
  1073. package/build/telescope/tracers/conversational-tracer.d.ts +15 -0
  1074. package/build/telescope/tracers/conversational-tracer.d.ts.map +1 -0
  1075. package/build/telescope/tracers/conversational-tracer.js +45 -0
  1076. package/build/telescope/tracers/event-tracer.d.ts +14 -0
  1077. package/build/telescope/tracers/event-tracer.d.ts.map +1 -0
  1078. package/build/telescope/tracers/event-tracer.js +72 -0
  1079. package/build/telescope/tracers/index.d.ts +7 -0
  1080. package/build/telescope/tracers/index.d.ts.map +1 -0
  1081. package/build/telescope/tracers/index.js +5 -0
  1082. package/build/telescope/tracers/latency-tracer.d.ts +15 -0
  1083. package/build/telescope/tracers/latency-tracer.d.ts.map +1 -0
  1084. package/build/telescope/tracers/latency-tracer.js +40 -0
  1085. package/build/telescope/tracers/step-tracer.d.ts +15 -0
  1086. package/build/telescope/tracers/step-tracer.d.ts.map +1 -0
  1087. package/build/telescope/tracers/step-tracer.js +50 -0
  1088. package/build/text-agent-handlers/event.d.ts +11 -0
  1089. package/build/text-agent-handlers/event.d.ts.map +1 -0
  1090. package/build/text-agent-handlers/event.js +1 -0
  1091. package/build/text-agent-handlers/incoming-message.d.ts +17 -0
  1092. package/build/text-agent-handlers/incoming-message.d.ts.map +1 -0
  1093. package/build/text-agent-handlers/incoming-message.js +131 -0
  1094. package/build/text-agent-handlers/index.d.ts +15 -0
  1095. package/build/text-agent-handlers/index.d.ts.map +1 -0
  1096. package/build/text-agent-handlers/index.js +6 -0
  1097. package/build/text-agent-handlers/instrument.d.ts +12 -0
  1098. package/build/text-agent-handlers/instrument.d.ts.map +1 -0
  1099. package/build/text-agent-handlers/instrument.js +27 -0
  1100. package/build/text-agent-handlers/jobs-handler.d.ts +10 -0
  1101. package/build/text-agent-handlers/jobs-handler.d.ts.map +1 -0
  1102. package/build/text-agent-handlers/jobs-handler.js +27 -0
  1103. package/build/text-agent-handlers/jobs.d.ts +19 -0
  1104. package/build/text-agent-handlers/jobs.d.ts.map +1 -0
  1105. package/build/text-agent-handlers/jobs.js +1 -0
  1106. package/build/text-agent-handlers/message-acceptor.d.ts +13 -0
  1107. package/build/text-agent-handlers/message-acceptor.d.ts.map +1 -0
  1108. package/build/text-agent-handlers/message-acceptor.js +32 -0
  1109. package/build/text-agent-handlers/notification-hook.d.ts +14 -0
  1110. package/build/text-agent-handlers/notification-hook.d.ts.map +1 -0
  1111. package/build/text-agent-handlers/notification-hook.js +51 -0
  1112. package/build/text-agent-handlers/ports.d.ts +36 -0
  1113. package/build/text-agent-handlers/ports.d.ts.map +1 -0
  1114. package/build/text-agent-handlers/ports.js +3 -0
  1115. package/build/{timeouts-manager.d.ts → timeout-manager/index.d.ts} +3 -3
  1116. package/build/timeout-manager/index.d.ts.map +1 -0
  1117. package/build/{timeouts-manager.js → timeout-manager/index.js} +1 -5
  1118. package/build/token-storage/index.d.ts +4 -0
  1119. package/build/token-storage/index.d.ts.map +1 -0
  1120. package/build/token-storage/index.js +1 -0
  1121. package/build/voice-agent-api/http-helpers.d.ts +13 -0
  1122. package/build/voice-agent-api/http-helpers.d.ts.map +1 -0
  1123. package/build/voice-agent-api/http-helpers.js +39 -0
  1124. package/build/voice-agent-api/index.d.ts +6 -0
  1125. package/build/voice-agent-api/index.d.ts.map +1 -0
  1126. package/build/voice-agent-api/index.js +3 -0
  1127. package/build/voice-agent-api/llm-completion-handler.d.ts +5 -0
  1128. package/build/voice-agent-api/llm-completion-handler.d.ts.map +1 -0
  1129. package/build/voice-agent-api/llm-completion-handler.js +75 -0
  1130. package/build/voice-agent-api/logger.d.ts +3 -0
  1131. package/build/voice-agent-api/logger.d.ts.map +1 -0
  1132. package/build/voice-agent-api/logger.js +3 -0
  1133. package/build/voice-agent-api/voice-http.d.ts +33 -0
  1134. package/build/voice-agent-api/voice-http.d.ts.map +1 -0
  1135. package/build/voice-agent-api/voice-http.js +370 -0
  1136. package/package.json +49 -11
  1137. package/build/analytics.d.ts +0 -42
  1138. package/build/analytics.d.ts.map +0 -1
  1139. package/build/analytics.js +0 -100
  1140. package/build/context-cache.d.ts.map +0 -1
  1141. package/build/interfaces/platform.d.ts +0 -41
  1142. package/build/interfaces/platform.d.ts.map +0 -1
  1143. package/build/interfaces/platform.js +0 -6
  1144. package/build/interfaces/rc-voice.d.ts +0 -53
  1145. package/build/interfaces/rc-voice.d.ts.map +0 -1
  1146. package/build/interfaces/rc-voice.js +0 -2
  1147. package/build/postgres-analytics-query.d.ts +0 -87
  1148. package/build/postgres-analytics-query.d.ts.map +0 -1
  1149. package/build/postgres-analytics-query.js +0 -384
  1150. package/build/postgres-analytics.d.ts +0 -46
  1151. package/build/postgres-analytics.d.ts.map +0 -1
  1152. package/build/postgres-analytics.js +0 -282
  1153. package/build/timeouts-manager.d.ts.map +0 -1
@@ -0,0 +1,1821 @@
1
+ import { a8 as escape_html, R as derived, ao as ensure_array_like, af as attr_style, a9 as attr_class, ac as clsx } from '../../../../../../chunks/index.js-DczFGj-7.js';
2
+ import { o as onDestroy } from '../../../../../../chunks/index-server.js-CALBgpac.js';
3
+ import { p as page } from '../../../../../../chunks/index2.js-DYVLcO2-.js';
4
+ import { B as Button } from '../../../../../../chunks/Button.js-IbO6ojjD.js';
5
+ import { g as getPersistedTelescopeSourceId, T as TelescopeClient } from '../../../../../../chunks/source-selection.js-Cc6RX6-m.js';
6
+ import { i as isMainStepName } from '../../../../../../chunks/steps.js-DzZCg39h.js';
7
+ import { b as buildResponseLatencySpans, f as findResponseLatencyUserTurn, R as RESPONSE_LATENCY_THRESHOLD_MS } from '../../../../../../chunks/latency.js--f3JYIRg.js';
8
+ import { g as getConversationViewMemory, c as conversationViewMemoryKey } from '../../../../../../chunks/conversation-view-memory.js-DjOFeigb.js';
9
+ import '../../../../../../chunks/uneval.js-5Y6J9rDU.js';
10
+ import '../../../../../../chunks/state.svelte.js-DDOPLPl-.js';
11
+ import '../../../../../../chunks/exports.js-8HOoaa4e.js';
12
+ import '../../../../../../chunks/event.js-BfLhxAp5.js';
13
+ import '../../../../../../chunks/root.js-CJvqqGUj.js';
14
+ import '../../../../../../chunks/utils.js-BQzn9ikS.js';
15
+ import '../../../../../../chunks/schemas.js-W-DP3mDr.js';
16
+
17
+ function _page($$renderer, $$props) {
18
+ $$renderer.component(($$renderer2) => {
19
+ const SPEECH_BUBBLE_HEIGHT_PX = 30;
20
+ const TIMELINE_RULER_HEIGHT_PX = 32;
21
+ const TIMELINE_ROW_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX;
22
+ const TIMELINE_ROW_GAP_PX = 5;
23
+ const WAVEFORM_ROW_HEIGHT_PX = 160;
24
+ const SPEECH_BUBBLE_VERTICAL_GAP_PX = TIMELINE_ROW_GAP_PX;
25
+ const SPEECH_BUBBLE_LEVEL_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX + SPEECH_BUBBLE_VERTICAL_GAP_PX;
26
+ const SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS = 500;
27
+ const SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS = 2500;
28
+ const SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS = 3e4;
29
+ const RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS = 250;
30
+ const GUIDE_ROW_LABELS = /* @__PURE__ */ new Set(["VAD", "Playback"]);
31
+ const client = new TelescopeClient(fetch);
32
+ const BOSUN_COLORS = {
33
+ blue: "#569cd6",
34
+ green: "#93FF6D",
35
+ greenDark: "#00B58A",
36
+ orange: "#ce9178",
37
+ purple: "#81147D",
38
+ red: "#FF6666",
39
+ gray: "#767676"
40
+ };
41
+ const ROW_DEFS = [
42
+ {
43
+ label: "VAD",
44
+ eventTypes: ["vad.activated", "vad.deactivated"]
45
+ },
46
+ {
47
+ label: "STT",
48
+ eventTypes: [
49
+ "stt.started",
50
+ "stt.interim",
51
+ "stt.final",
52
+ "stt.final_transcript"
53
+ ]
54
+ },
55
+ { label: "Trigger", eventTypes: ["speech.created"] },
56
+ {
57
+ label: "Reply Pending",
58
+ eventTypes: ["reply.pending.started", "reply.pending.completed"]
59
+ },
60
+ {
61
+ label: "LLM Transport",
62
+ eventTypes: [
63
+ "llm.connect_tcp.started",
64
+ "llm.connect_tcp.completed",
65
+ "llm.connect_tcp.failed",
66
+ "llm.start_tls.started",
67
+ "llm.start_tls.completed",
68
+ "llm.start_tls.failed"
69
+ ]
70
+ },
71
+ {
72
+ label: "LLM Wait",
73
+ eventTypes: ["llm.wait.started", "llm.requested", "llm.wait.completed"]
74
+ },
75
+ {
76
+ label: "LLM Stream",
77
+ eventTypes: [
78
+ "llm.stream.started",
79
+ "llm.first_token",
80
+ "llm.completed",
81
+ "llm.stream.completed"
82
+ ]
83
+ },
84
+ {
85
+ label: "TTS Text",
86
+ eventTypes: ["tts.text.first_sent", "tts.text.completed"]
87
+ },
88
+ {
89
+ label: "Provider",
90
+ eventTypes: [
91
+ "tts.provider.started",
92
+ "tts.audio.first_received",
93
+ "tts.audio.last_received",
94
+ "tts.provider.completed"
95
+ ]
96
+ },
97
+ {
98
+ label: "Decode",
99
+ eventTypes: ["tts.decode.started", "tts.decode.completed"]
100
+ },
101
+ {
102
+ label: "Output Queue",
103
+ eventTypes: ["audio.output.wait.started", "audio.output.wait.completed"]
104
+ },
105
+ {
106
+ label: "Playback",
107
+ eventTypes: [
108
+ "audio.playback.started",
109
+ "audio.playback.stopped",
110
+ "audio.playback.ended"
111
+ ]
112
+ },
113
+ { label: "Response Latency" },
114
+ {
115
+ label: "Interruptions",
116
+ eventTypes: ["interruption.detected", "audio.playback.interrupted"]
117
+ },
118
+ { label: "Other" }
119
+ ];
120
+ const TIMELINE_ROW_LABELS = new Set(ROW_DEFS.map((row) => row.label));
121
+ const COLOR_BY_KEY = {
122
+ call: tintHex(BOSUN_COLORS.gray, 0.2),
123
+ vad: tintHex(BOSUN_COLORS.purple, 0.35),
124
+ stt: tintHex(BOSUN_COLORS.purple, 0.2),
125
+ trigger: BOSUN_COLORS.greenDark,
126
+ "response.latency.ok": BOSUN_COLORS.green,
127
+ "response.latency.high": BOSUN_COLORS.red,
128
+ "reply.pending": tintHex(BOSUN_COLORS.greenDark, 0.18),
129
+ "llm.transport": tintHex(BOSUN_COLORS.blue, 0.18),
130
+ "llm.wait": tintHex(BOSUN_COLORS.blue, -0.25),
131
+ "llm.stream": BOSUN_COLORS.blue,
132
+ "tts.text": BOSUN_COLORS.orange,
133
+ "tts.provider.lifecycle": tintHex(BOSUN_COLORS.purple, -0.18),
134
+ "tts.provider": tintHex(BOSUN_COLORS.purple, 0.12),
135
+ "tts.decode": tintHex(BOSUN_COLORS.orange, -0.12),
136
+ "audio.output.wait": BOSUN_COLORS.orange,
137
+ playback: tintHex(BOSUN_COLORS.greenDark, -0.08),
138
+ interruption: BOSUN_COLORS.orange,
139
+ other: BOSUN_COLORS.gray
140
+ };
141
+ const SPAN_RULES = [
142
+ {
143
+ startEventType: "reply.pending.started",
144
+ endEventType: "reply.pending.completed",
145
+ row: "Reply Pending",
146
+ colorKey: "reply.pending",
147
+ label: "Reply pending",
148
+ description: "Derived from adjacent reply-pending lifecycle events"
149
+ },
150
+ {
151
+ startEventType: "llm.connect_tcp.started",
152
+ endEventType: "llm.connect_tcp.completed",
153
+ row: "LLM Transport",
154
+ colorKey: "llm.transport",
155
+ label: "Connect TCP",
156
+ description: "Derived from adjacent TCP connect lifecycle events"
157
+ },
158
+ {
159
+ startEventType: "llm.start_tls.started",
160
+ endEventType: "llm.start_tls.completed",
161
+ row: "LLM Transport",
162
+ colorKey: "llm.transport",
163
+ label: "Start TLS",
164
+ description: "Derived from adjacent TLS lifecycle events"
165
+ },
166
+ {
167
+ startEventType: "llm.wait.started",
168
+ endEventType: "llm.wait.completed",
169
+ row: "LLM Wait",
170
+ colorKey: "llm.wait",
171
+ label: "LLM wait",
172
+ description: "Derived from adjacent LLM wait lifecycle events"
173
+ },
174
+ {
175
+ startEventType: "llm.stream.started",
176
+ endEventType: "llm.stream.completed",
177
+ row: "LLM Stream",
178
+ colorKey: "llm.stream",
179
+ label: "LLM stream",
180
+ description: "Derived from adjacent LLM stream lifecycle events"
181
+ },
182
+ {
183
+ startEventType: "tts.text.first_sent",
184
+ endEventType: "tts.text.completed",
185
+ row: "TTS Text",
186
+ colorKey: "tts.text",
187
+ label: "TTS text send",
188
+ description: "Derived from adjacent TTS text send and completion events"
189
+ },
190
+ {
191
+ startEventType: "tts.provider.started",
192
+ endEventType: "tts.audio.first_received",
193
+ row: "Provider",
194
+ colorKey: "tts.provider.lifecycle",
195
+ label: "Provider wait",
196
+ description: "Derived from adjacent provider start and first-audio events"
197
+ },
198
+ {
199
+ startEventType: "tts.audio.first_received",
200
+ endEventType: "tts.provider.completed",
201
+ row: "Provider",
202
+ colorKey: "tts.provider",
203
+ label: "Provider audio",
204
+ description: "Derived from adjacent provider first-audio and completion events"
205
+ },
206
+ {
207
+ startEventType: "tts.decode.started",
208
+ endEventType: "tts.decode.completed",
209
+ row: "Decode",
210
+ colorKey: "tts.decode",
211
+ label: "Decode",
212
+ description: "Derived from adjacent local decode lifecycle events"
213
+ },
214
+ {
215
+ startEventType: "audio.output.wait.started",
216
+ endEventType: "audio.output.wait.completed",
217
+ row: "Output Queue",
218
+ colorKey: "audio.output.wait",
219
+ label: "Output queue",
220
+ description: "Derived from adjacent audio-output wait lifecycle events"
221
+ },
222
+ {
223
+ startEventType: "audio.playback.started",
224
+ endEventType: "audio.playback.stopped",
225
+ row: "Playback",
226
+ colorKey: "playback",
227
+ label: "Playback",
228
+ description: "Derived from adjacent playback start and playback stop events"
229
+ }
230
+ ];
231
+ const SPAN_RULE_BY_START = new Map(SPAN_RULES.map((rule) => [rule.startEventType, rule]));
232
+ function emptyRecordingResponse() {
233
+ return {
234
+ exists: false,
235
+ audioUrl: null,
236
+ fileName: null,
237
+ mimeType: null,
238
+ size: null,
239
+ uploadedAt: null,
240
+ alignmentOffsetMs: 0
241
+ };
242
+ }
243
+ const viewMemory = getConversationViewMemory();
244
+ const initialSourceId = getPersistedTelescopeSourceId() ?? "";
245
+ const initialConversationId = page.params.conversationId ?? "";
246
+ const initialMemoryKey = conversationViewMemoryKey(initialConversationId, initialSourceId);
247
+ const initialMemory = viewMemory.latency.get(initialMemoryKey);
248
+ client.setSourceId(initialSourceId || void 0);
249
+ let sourceId = initialSourceId;
250
+ let conversation = initialMemory?.conversation ?? null;
251
+ let traces = initialMemory?.traces ?? [];
252
+ let conversationTraces = initialMemory?.conversationTraces ?? [];
253
+ let dataLoaded = initialMemory?.dataLoaded ?? false;
254
+ let error = initialMemory?.error ?? null;
255
+ let recording = initialMemory?.recording ?? emptyRecordingResponse();
256
+ let recordingLoaded = initialMemory?.recordingLoaded ?? false;
257
+ let recordingError = initialMemory?.recordingError ?? null;
258
+ let uploadInFlight = false;
259
+ let waveform = initialMemory?.waveform ?? null;
260
+ let waveformError = initialMemory?.waveformError ?? null;
261
+ let playbackPositionMs = initialMemory?.playbackPositionMs ?? 0;
262
+ let playbackPlaying = false;
263
+ let playbackError = null;
264
+ let alignmentSaving = false;
265
+ let alignmentError = null;
266
+ let viewDirty = initialMemory?.viewDirty ?? false;
267
+ let viewportStartMs = null;
268
+ let viewportEndMs = null;
269
+ let scrollViewportEl = null;
270
+ let fileInputEl = null;
271
+ let humanSpeechBubbleReservedLevels = initialMemory?.humanSpeechBubbleReservedLevels ?? 1;
272
+ let copyLatencyState = "idle";
273
+ let loadKey = "";
274
+ let playbackFrame = 0;
275
+ let playbackAudioBuffer = initialMemory?.playbackAudioBuffer ?? null;
276
+ let playbackAudioContext = null;
277
+ let playbackSourceNode = null;
278
+ let playbackStartedAtMs = null;
279
+ let playbackStartedAtContextTime = null;
280
+ const conversationId = derived(() => page.params.conversationId);
281
+ function buildRecordingApiUrlFor(cid, nextSourceId) {
282
+ const params = new URLSearchParams();
283
+ if (nextSourceId) params.set("source", nextSourceId);
284
+ const search = params.toString();
285
+ return `/traces/api/latency/${encodeURIComponent(cid)}${search ? `?${search}` : ""}`;
286
+ }
287
+ const recordingApiUrl = derived(() => {
288
+ if (!conversationId()) return "";
289
+ return buildRecordingApiUrlFor(conversationId(), sourceId);
290
+ });
291
+ const timelineOriginMs = derived(() => {
292
+ let min = Number.POSITIVE_INFINITY;
293
+ for (const trace of traces) {
294
+ if (typeof trace.atMs !== "number" || !Number.isFinite(trace.atMs)) continue;
295
+ min = Math.min(min, trace.atMs);
296
+ }
297
+ if (Number.isFinite(min)) return min;
298
+ if (typeof conversation?.createdAt === "number" && Number.isFinite(conversation.createdAt)) {
299
+ return conversation.createdAt;
300
+ }
301
+ return Number.isFinite(min) ? min : 0;
302
+ });
303
+ const callSegments = derived(() => buildCallLatencySegments(traces));
304
+ const latencyTraceCount = derived(() => traces.length);
305
+ const aiResponses = derived(() => buildAiResponses());
306
+ const playbackSpeechMatches = derived(() => buildPlaybackSpeechMatches(callSegments(), aiResponses()));
307
+ const timelineSegments = derived(() => {
308
+ const playbackSegments = callSegments().map((segment) => {
309
+ const speech = playbackSpeechMatches().bySegmentId.get(segment.id);
310
+ if (!speech || segment.row !== "Playback" || segment.durationMs <= 0) return segment;
311
+ return {
312
+ ...segment,
313
+ speechText: speech.text,
314
+ speechFullText: speech.fullText,
315
+ speechTraceLabel: speech.traceLabel
316
+ };
317
+ });
318
+ return [
319
+ ...playbackSegments,
320
+ ...buildStandaloneWaitSegments(aiResponses(), playbackSpeechMatches().responseIds)
321
+ ];
322
+ });
323
+ const timelineRows = derived(() => {
324
+ const grouped = /* @__PURE__ */ new Map();
325
+ for (const segment of timelineSegments()) {
326
+ const items = grouped.get(segment.row);
327
+ if (items) items.push(segment);
328
+ else grouped.set(segment.row, [segment]);
329
+ }
330
+ return [...ROW_DEFS].reverse().map((row) => ({ label: row.label, segments: grouped.get(row.label) ?? [] })).filter((row) => row.segments.length > 0);
331
+ });
332
+ const speechBubbleBaseLayouts = derived(() => buildSpeechBubbleBaseLayouts());
333
+ const humanSpeechBubbleLevelCount = derived(() => Math.max(humanSpeechBubbleReservedLevels, speechBubbleRoleLevelCount(speechBubbleBaseLayouts(), "human")));
334
+ const speechBubbles = derived(() => compactSpeechBubbleLayouts(speechBubbleBaseLayouts()));
335
+ const humanSpeechBubbleLaneHeightPx = derived(() => speechBubbleLaneHeightPx(humanSpeechBubbleLevelCount()));
336
+ const speechBubbleAreaHeightPx = derived(() => humanSpeechBubbleLaneHeightPx());
337
+ const timelineRowsHeightPx = derived(() => timelineRows().length * TIMELINE_ROW_HEIGHT_PX + Math.max(0, timelineRows().length - 1) * TIMELINE_ROW_GAP_PX);
338
+ const traceRowsToBubbleGapPx = derived(() => timelineRows().length > 0 ? TIMELINE_ROW_GAP_PX : 0);
339
+ const speechBubbleAreaTopPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx());
340
+ const waveformRowVisible = derived(() => recording.exists);
341
+ const waveformRowHeightPx = derived(() => waveformRowVisible() ? TIMELINE_ROW_GAP_PX + WAVEFORM_ROW_HEIGHT_PX : 0);
342
+ const guideLines = derived(() => buildGuideLines(timelineRows()));
343
+ const recordingStartMs = derived(() => {
344
+ if (!waveform) return null;
345
+ return timelineOriginMs() + recording.alignmentOffsetMs;
346
+ });
347
+ const timelinePlotHeightPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx() + speechBubbleAreaHeightPx() + waveformRowHeightPx());
348
+ const playbackAbsoluteMs = derived(() => {
349
+ if (recordingStartMs() == null) return null;
350
+ return recordingStartMs() + playbackPositionMs;
351
+ });
352
+ const playbackCursor = derived(() => {
353
+ const absoluteMs = playbackAbsoluteMs();
354
+ if (absoluteMs == null || viewportStartMs == null || viewportEndMs == null) return null;
355
+ const durationMs = viewportEndMs - viewportStartMs;
356
+ if (!Number.isFinite(durationMs) || durationMs <= 0) return null;
357
+ if (absoluteMs < viewportStartMs || absoluteMs > viewportEndMs) return null;
358
+ return {
359
+ leftPercent: clamp((absoluteMs - viewportStartMs) / durationMs * 100, 0, 100),
360
+ topPx: TIMELINE_RULER_HEIGHT_PX,
361
+ heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)
362
+ };
363
+ });
364
+ const timelineOriginLine = derived(() => {
365
+ if (viewportStartMs == null || viewportEndMs == null) return null;
366
+ const durationMs = viewportEndMs - viewportStartMs;
367
+ if (!Number.isFinite(durationMs) || durationMs <= 0) return null;
368
+ if (timelineOriginMs() < viewportStartMs || timelineOriginMs() > viewportEndMs) return null;
369
+ return {
370
+ leftPercent: (timelineOriginMs() - viewportStartMs) / durationMs * 100,
371
+ topPx: TIMELINE_RULER_HEIGHT_PX,
372
+ heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)
373
+ };
374
+ });
375
+ const contentExtent = derived(() => {
376
+ let min = Number.POSITIVE_INFINITY;
377
+ let max = Number.NEGATIVE_INFINITY;
378
+ for (const segment of callSegments()) {
379
+ min = Math.min(min, segment.start);
380
+ max = Math.max(max, segment.end);
381
+ }
382
+ if (waveform && recordingStartMs() != null) {
383
+ min = Math.min(min, recordingStartMs());
384
+ max = Math.max(max, recordingStartMs() + waveform.durationMs);
385
+ }
386
+ if (!Number.isFinite(min) || !Number.isFinite(max)) return null;
387
+ if (max <= min) max = min + 1;
388
+ return { min, max };
389
+ });
390
+ const conversationTraceExtent = derived(() => {
391
+ let min = Number.POSITIVE_INFINITY;
392
+ let max = Number.NEGATIVE_INFINITY;
393
+ for (const segment of callSegments()) {
394
+ if (!TIMELINE_ROW_LABELS.has(segment.row)) continue;
395
+ min = Math.min(min, segment.start);
396
+ max = Math.max(max, segment.end);
397
+ }
398
+ if (!Number.isFinite(min) || !Number.isFinite(max)) return null;
399
+ if (max <= min) max = min + 1;
400
+ return { min, max };
401
+ });
402
+ const viewportDurationMs = derived(() => {
403
+ if (viewportStartMs == null || viewportEndMs == null) return null;
404
+ const duration = viewportEndMs - viewportStartMs;
405
+ return duration > 0 ? duration : null;
406
+ });
407
+ const visibleTicks = derived(() => {
408
+ if (viewportStartMs == null || viewportEndMs == null) return [];
409
+ return buildTicks(viewportStartMs, viewportEndMs, timelineOriginMs());
410
+ });
411
+ function saveViewMemory(key = loadKey) {
412
+ if (!key) return;
413
+ const previous = viewMemory.latency.get(key);
414
+ const memory = {
415
+ conversation,
416
+ traces,
417
+ conversationTraces,
418
+ dataLoaded,
419
+ error,
420
+ recording,
421
+ recordingLoaded,
422
+ recordingError,
423
+ waveform,
424
+ waveformError,
425
+ playbackAudioBuffer,
426
+ playbackPositionMs,
427
+ viewportStartMs,
428
+ viewportEndMs,
429
+ viewportOriginMs: timelineOriginMs(),
430
+ viewDirty,
431
+ humanSpeechBubbleReservedLevels,
432
+ scrollTop: previous?.scrollTop ?? scrollViewportEl?.scrollTop ?? 0,
433
+ scrollLeft: previous?.scrollLeft ?? scrollViewportEl?.scrollLeft ?? 0
434
+ };
435
+ viewMemory.latency.set(key, memory);
436
+ const cid = conversationId();
437
+ const currentSourceId = getPersistedTelescopeSourceId() ?? "";
438
+ if (cid && currentSourceId && key === conversationViewMemoryKey(cid, "")) {
439
+ viewMemory.latency.set(conversationViewMemoryKey(cid, currentSourceId), memory);
440
+ }
441
+ }
442
+ onDestroy(() => {
443
+ saveViewMemory();
444
+ stopPlayback(false);
445
+ void closePlaybackAudioContext();
446
+ });
447
+ function normalizeNonEmptyString(value) {
448
+ if (typeof value !== "string") return null;
449
+ const trimmed = value.trim();
450
+ return trimmed ? trimmed : null;
451
+ }
452
+ function ms(value) {
453
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
454
+ }
455
+ function clampByte(value) {
456
+ return Math.max(0, Math.min(255, Math.round(value)));
457
+ }
458
+ function clamp(value, min, max) {
459
+ return Math.min(max, Math.max(min, value));
460
+ }
461
+ function tintHex(hex, amount) {
462
+ const raw = (hex ?? "").trim().replace(/^#/, "");
463
+ const expanded = raw.length === 3 ? raw.split("").map((part) => `${part}${part}`).join("") : raw;
464
+ if (expanded.length !== 6 || !/^[0-9a-fA-F]+$/.test(expanded)) return hex;
465
+ const r = parseInt(expanded.slice(0, 2), 16);
466
+ const g = parseInt(expanded.slice(2, 4), 16);
467
+ const b = parseInt(expanded.slice(4, 6), 16);
468
+ const t = Math.abs(Math.max(-1, Math.min(1, amount)));
469
+ const target = amount >= 0 ? 255 : 0;
470
+ 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")}`;
471
+ }
472
+ function fmtSignedMs(value) {
473
+ if (value == null || !Number.isFinite(value)) return "0 ms";
474
+ const rounded = Math.round(value);
475
+ if (rounded === 0) return "0 ms";
476
+ return `${rounded > 0 ? "+" : ""}${rounded} ms`;
477
+ }
478
+ function formatRelativeTime(offsetMs) {
479
+ if (!Number.isFinite(offsetMs)) return "—";
480
+ const sign = offsetMs < 0 ? "-" : "";
481
+ const abs = Math.abs(offsetMs);
482
+ if (abs < 1e4) return `${sign}${(abs / 1e3).toFixed(1)}s`;
483
+ if (abs < 6e4) return `${sign}${(abs / 1e3).toFixed(2)}s`;
484
+ const totalSeconds = abs / 1e3;
485
+ const minutes = Math.floor(totalSeconds / 60);
486
+ const seconds = totalSeconds - minutes * 60;
487
+ return `${sign}${minutes}:${seconds.toFixed(1).padStart(4, "0")}`;
488
+ }
489
+ function safeJson(value) {
490
+ try {
491
+ return JSON.stringify(value ?? null, null, 2);
492
+ } catch {
493
+ return String(value);
494
+ }
495
+ }
496
+ async function copyLatencyStream() {
497
+ try {
498
+ await navigator.clipboard.writeText(safeJson(traces));
499
+ copyLatencyState = "ok";
500
+ window.setTimeout(
501
+ () => {
502
+ copyLatencyState = "idle";
503
+ },
504
+ 2e3
505
+ );
506
+ } catch (reason) {
507
+ console.error("Failed to copy latency stream", reason);
508
+ copyLatencyState = "error";
509
+ window.setTimeout(
510
+ () => {
511
+ copyLatencyState = "idle";
512
+ },
513
+ 3e3
514
+ );
515
+ }
516
+ }
517
+ function describeTrace(trace) {
518
+ const time = typeof trace.createdAt === "number" && Number.isFinite(trace.createdAt) ? new Date(trace.createdAt).toLocaleTimeString() : "unknown time";
519
+ if (trace.traceType === "LATENCY") {
520
+ return `Latency • #${trace.seq ?? "?"} • ${trace.eventType ?? "unknown"} • ${time}`;
521
+ }
522
+ if (trace.traceType === "CONVERSATIONAL") {
523
+ return `Conversational • ${trace.eventName} • ${time}`;
524
+ }
525
+ if (trace.traceType === "STEP") {
526
+ return `Step • ${trace.name ?? "unknown"} • ${time}`;
527
+ }
528
+ return `API • ${trace.operationName} • ${time}`;
529
+ }
530
+ function latencyPayload(trace) {
531
+ const payload = trace.payload;
532
+ return payload && typeof payload === "object" && !Array.isArray(payload) ? payload : {};
533
+ }
534
+ function latencyRow(eventType) {
535
+ if (eventType === "call.started" || eventType === "call.ended") return "Call";
536
+ if (eventType.startsWith("vad.")) return "VAD";
537
+ if (eventType.startsWith("stt.")) return "STT";
538
+ if (eventType === "speech.created") return "Trigger";
539
+ if (eventType.startsWith("reply.pending.")) return "Reply Pending";
540
+ if (eventType.startsWith("llm.connect_tcp.") || eventType.startsWith("llm.start_tls.")) {
541
+ return "LLM Transport";
542
+ }
543
+ if (eventType === "llm.requested" || eventType.startsWith("llm.wait.")) return "LLM Wait";
544
+ if (eventType === "llm.first_token" || eventType === "llm.completed" || eventType.startsWith("llm.stream.")) {
545
+ return "LLM Stream";
546
+ }
547
+ if (eventType.startsWith("tts.text.")) return "TTS Text";
548
+ if (eventType.startsWith("tts.provider.")) return "Provider";
549
+ if (eventType === "tts.audio.first_received" || eventType === "tts.audio.last_received") {
550
+ return "Provider";
551
+ }
552
+ if (eventType.startsWith("tts.decode.")) return "Decode";
553
+ if (eventType.startsWith("audio.output.wait.")) return "Output Queue";
554
+ if (eventType === "interruption.detected" || eventType === "audio.playback.interrupted") {
555
+ return "Interruptions";
556
+ }
557
+ if (eventType.startsWith("audio.playback.")) return "Playback";
558
+ return "Other";
559
+ }
560
+ function latencyColorKey(eventType) {
561
+ if (eventType === "call.started" || eventType === "call.ended") return "call";
562
+ if (eventType.startsWith("vad.")) return "vad";
563
+ if (eventType.startsWith("stt.")) return "stt";
564
+ if (eventType === "speech.created") return "trigger";
565
+ if (eventType.startsWith("reply.pending.")) return "reply.pending";
566
+ if (eventType.startsWith("llm.connect_tcp.") || eventType.startsWith("llm.start_tls.")) {
567
+ return "llm.transport";
568
+ }
569
+ if (eventType === "llm.requested" || eventType.startsWith("llm.wait.")) return "llm.wait";
570
+ if (eventType === "llm.first_token" || eventType === "llm.completed" || eventType.startsWith("llm.stream.")) {
571
+ return "llm.stream";
572
+ }
573
+ if (eventType.startsWith("tts.text.")) return "tts.text";
574
+ if (eventType.startsWith("tts.provider.")) return "tts.provider.lifecycle";
575
+ if (eventType === "tts.audio.first_received" || eventType === "tts.audio.last_received") {
576
+ return "tts.provider";
577
+ }
578
+ if (eventType.startsWith("tts.decode.")) return "tts.decode";
579
+ if (eventType.startsWith("audio.output.wait.")) return "audio.output.wait";
580
+ if (eventType === "interruption.detected" || eventType === "audio.playback.interrupted") {
581
+ return "interruption";
582
+ }
583
+ if (eventType.startsWith("audio.playback.")) return "playback";
584
+ return "other";
585
+ }
586
+ function latencyEventMarker(eventType) {
587
+ switch (eventType) {
588
+ case "vad.activated":
589
+ case "stt.started":
590
+ return "start";
591
+ case "vad.deactivated":
592
+ case "stt.final":
593
+ case "stt.final_transcript":
594
+ return "end";
595
+ default:
596
+ return null;
597
+ }
598
+ }
599
+ function latencyLabel(trace) {
600
+ switch (trace.eventType) {
601
+ case "call.started":
602
+ return "Call started";
603
+ case "call.ended":
604
+ return "Call ended";
605
+ case "vad.activated":
606
+ return "VAD activated";
607
+ case "vad.deactivated":
608
+ return "VAD deactivated";
609
+ case "stt.started":
610
+ return "STT start";
611
+ case "stt.interim":
612
+ return "STT interim";
613
+ case "stt.final":
614
+ case "stt.final_transcript":
615
+ return "STT final";
616
+ case "speech.created":
617
+ return "Speech created";
618
+ case "reply.pending.started":
619
+ return "Reply pending start";
620
+ case "reply.pending.completed":
621
+ return "Reply pending end";
622
+ case "llm.connect_tcp.started":
623
+ return "Connect TCP start";
624
+ case "llm.connect_tcp.completed":
625
+ return "Connect TCP end";
626
+ case "llm.connect_tcp.failed":
627
+ return "Connect TCP failed";
628
+ case "llm.start_tls.started":
629
+ return "TLS start";
630
+ case "llm.start_tls.completed":
631
+ return "TLS end";
632
+ case "llm.start_tls.failed":
633
+ return "TLS failed";
634
+ case "llm.wait.started":
635
+ return "LLM wait start";
636
+ case "llm.wait.completed":
637
+ return "LLM wait end";
638
+ case "llm.stream.started":
639
+ return "LLM stream start";
640
+ case "llm.stream.completed":
641
+ return "LLM stream end";
642
+ case "llm.requested":
643
+ return "LLM request";
644
+ case "llm.first_token":
645
+ return "LLM first token";
646
+ case "llm.completed":
647
+ return "LLM end";
648
+ case "tts.text.first_sent":
649
+ return "TTS first text";
650
+ case "tts.text.completed":
651
+ return "TTS text end";
652
+ case "tts.provider.started":
653
+ return "Provider start";
654
+ case "tts.provider.completed":
655
+ return "Provider end";
656
+ case "tts.audio.first_received":
657
+ return "Provider audio received";
658
+ case "tts.audio.last_received":
659
+ return "Provider audio end";
660
+ case "tts.decode.started":
661
+ return "Decode start";
662
+ case "tts.decode.completed":
663
+ return "Decode end";
664
+ case "audio.output.wait.started":
665
+ return "Output queue start";
666
+ case "audio.output.wait.completed":
667
+ return "Output queue end";
668
+ case "interruption.detected":
669
+ return "Interruption detected";
670
+ case "audio.playback.started":
671
+ return "Playback start";
672
+ case "audio.playback.stopped":
673
+ return "Playback stop";
674
+ case "audio.playback.ended":
675
+ return "Playback end";
676
+ case "audio.playback.interrupted":
677
+ return "Playback interrupted";
678
+ default:
679
+ return trace.eventType;
680
+ }
681
+ }
682
+ function latencyDescription(trace) {
683
+ const payload = latencyPayload(trace);
684
+ switch (trace.eventType) {
685
+ case "call.started":
686
+ return "Call-scoped latency stream started";
687
+ case "call.ended":
688
+ return "Call-scoped latency stream ended";
689
+ case "vad.activated":
690
+ return "Raw VAD activation event";
691
+ case "vad.deactivated":
692
+ return "Raw VAD deactivation event";
693
+ case "stt.started":
694
+ return "Speech-to-text detected speech start";
695
+ case "stt.interim":
696
+ return normalizeNonEmptyString(payload.originalType) === "preflight_transcript" ? "Speech-to-text preflight transcript" : "Speech-to-text interim transcript";
697
+ case "stt.final":
698
+ case "stt.final_transcript":
699
+ return "Speech-to-text final transcript";
700
+ case "speech.created":
701
+ return "LiveKit created a speech handle";
702
+ case "reply.pending.started":
703
+ return "Reply generation was committed, but downstream generation has not started yet";
704
+ case "reply.pending.completed":
705
+ return "Reply generation moved from pending into the LLM request phase";
706
+ case "llm.connect_tcp.started":
707
+ return "httpcore started opening a new TCP connection for the LLM request";
708
+ case "llm.connect_tcp.completed":
709
+ return "httpcore finished opening a new TCP connection for the LLM request";
710
+ case "llm.connect_tcp.failed":
711
+ return "httpcore failed while opening a new TCP connection for the LLM request";
712
+ case "llm.start_tls.started":
713
+ return "httpcore started TLS negotiation for the LLM request";
714
+ case "llm.start_tls.completed":
715
+ return "httpcore finished TLS negotiation for the LLM request";
716
+ case "llm.start_tls.failed":
717
+ return "httpcore failed during TLS negotiation for the LLM request";
718
+ case "llm.wait.started":
719
+ return "LLM request is in flight and waiting for the first token";
720
+ case "llm.wait.completed":
721
+ return "The LLM wait phase ended when the first token arrived";
722
+ case "llm.stream.started":
723
+ return "LLM streaming phase started";
724
+ case "llm.stream.completed":
725
+ return "LLM streaming phase ended";
726
+ case "llm.requested":
727
+ return "AnyVan received an LLM request";
728
+ case "llm.first_token":
729
+ return "First LLM token received";
730
+ case "llm.completed":
731
+ return "LLM streaming completed";
732
+ case "tts.text.first_sent":
733
+ return "First text chunk sent to the TTS provider";
734
+ case "tts.text.completed":
735
+ return "Last non-empty text chunk observed for this TTS stream";
736
+ case "tts.provider.started":
737
+ return "Provider lifecycle started when the first non-empty TTS text chunk was sent";
738
+ case "tts.provider.completed":
739
+ return "Provider lifecycle ended when the provider stream reported completion";
740
+ case "tts.audio.first_received":
741
+ return "First audio chunk received from the TTS provider";
742
+ case "tts.audio.last_received":
743
+ return "Last audio chunk received from the TTS provider";
744
+ case "tts.decode.started":
745
+ return "First provider audio bytes were handed into the local decode path";
746
+ case "tts.decode.completed":
747
+ return "The first decoded audio frame left the local decode path";
748
+ case "audio.output.wait.started":
749
+ return "The first local audio frame was handed to the LiveKit audio output";
750
+ case "audio.output.wait.completed":
751
+ return "The audio-output wait phase ended when low-level playback actually started";
752
+ case "interruption.detected":
753
+ return "User speech overlapped active playback; this does not guarantee playback stopped";
754
+ case "audio.playback.started":
755
+ return "First played audio frame";
756
+ case "audio.playback.stopped":
757
+ return "Playback lifecycle ended on the Playback row";
758
+ case "audio.playback.ended":
759
+ return "Audio playback finished normally";
760
+ case "audio.playback.interrupted":
761
+ return "Audio playback ended because the output buffer was interrupted";
762
+ default:
763
+ return null;
764
+ }
765
+ }
766
+ function latencyText(trace) {
767
+ const payload = latencyPayload(trace);
768
+ return normalizeNonEmptyString(payload.text);
769
+ }
770
+ function isFinalSttLatencyTrace(trace) {
771
+ return trace.eventType === "stt.final" || trace.eventType === "stt.final_transcript";
772
+ }
773
+ function bubbleText(value) {
774
+ const text = normalizeNonEmptyString(value);
775
+ if (!text) return null;
776
+ return text.replace(/\s+/g, " ").trim() || null;
777
+ }
778
+ function latencyTranscriptText(trace) {
779
+ const payload = latencyPayload(trace);
780
+ const text = bubbleText(payload.text) ?? bubbleText(payload.transcript) ?? bubbleText(payload.finalTranscript) ?? bubbleText(payload.final_transcript) ?? bubbleText(payload.message);
781
+ if (text) return text;
782
+ const alternatives = payload.alternatives;
783
+ if (Array.isArray(alternatives)) {
784
+ for (const alternative of alternatives) {
785
+ if (!alternative || typeof alternative !== "object") continue;
786
+ const alternativeText = bubbleText(alternative.text);
787
+ if (alternativeText) return alternativeText;
788
+ }
789
+ }
790
+ return null;
791
+ }
792
+ function isConversationalTrace(trace) {
793
+ return trace.traceType === "CONVERSATIONAL";
794
+ }
795
+ function isUserConversationalTrace(trace) {
796
+ return isConversationalTrace(trace) && trace.role.toLowerCase() === "user" && (trace.eventName === "received-message" || trace.eventName === "llm-handler-stream-requested");
797
+ }
798
+ function isAgentConversationalTrace(trace) {
799
+ return isConversationalTrace(trace) && (trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message");
800
+ }
801
+ function conversationalTraceKey(trace) {
802
+ return normalizeNonEmptyString(trace.traceId) ?? `${trace.createdAt}:${trace.eventName}:${trace.content}`;
803
+ }
804
+ function findPreviousConversationalTrace(items, beforeIndex) {
805
+ for (let index = beforeIndex - 1; index >= 0; index -= 1) {
806
+ const candidate = items[index];
807
+ if (candidate.traceType === "CONVERSATIONAL") return candidate;
808
+ }
809
+ return null;
810
+ }
811
+ function findResponseLatencyAgentTrace(items, span) {
812
+ const startCreatedAt = ms(span.startTrace.createdAt);
813
+ const endCreatedAt = ms(span.endTrace.createdAt);
814
+ if (startCreatedAt == null) return null;
815
+ for (let index = 0; index < items.length; index += 1) {
816
+ const candidate = items[index];
817
+ if (!isAgentConversationalTrace(candidate)) continue;
818
+ if (candidate.createdAt < startCreatedAt - RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS) {
819
+ continue;
820
+ }
821
+ if (endCreatedAt != null && candidate.createdAt < endCreatedAt - RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS) {
822
+ continue;
823
+ }
824
+ const previous = findPreviousConversationalTrace(items, index);
825
+ if (!previous || !isUserConversationalTrace(previous)) continue;
826
+ return candidate;
827
+ }
828
+ return null;
829
+ }
830
+ function segmentDistanceFromTime(segment, timeMs) {
831
+ if (timeMs >= segment.start && timeMs <= segment.end) return 0;
832
+ return Math.min(Math.abs(timeMs - segment.start), Math.abs(timeMs - segment.end));
833
+ }
834
+ function findPlaybackSegmentForSpan(span, playbackSegments, usedSegmentIds) {
835
+ const candidates = playbackSegments.filter((segment) => {
836
+ if (usedSegmentIds.has(segment.id)) return false;
837
+ return segment.start >= span.end - SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS && segment.start <= span.end + SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS;
838
+ }).sort((a, b) => Math.abs(a.start - span.end) - Math.abs(b.start - span.end));
839
+ if (candidates[0]) return candidates[0];
840
+ return playbackSegments.find((segment) => !usedSegmentIds.has(segment.id) && segment.start <= span.end + SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS && segment.end >= span.end - SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS) ?? null;
841
+ }
842
+ function findPlaybackSegmentForResponse(responseTime, playbackSegments, usedSegmentIds) {
843
+ const candidates = playbackSegments.filter((segment) => {
844
+ if (usedSegmentIds.has(segment.id)) return false;
845
+ return segment.end >= responseTime - SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS && segment.start <= responseTime + SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;
846
+ }).sort((a, b) => segmentDistanceFromTime(a, responseTime) - segmentDistanceFromTime(b, responseTime));
847
+ return candidates[0] ?? null;
848
+ }
849
+ function callStartTime() {
850
+ for (const trace of traces.slice().sort(compareLatencyTraces)) {
851
+ if (trace.eventType === "call.started" && Number.isFinite(trace.atMs)) return trace.atMs;
852
+ }
853
+ return timelineOriginMs();
854
+ }
855
+ function findHumanBubbleStartTime(anchorTime, playbackSegments) {
856
+ const lastPlayback = playbackSegments.filter((segment) => segment.start <= anchorTime).sort((a, b) => b.start - a.start || b.end - a.end)[0];
857
+ if (!lastPlayback) return Math.min(callStartTime(), anchorTime);
858
+ if (lastPlayback.end <= anchorTime) return Math.min(lastPlayback.end, anchorTime);
859
+ return Math.min(lastPlayback.start, anchorTime);
860
+ }
861
+ function isTagOnlyResponse(value) {
862
+ return value.replace(/<[^>]+>/g, "").trim() === "";
863
+ }
864
+ function isWaitResponse(value) {
865
+ return /<WAIT\b[^>]*\/?\s*>/i.test(value);
866
+ }
867
+ function isMainStepResponse(trace) {
868
+ return trace.traceType === "STEP" && isMainStepName(trace.name) && normalizeNonEmptyString(trace.response) != null;
869
+ }
870
+ function responseTextWithoutTags(value) {
871
+ return value.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
872
+ }
873
+ function isEquivalentAiResponseText(a, b) {
874
+ if (a === b) return true;
875
+ const spokenA = responseTextWithoutTags(a);
876
+ const spokenB = responseTextWithoutTags(b);
877
+ return spokenA !== "" && spokenA === spokenB;
878
+ }
879
+ function responseTurnBounds(createdAt) {
880
+ let start = createdAt - SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;
881
+ let end = createdAt + SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;
882
+ for (const trace of conversationTraces) {
883
+ if (!isUserConversationalTrace(trace)) continue;
884
+ if (trace.createdAt <= createdAt) start = trace.createdAt;
885
+ else {
886
+ end = trace.createdAt;
887
+ break;
888
+ }
889
+ }
890
+ return { start, end };
891
+ }
892
+ function findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds) {
893
+ const bounds = responseTurnBounds(agentTrace.createdAt);
894
+ 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;
895
+ }
896
+ function buildAiResponses() {
897
+ const built = [];
898
+ const usedStepTraceIds = /* @__PURE__ */ new Set();
899
+ const stepResponses = conversationTraces.filter(isMainStepResponse).sort(compareConversationTraces);
900
+ const agentTraces = conversationTraces.filter(isAgentConversationalTrace).sort(compareConversationTraces);
901
+ for (const agentTrace of agentTraces) {
902
+ const stepTrace = findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds);
903
+ const stepFullText = stepTrace ? normalizeNonEmptyString(stepTrace.response) : null;
904
+ const fullText = stepFullText ?? normalizeNonEmptyString(agentTrace.content);
905
+ const text = bubbleText(fullText);
906
+ if (!text || !fullText) continue;
907
+ const duplicate = built.find((response) => response.agentTraceIds.size > 0 && Math.abs(response.createdAt - agentTrace.createdAt) <= 1e3 && isEquivalentAiResponseText(response.fullText, fullText));
908
+ if (duplicate) {
909
+ duplicate.agentTraceIds.add(conversationalTraceKey(agentTrace));
910
+ if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));
911
+ continue;
912
+ }
913
+ if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));
914
+ built.push({
915
+ id: stepTrace ? `response:step:${traceKey(stepTrace)}` : `response:agent:${conversationalTraceKey(agentTrace)}`,
916
+ text,
917
+ fullText,
918
+ createdAt: agentTrace.createdAt,
919
+ agentTraceIds: /* @__PURE__ */ new Set([conversationalTraceKey(agentTrace)]),
920
+ traceLabel: describeTrace(stepTrace ?? agentTrace)
921
+ });
922
+ }
923
+ for (const stepTrace of stepResponses) {
924
+ const stepTraceId = traceKey(stepTrace);
925
+ if (usedStepTraceIds.has(stepTraceId)) continue;
926
+ const fullText = normalizeNonEmptyString(stepTrace.response);
927
+ const text = bubbleText(fullText);
928
+ if (!text || !fullText) continue;
929
+ built.push({
930
+ id: `response:step:${stepTraceId}`,
931
+ text,
932
+ fullText,
933
+ createdAt: stepTrace.createdAt,
934
+ agentTraceIds: /* @__PURE__ */ new Set(),
935
+ traceLabel: describeTrace(stepTrace)
936
+ });
937
+ }
938
+ return built.sort((a, b) => a.createdAt - b.createdAt || a.id.localeCompare(b.id));
939
+ }
940
+ function traceKey(trace) {
941
+ return normalizeNonEmptyString(trace.traceId) ?? `${trace.seq ?? "?"}:${trace.createdAt ?? "?"}`;
942
+ }
943
+ function buildTtsTextEvents() {
944
+ return traces.slice().sort(compareLatencyTraces).flatMap((trace) => {
945
+ if (trace.eventType !== "tts.text.first_sent" && trace.eventType !== "tts.text.completed") {
946
+ return [];
947
+ }
948
+ const text = bubbleText(latencyText(trace));
949
+ return text ? [{ trace, text }] : [];
950
+ });
951
+ }
952
+ function findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTextTraceIds, previousPlaybackEnd) {
953
+ const lowerBound = previousPlaybackEnd - 250;
954
+ const upperBound = playbackSegment.start + 2e3;
955
+ const candidates = ttsTextEvents.filter(({ trace }) => {
956
+ if (usedTextTraceIds.has(traceKey(trace))) return false;
957
+ return trace.atMs >= lowerBound && trace.atMs <= upperBound;
958
+ }).sort((a, b) => Math.abs(a.trace.atMs - playbackSegment.start) - Math.abs(b.trace.atMs - playbackSegment.start));
959
+ return candidates[0] ?? null;
960
+ }
961
+ function buildPlaybackSpeechMatches(inputSegments, responses) {
962
+ const bySegmentId = /* @__PURE__ */ new Map();
963
+ const playbackSegments = inputSegments.filter((segment) => segment.row === "Playback" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);
964
+ const usedAgentPlaybackSegmentIds = /* @__PURE__ */ new Set();
965
+ const usedResponseIds = /* @__PURE__ */ new Set();
966
+ const usedTtsTextTraceIds = /* @__PURE__ */ new Set();
967
+ const ttsTextEvents = buildTtsTextEvents();
968
+ let previousPlaybackEnd = callStartTime();
969
+ for (const playbackSegment of playbackSegments) {
970
+ const ttsText = findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTtsTextTraceIds, previousPlaybackEnd);
971
+ previousPlaybackEnd = Math.max(previousPlaybackEnd, playbackSegment.end);
972
+ if (!ttsText) continue;
973
+ usedTtsTextTraceIds.add(traceKey(ttsText.trace));
974
+ bySegmentId.set(playbackSegment.id, {
975
+ text: ttsText.text,
976
+ fullText: ttsText.text,
977
+ traceLabel: describeTrace(ttsText.trace)
978
+ });
979
+ }
980
+ for (const span of buildResponseLatencySpans(traces)) {
981
+ if (findResponseLatencyUserTurn(conversationTraces, span) == null) continue;
982
+ const agentTrace = findResponseLatencyAgentTrace(conversationTraces, span);
983
+ if (!agentTrace) continue;
984
+ const response = responses.find((candidate) => candidate.agentTraceIds.has(conversationalTraceKey(agentTrace)));
985
+ if (!response) continue;
986
+ if (usedResponseIds.has(response.id)) continue;
987
+ if (isTagOnlyResponse(response.fullText)) continue;
988
+ const playbackSegment = findPlaybackSegmentForSpan(span, playbackSegments, usedAgentPlaybackSegmentIds);
989
+ if (!playbackSegment) continue;
990
+ usedAgentPlaybackSegmentIds.add(playbackSegment.id);
991
+ usedResponseIds.add(response.id);
992
+ bySegmentId.set(playbackSegment.id, {
993
+ text: response.text,
994
+ fullText: response.fullText,
995
+ traceLabel: response.traceLabel
996
+ });
997
+ }
998
+ for (const response of responses) {
999
+ if (usedResponseIds.has(response.id)) continue;
1000
+ if (isTagOnlyResponse(response.fullText)) continue;
1001
+ const playbackSegment = findPlaybackSegmentForResponse(response.createdAt, playbackSegments, usedAgentPlaybackSegmentIds);
1002
+ if (!playbackSegment) continue;
1003
+ usedAgentPlaybackSegmentIds.add(playbackSegment.id);
1004
+ usedResponseIds.add(response.id);
1005
+ bySegmentId.set(playbackSegment.id, {
1006
+ text: response.text,
1007
+ fullText: response.fullText,
1008
+ traceLabel: response.traceLabel
1009
+ });
1010
+ }
1011
+ return { bySegmentId, responseIds: usedResponseIds };
1012
+ }
1013
+ function buildStandaloneWaitSegments(responses, usedResponseIds) {
1014
+ return responses.flatMap((response) => {
1015
+ if (usedResponseIds.has(response.id) || !isWaitResponse(response.fullText)) return [];
1016
+ const end = findWaitResponseEnd(response.createdAt);
1017
+ return [
1018
+ {
1019
+ ...makeSegment({
1020
+ id: `playback:wait:${response.id}`,
1021
+ row: "Playback",
1022
+ start: response.createdAt,
1023
+ end,
1024
+ colorKey: "playback",
1025
+ label: "WAIT response",
1026
+ traceLabel: response.traceLabel
1027
+ }),
1028
+ speechText: response.text,
1029
+ speechFullText: response.fullText,
1030
+ speechTraceLabel: response.traceLabel
1031
+ }
1032
+ ];
1033
+ });
1034
+ }
1035
+ function findWaitResponseEnd(start) {
1036
+ 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];
1037
+ return nextActivity ? nextActivity.atMs : start + 1;
1038
+ }
1039
+ function buildSpeechBubbleCandidates() {
1040
+ const built = [];
1041
+ const playbackSegments = callSegments().filter((segment) => segment.row === "Playback" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);
1042
+ traces.slice().sort(compareLatencyTraces).forEach((trace) => {
1043
+ if (!isFinalSttLatencyTrace(trace)) return;
1044
+ const text = latencyTranscriptText(trace);
1045
+ if (!text) return;
1046
+ built.push({
1047
+ id: `bubble:human:${trace.traceId ?? trace.seq}`,
1048
+ role: "human",
1049
+ text,
1050
+ fullText: text,
1051
+ anchorTime: trace.atMs,
1052
+ minStartTime: findHumanBubbleStartTime(trace.atMs, playbackSegments),
1053
+ anchorRow: "STT",
1054
+ traceLabel: describeTrace(trace)
1055
+ });
1056
+ });
1057
+ return built.sort((a, b) => a.anchorTime - b.anchorTime || a.role.localeCompare(b.role) || a.id.localeCompare(b.id));
1058
+ }
1059
+ function timelineRowAnchorPx(rowLabel) {
1060
+ const rowIndex = timelineRows().findIndex((row) => row.label === rowLabel);
1061
+ if (rowIndex === -1) return TIMELINE_RULER_HEIGHT_PX;
1062
+ return TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX) + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);
1063
+ }
1064
+ function speechBubbleRoleLevelCount(bubbles, role) {
1065
+ let maxLevel = -1;
1066
+ for (const bubble of bubbles) {
1067
+ if (bubble.role !== role) continue;
1068
+ maxLevel = Math.max(maxLevel, bubble.level);
1069
+ }
1070
+ return maxLevel + 1;
1071
+ }
1072
+ function speechBubbleLaneHeightPx(levelCount) {
1073
+ return Math.max(0, levelCount) * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;
1074
+ }
1075
+ function compactSpeechBubbleLayouts(bubbles) {
1076
+ const bubbleAreaTopPx = speechBubbleAreaTopPx();
1077
+ return bubbles.map((bubble) => {
1078
+ const topPx = bubble.level * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;
1079
+ const globalTopPx = bubbleAreaTopPx + topPx;
1080
+ const rowAnchorPx = timelineRowAnchorPx(bubble.anchorRow);
1081
+ return {
1082
+ ...bubble,
1083
+ topPx,
1084
+ lineTopPx: rowAnchorPx,
1085
+ lineHeightPx: Math.max(1, globalTopPx - rowAnchorPx)
1086
+ };
1087
+ });
1088
+ }
1089
+ function buildSpeechBubbleLayoutForRole(role, candidates) {
1090
+ return [];
1091
+ }
1092
+ function buildSpeechBubbleBaseLayouts() {
1093
+ buildSpeechBubbleCandidates();
1094
+ return buildSpeechBubbleLayoutForRole();
1095
+ }
1096
+ function speechBubbleStyle(bubble) {
1097
+ 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;`;
1098
+ }
1099
+ function speechBubbleLineStyle(bubble) {
1100
+ return `left:${bubble.anchorPercent}%;top:${Math.round(bubble.lineTopPx)}px;height:${Math.round(bubble.lineHeightPx)}px;`;
1101
+ }
1102
+ function speechBubbleClass(bubble) {
1103
+ 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";
1104
+ if (bubble.role === "agent") {
1105
+ return `${base} bg-rc-green-700`;
1106
+ }
1107
+ return `${base} bg-rc-gray-700`;
1108
+ }
1109
+ function makeSegment(input) {
1110
+ return {
1111
+ id: input.id,
1112
+ row: input.row,
1113
+ start: input.start,
1114
+ end: input.end,
1115
+ durationMs: Math.max(0, input.end - input.start),
1116
+ colorKey: input.colorKey,
1117
+ label: input.label,
1118
+ description: input.description ?? null,
1119
+ explain: input.explain ?? null,
1120
+ text: input.text ?? null,
1121
+ speechText: null,
1122
+ speechFullText: null,
1123
+ speechTraceLabel: null,
1124
+ traceLabel: input.traceLabel,
1125
+ eventMarker: input.eventMarker ?? null
1126
+ };
1127
+ }
1128
+ function compareLatencyTraces(a, b) {
1129
+ return a.seq - b.seq || a.atMs - b.atMs || (a.createdAt ?? 0) - (b.createdAt ?? 0) || String(a.traceId ?? "").localeCompare(String(b.traceId ?? ""));
1130
+ }
1131
+ function findNextLatencyEvent(events, startIndex, match, stop) {
1132
+ for (let index = startIndex + 1; index < events.length; index += 1) {
1133
+ const next = events[index];
1134
+ if (stop(next)) return null;
1135
+ if (match(next)) return next;
1136
+ }
1137
+ return null;
1138
+ }
1139
+ function buildResponseLatencySegments(events) {
1140
+ return buildResponseLatencySpans(events).filter((span) => findResponseLatencyUserTurn(conversationTraces, span) != null).map((span) => makeSegment({
1141
+ id: `derived:${span.id}`,
1142
+ row: "Response Latency",
1143
+ start: span.start,
1144
+ end: span.end,
1145
+ colorKey: span.isHigh ? "response.latency.high" : "response.latency.ok",
1146
+ label: "Final STT -> speech start",
1147
+ description: span.speechCreatedTrace ? "Final STT transcript -> first audio for the next uncancelled LiveKit speech" : "Final STT transcript -> next audio playback start",
1148
+ explain: span.isHigh ? `High latency (>${RESPONSE_LATENCY_THRESHOLD_MS}ms)` : "OK",
1149
+ text: span.text,
1150
+ traceLabel: span.speechCreatedTrace ? `${describeTrace(span.startTrace)} -> ${describeTrace(span.speechCreatedTrace)} -> ${describeTrace(span.endTrace)}` : `${describeTrace(span.startTrace)} -> ${describeTrace(span.endTrace)}`
1151
+ }));
1152
+ }
1153
+ function buildDerivedSegments(events) {
1154
+ const built = buildResponseLatencySegments(events);
1155
+ events.forEach((trace, index) => {
1156
+ const rule = SPAN_RULE_BY_START.get(trace.eventType);
1157
+ if (!rule) return;
1158
+ const next = findNextLatencyEvent(events, index, (candidate) => candidate.eventType === rule.endEventType, (candidate) => candidate.eventType === rule.startEventType);
1159
+ if (!next || next.atMs < trace.atMs) return;
1160
+ built.push(makeSegment({
1161
+ id: `derived:${rule.row.toLowerCase().replaceAll(" ", "_")}:${trace.seq}:${next.seq}`,
1162
+ row: rule.row,
1163
+ start: trace.atMs,
1164
+ end: next.atMs,
1165
+ colorKey: rule.colorKey,
1166
+ label: rule.label,
1167
+ description: rule.description,
1168
+ traceLabel: describeTrace(trace)
1169
+ }));
1170
+ });
1171
+ return built;
1172
+ }
1173
+ function buildCallLatencySegments(input) {
1174
+ const events = input.slice().filter((trace) => typeof trace.atMs === "number" && Number.isFinite(trace.atMs) && typeof trace.seq === "number" && Number.isFinite(trace.seq)).sort(compareLatencyTraces);
1175
+ const pointSegments = events.map((trace, index) => makeSegment({
1176
+ id: `point:${trace.traceId ?? trace.seq}:${index}`,
1177
+ row: latencyRow(trace.eventType),
1178
+ start: trace.atMs,
1179
+ end: trace.atMs,
1180
+ colorKey: latencyColorKey(trace.eventType),
1181
+ label: latencyLabel(trace),
1182
+ description: latencyDescription(trace),
1183
+ text: latencyText(trace),
1184
+ traceLabel: describeTrace(trace),
1185
+ eventMarker: latencyEventMarker(trace.eventType)
1186
+ }));
1187
+ const derivedSegments = buildDerivedSegments(events);
1188
+ 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));
1189
+ }
1190
+ function buildRecordingResponse(raw) {
1191
+ const next = raw && typeof raw === "object" ? raw : {};
1192
+ const audioUrl = typeof next.audioUrl === "string" && next.audioUrl.trim() ? next.audioUrl : null;
1193
+ return {
1194
+ exists: next.exists === true && audioUrl != null,
1195
+ audioUrl,
1196
+ fileName: typeof next.fileName === "string" ? next.fileName : null,
1197
+ mimeType: typeof next.mimeType === "string" ? next.mimeType : null,
1198
+ size: typeof next.size === "number" && Number.isFinite(next.size) ? next.size : null,
1199
+ uploadedAt: typeof next.uploadedAt === "string" ? next.uploadedAt : null,
1200
+ alignmentOffsetMs: typeof next.alignmentOffsetMs === "number" && Number.isFinite(next.alignmentOffsetMs) ? next.alignmentOffsetMs : 0
1201
+ };
1202
+ }
1203
+ function getResponseError(payload, fallback) {
1204
+ const next = payload && typeof payload === "object" ? payload : {};
1205
+ if (typeof next.error === "string" && next.error.trim()) return next.error;
1206
+ if (typeof next.message === "string" && next.message.trim()) return next.message;
1207
+ return fallback;
1208
+ }
1209
+ async function readResponsePayload(response) {
1210
+ const contentType = response.headers.get("content-type") ?? "";
1211
+ if (contentType.includes("application/json")) {
1212
+ return response.json().catch(() => ({}));
1213
+ }
1214
+ const text = (await response.text().catch(() => "")).trim();
1215
+ if (!text) return {};
1216
+ if (contentType.includes("text/html")) {
1217
+ const titleMatch = text.match(/<title>([^<]+)<\/title>/i);
1218
+ const headingMatch = text.match(/<h1[^>]*>([^<]+)<\/h1>/i);
1219
+ return {
1220
+ message: titleMatch?.[1]?.trim() || headingMatch?.[1]?.trim() || `${response.status} ${response.statusText}`.trim()
1221
+ };
1222
+ }
1223
+ return { message: text };
1224
+ }
1225
+ function isPlaybackTraceBubble(segment) {
1226
+ return segment.row === "Playback" && !segment.eventMarker && segment.durationMs > 0;
1227
+ }
1228
+ function segmentDisplayText(segment) {
1229
+ if (isPlaybackTraceBubble(segment)) return segment.speechText;
1230
+ return null;
1231
+ }
1232
+ function segmentStyle(segment) {
1233
+ if (viewportStartMs == null || viewportEndMs == null) return null;
1234
+ const duration = viewportEndMs - viewportStartMs;
1235
+ if (!Number.isFinite(duration) || duration <= 0) return null;
1236
+ const fill = COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray;
1237
+ const border = tintHex(fill, -0.25);
1238
+ if (segment.end === segment.start) {
1239
+ if (segment.start < viewportStartMs || segment.start > viewportEndMs) return null;
1240
+ const pointPercent = clamp((segment.start - viewportStartMs) / duration * 100, 0, 100);
1241
+ if (segment.eventMarker === "start") {
1242
+ return `left:${pointPercent}%;width:7px;background:${fill};border-color:${border};clip-path:polygon(0 0,100% 50%,0 100%);`;
1243
+ }
1244
+ if (segment.eventMarker === "end") {
1245
+ return `left:calc(${pointPercent}% - 7px);width:7px;background:${fill};border-color:${border};clip-path:polygon(100% 0,0 50%,100% 100%);`;
1246
+ }
1247
+ return `left:calc(${pointPercent}% - 2px);width:4px;background:${fill};border-color:${border};`;
1248
+ }
1249
+ const visibleStart = Math.max(segment.start, viewportStartMs);
1250
+ const visibleEnd = Math.min(segment.end, viewportEndMs);
1251
+ if (visibleEnd < visibleStart) return null;
1252
+ const leftPercent = (visibleStart - viewportStartMs) / duration * 100;
1253
+ const widthPercent = (visibleEnd - visibleStart) / duration * 100;
1254
+ if (isPlaybackTraceBubble(segment)) {
1255
+ return `left:${leftPercent}%;width:max(${widthPercent}%,2px);`;
1256
+ }
1257
+ return `left:${leftPercent}%;width:max(${widthPercent}%,2px);background:${fill};border-color:${border};`;
1258
+ }
1259
+ function segmentClass(segment) {
1260
+ if (segment.eventMarker) {
1261
+ return "absolute inset-y-0 shadow-[0_0_0_1px_rgba(0,0,0,0.28)]";
1262
+ }
1263
+ if (isPlaybackTraceBubble(segment)) {
1264
+ 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";
1265
+ }
1266
+ return "absolute inset-y-0 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]";
1267
+ }
1268
+ function guideLineStyle(guide) {
1269
+ return `left:${guide.leftPercent}%;top:${guide.topPx}px;height:${guide.heightPx}px;border-color:${guide.color};opacity:${guide.opacity};`;
1270
+ }
1271
+ function timelineOriginLineStyle(originLine) {
1272
+ return `left:${originLine.leftPercent}%;top:${originLine.topPx}px;height:${originLine.heightPx}px;`;
1273
+ }
1274
+ function tickLabelClass(tick) {
1275
+ const base = "absolute top-1 whitespace-nowrap text-[11px] text-rc-gray-400";
1276
+ if (tick.leftPercent <= 0.1) return base;
1277
+ if (tick.leftPercent >= 99.9) return `${base} -translate-x-full`;
1278
+ return `${base} -translate-x-1/2`;
1279
+ }
1280
+ function buildGuideLines(rows) {
1281
+ if (!recording.exists || viewportStartMs == null || viewportEndMs == null) return [];
1282
+ const rangeStartMs = viewportStartMs;
1283
+ const rangeEndMs = viewportEndMs;
1284
+ const durationMs = rangeEndMs - rangeStartMs;
1285
+ if (!Number.isFinite(durationMs) || durationMs <= 0) return [];
1286
+ const waveformBottomPx = timelinePlotHeightPx();
1287
+ const seen = /* @__PURE__ */ new Set();
1288
+ const built = [];
1289
+ rows.forEach((row, rowIndex) => {
1290
+ if (!GUIDE_ROW_LABELS.has(row.label)) return;
1291
+ const rowTopPx = TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX);
1292
+ const rowAnchorPx = rowTopPx + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);
1293
+ row.segments.forEach((segment) => {
1294
+ if (segment.id.startsWith("playback:wait:")) return;
1295
+ const color = tintHex(COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray, 0.15);
1296
+ const times = segment.end === segment.start ? segment.start >= rangeStartMs && segment.start <= rangeEndMs ? [segment.start] : [] : (() => {
1297
+ const visibleStart = Math.max(segment.start, rangeStartMs);
1298
+ const visibleEnd = Math.min(segment.end, rangeEndMs);
1299
+ return visibleEnd < visibleStart ? [] : [visibleStart, visibleEnd];
1300
+ })();
1301
+ for (const timeMs of times) {
1302
+ const roundedTime = Math.round(timeMs);
1303
+ const key = `${row.label}:${roundedTime}`;
1304
+ if (seen.has(key)) continue;
1305
+ seen.add(key);
1306
+ const leftPercent = clamp((timeMs - rangeStartMs) / durationMs * 100, 0, 100);
1307
+ built.push({
1308
+ id: `${segment.id}:${roundedTime}`,
1309
+ leftPercent,
1310
+ topPx: rowAnchorPx,
1311
+ heightPx: Math.max(1, waveformBottomPx - rowAnchorPx),
1312
+ color,
1313
+ opacity: row.label === "VAD" ? 0.62 : 0.48
1314
+ });
1315
+ }
1316
+ });
1317
+ });
1318
+ return built;
1319
+ }
1320
+ function chooseTickStep(durationMs) {
1321
+ const approx = durationMs / 7;
1322
+ const magnitude = 10 ** Math.floor(Math.log10(Math.max(1, approx)));
1323
+ const normalized = approx / magnitude;
1324
+ if (normalized <= 1) return 1 * magnitude;
1325
+ if (normalized <= 2) return 2 * magnitude;
1326
+ if (normalized <= 5) return 5 * magnitude;
1327
+ return 10 * magnitude;
1328
+ }
1329
+ function buildTicks(startMs, endMs, originMs) {
1330
+ const durationMs = endMs - startMs;
1331
+ if (!Number.isFinite(durationMs) || durationMs <= 0) return [];
1332
+ const stepMs = chooseTickStep(durationMs);
1333
+ const firstTick = Math.ceil((startMs - originMs) / stepMs) * stepMs + originMs;
1334
+ const ticks = [];
1335
+ for (let tick = firstTick; tick <= endMs; tick += stepMs) {
1336
+ const leftPercent = (tick - startMs) / durationMs * 100;
1337
+ ticks.push({
1338
+ time: tick,
1339
+ leftPercent,
1340
+ label: formatRelativeTime(tick - originMs)
1341
+ });
1342
+ }
1343
+ return ticks;
1344
+ }
1345
+ function createAudioContext() {
1346
+ const next = window.AudioContext ?? window.webkitAudioContext;
1347
+ if (!next) {
1348
+ throw new Error("Web Audio is not available in this browser");
1349
+ }
1350
+ return new next();
1351
+ }
1352
+ function stopPlaybackTicker() {
1353
+ if (!playbackFrame) return;
1354
+ window.cancelAnimationFrame(playbackFrame);
1355
+ playbackFrame = 0;
1356
+ }
1357
+ async function closePlaybackAudioContext() {
1358
+ const context = playbackAudioContext;
1359
+ playbackAudioContext = null;
1360
+ if (!context) return;
1361
+ await context.close().catch(() => {
1362
+ });
1363
+ }
1364
+ async function ensurePlaybackAudioContext() {
1365
+ if (!playbackAudioContext || playbackAudioContext.state === "closed") {
1366
+ playbackAudioContext = createAudioContext();
1367
+ }
1368
+ if (playbackAudioContext.state === "suspended") {
1369
+ await playbackAudioContext.resume();
1370
+ }
1371
+ return playbackAudioContext;
1372
+ }
1373
+ function getPlaybackPositionMs() {
1374
+ const durationMs = getRecordingDurationMs();
1375
+ if (playbackPlaying && playbackAudioContext && playbackStartedAtMs != null && playbackStartedAtContextTime != null) {
1376
+ const elapsedMs = (playbackAudioContext.currentTime - playbackStartedAtContextTime) * 1e3;
1377
+ const currentMs = playbackStartedAtMs + Math.max(0, elapsedMs);
1378
+ return durationMs > 0 ? clamp(currentMs, 0, durationMs) : Math.max(0, currentMs);
1379
+ }
1380
+ return durationMs > 0 ? clamp(playbackPositionMs, 0, durationMs) : Math.max(0, playbackPositionMs);
1381
+ }
1382
+ function stopPlayback(preservePosition = true) {
1383
+ if (preservePosition) {
1384
+ playbackPositionMs = getPlaybackPositionMs();
1385
+ }
1386
+ const source = playbackSourceNode;
1387
+ playbackSourceNode = null;
1388
+ playbackStartedAtMs = null;
1389
+ playbackStartedAtContextTime = null;
1390
+ playbackPlaying = false;
1391
+ stopPlaybackTicker();
1392
+ if (!source) return;
1393
+ source.onended = null;
1394
+ try {
1395
+ source.stop();
1396
+ } catch {
1397
+ }
1398
+ source.disconnect();
1399
+ }
1400
+ function startPlaybackTicker() {
1401
+ stopPlaybackTicker();
1402
+ const tick = () => {
1403
+ if (!playbackPlaying) {
1404
+ playbackFrame = 0;
1405
+ return;
1406
+ }
1407
+ playbackPositionMs = getPlaybackPositionMs();
1408
+ playbackFrame = window.requestAnimationFrame(tick);
1409
+ };
1410
+ playbackFrame = window.requestAnimationFrame(tick);
1411
+ }
1412
+ function getRecordingDurationMs() {
1413
+ if (waveform && Number.isFinite(waveform.durationMs)) {
1414
+ return Math.max(0, waveform.durationMs);
1415
+ }
1416
+ if (playbackAudioBuffer && Number.isFinite(playbackAudioBuffer.duration)) {
1417
+ return Math.max(0, playbackAudioBuffer.duration * 1e3);
1418
+ }
1419
+ return 0;
1420
+ }
1421
+ async function togglePlayback() {
1422
+ if (!recording.exists || !recording.audioUrl) return;
1423
+ playbackError = null;
1424
+ if (playbackPlaying) {
1425
+ stopPlayback(true);
1426
+ return;
1427
+ }
1428
+ await startPlaybackAtMs(playbackPositionMs);
1429
+ }
1430
+ async function startPlaybackAtMs(nextMs) {
1431
+ const buffer = playbackAudioBuffer;
1432
+ if (!buffer) {
1433
+ playbackError = "Failed to decode recording for playback";
1434
+ return;
1435
+ }
1436
+ const durationMs = Math.max(0, buffer.duration * 1e3);
1437
+ const startMs = durationMs > 0 ? nextMs >= durationMs ? 0 : clamp(nextMs, 0, durationMs) : Math.max(0, nextMs);
1438
+ stopPlayback(false);
1439
+ playbackPositionMs = startMs;
1440
+ try {
1441
+ const context = await ensurePlaybackAudioContext();
1442
+ const source = context.createBufferSource();
1443
+ source.buffer = buffer;
1444
+ source.connect(context.destination);
1445
+ source.onended = () => {
1446
+ if (playbackSourceNode !== source) return;
1447
+ playbackSourceNode = null;
1448
+ playbackStartedAtMs = null;
1449
+ playbackStartedAtContextTime = null;
1450
+ playbackPlaying = false;
1451
+ playbackPositionMs = durationMs;
1452
+ stopPlaybackTicker();
1453
+ };
1454
+ playbackSourceNode = source;
1455
+ playbackStartedAtMs = startMs;
1456
+ playbackStartedAtContextTime = context.currentTime;
1457
+ playbackPlaying = true;
1458
+ playbackError = null;
1459
+ startPlaybackTicker();
1460
+ source.start(0, startMs / 1e3);
1461
+ } catch (reason) {
1462
+ stopPlayback(false);
1463
+ playbackPlaying = false;
1464
+ playbackError = reason instanceof Error ? reason.message : "Failed to play recording";
1465
+ }
1466
+ }
1467
+ function compareConversationTraces(a, b) {
1468
+ return a.createdAt - b.createdAt || String(a.traceId ?? "").localeCompare(String(b.traceId ?? ""));
1469
+ }
1470
+ function fitViewport(markDirty = true) {
1471
+ const extent = conversationTraceExtent() ?? contentExtent();
1472
+ if (!extent) return;
1473
+ const originMs = timelineOriginMs();
1474
+ viewportStartMs = originMs;
1475
+ viewportEndMs = Math.max(originMs + 1e3, extent.max);
1476
+ viewDirty = markDirty;
1477
+ }
1478
+ function clampViewport(startMs, endMs) {
1479
+ const extent = contentExtent();
1480
+ if (!extent) return { startMs, endMs };
1481
+ const durationMs = endMs - startMs;
1482
+ if (durationMs <= 0) return { startMs, endMs };
1483
+ const marginMs = Math.max(1e3, durationMs * 0.25);
1484
+ const minAllowed = extent.min - marginMs;
1485
+ const maxAllowed = extent.max + marginMs;
1486
+ if (durationMs >= maxAllowed - minAllowed) {
1487
+ return { startMs: minAllowed, endMs: maxAllowed };
1488
+ }
1489
+ if (startMs < minAllowed) {
1490
+ endMs += minAllowed - startMs;
1491
+ startMs = minAllowed;
1492
+ }
1493
+ if (endMs > maxAllowed) {
1494
+ startMs -= endMs - maxAllowed;
1495
+ endMs = maxAllowed;
1496
+ }
1497
+ return { startMs, endMs };
1498
+ }
1499
+ function setViewport(startMs, endMs) {
1500
+ if (!Number.isFinite(startMs) || !Number.isFinite(endMs) || endMs <= startMs) return;
1501
+ const next = clampViewport(startMs, endMs);
1502
+ viewportStartMs = next.startMs;
1503
+ viewportEndMs = next.endMs;
1504
+ }
1505
+ function zoomViewport(factor, focusRatio = 0.5) {
1506
+ if (viewportStartMs == null || viewportEndMs == null) return;
1507
+ const currentDuration = viewportEndMs - viewportStartMs;
1508
+ if (!Number.isFinite(currentDuration) || currentDuration <= 0) return;
1509
+ const extent = contentExtent();
1510
+ const contentDuration = extent ? extent.max - extent.min : currentDuration;
1511
+ const minDuration = Math.min(100, currentDuration);
1512
+ const maxDuration = Math.max(contentDuration + Math.max(2e3, contentDuration * 0.1), 5e3);
1513
+ const nextDuration = clamp(currentDuration * factor, minDuration, maxDuration);
1514
+ const nextFocusRatio = clamp(focusRatio, 0, 1);
1515
+ const focusMs = viewportStartMs + currentDuration * nextFocusRatio;
1516
+ const nextStartMs = focusMs - nextDuration * nextFocusRatio;
1517
+ viewDirty = true;
1518
+ setViewport(nextStartMs, nextStartMs + nextDuration);
1519
+ }
1520
+ function setLocalAlignmentOffset(nextOffsetMs) {
1521
+ recording = { ...recording, alignmentOffsetMs: Math.round(nextOffsetMs) };
1522
+ }
1523
+ async function persistAlignmentOffset() {
1524
+ if (!recording.exists || !recordingApiUrl()) return;
1525
+ alignmentSaving = true;
1526
+ alignmentError = null;
1527
+ try {
1528
+ const response = await fetch(recordingApiUrl(), {
1529
+ method: "PATCH",
1530
+ headers: {
1531
+ accept: "application/json",
1532
+ "content-type": "application/json"
1533
+ },
1534
+ body: JSON.stringify({ alignmentOffsetMs: recording.alignmentOffsetMs })
1535
+ });
1536
+ const payload = await readResponsePayload(response);
1537
+ if (!response.ok) {
1538
+ throw new Error(getResponseError(payload, "Failed to save alignment offset"));
1539
+ }
1540
+ recording = buildRecordingResponse(payload);
1541
+ } catch (reason) {
1542
+ alignmentError = reason instanceof Error ? reason.message : String(reason);
1543
+ } finally {
1544
+ alignmentSaving = false;
1545
+ }
1546
+ }
1547
+ async function resetAlignment() {
1548
+ if (!recording.exists) return;
1549
+ viewDirty = true;
1550
+ setLocalAlignmentOffset(0);
1551
+ await persistAlignmentOffset();
1552
+ }
1553
+ $$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 `);
1554
+ if (conversationId()) {
1555
+ $$renderer2.push("<!--[0-->");
1556
+ $$renderer2.push(`<span class="text-rc-gray-100">for conversation Id:</span> <span class="text-rc-green-200">${escape_html(conversationId())}</span>`);
1557
+ } else {
1558
+ $$renderer2.push("<!--[-1-->");
1559
+ }
1560
+ $$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> `);
1561
+ if (recording.exists && playbackAbsoluteMs() != null) {
1562
+ $$renderer2.push("<!--[0-->");
1563
+ $$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>`);
1564
+ } else {
1565
+ $$renderer2.push("<!--[-1-->");
1566
+ }
1567
+ $$renderer2.push(`<!--]--> `);
1568
+ if (viewportStartMs != null && viewportEndMs != null) {
1569
+ $$renderer2.push("<!--[0-->");
1570
+ $$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>`);
1571
+ } else {
1572
+ $$renderer2.push("<!--[-1-->");
1573
+ }
1574
+ $$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"/> `);
1575
+ Button($$renderer2, {
1576
+ variant: "secondary",
1577
+ size: "small",
1578
+ disabled: uploadInFlight,
1579
+ onclick: () => fileInputEl?.click(),
1580
+ children: ($$renderer3) => {
1581
+ $$renderer3.push(`<!---->${escape_html(recording.exists ? "Replace WAV" : "Upload WAV")}`);
1582
+ },
1583
+ $$slots: { default: true }
1584
+ });
1585
+ $$renderer2.push(`<!----> `);
1586
+ Button($$renderer2, {
1587
+ variant: "secondary",
1588
+ size: "small",
1589
+ disabled: !recording.exists,
1590
+ onclick: () => void togglePlayback(),
1591
+ children: ($$renderer3) => {
1592
+ $$renderer3.push(`<!---->${escape_html(playbackPlaying ? "Pause" : "Play")}`);
1593
+ },
1594
+ $$slots: { default: true }
1595
+ });
1596
+ $$renderer2.push(`<!----> `);
1597
+ Button($$renderer2, {
1598
+ variant: "secondary",
1599
+ size: "small",
1600
+ disabled: viewportDurationMs() == null,
1601
+ onclick: () => zoomViewport(0.8),
1602
+ children: ($$renderer3) => {
1603
+ $$renderer3.push(`<!---->Zoom in`);
1604
+ },
1605
+ $$slots: { default: true }
1606
+ });
1607
+ $$renderer2.push(`<!----> `);
1608
+ Button($$renderer2, {
1609
+ variant: "secondary",
1610
+ size: "small",
1611
+ disabled: viewportDurationMs() == null,
1612
+ onclick: () => zoomViewport(1.25),
1613
+ children: ($$renderer3) => {
1614
+ $$renderer3.push(`<!---->Zoom out`);
1615
+ },
1616
+ $$slots: { default: true }
1617
+ });
1618
+ $$renderer2.push(`<!----> `);
1619
+ Button($$renderer2, {
1620
+ variant: "secondary",
1621
+ size: "small",
1622
+ disabled: !(conversationTraceExtent() ?? contentExtent()),
1623
+ onclick: () => fitViewport(true),
1624
+ children: ($$renderer3) => {
1625
+ $$renderer3.push(`<!---->Fit call`);
1626
+ },
1627
+ $$slots: { default: true }
1628
+ });
1629
+ $$renderer2.push(`<!----> `);
1630
+ Button($$renderer2, {
1631
+ variant: "secondary",
1632
+ size: "small",
1633
+ disabled: !recording.exists || alignmentSaving,
1634
+ onclick: resetAlignment,
1635
+ children: ($$renderer3) => {
1636
+ $$renderer3.push(`<!---->Reset alignment`);
1637
+ },
1638
+ $$slots: { default: true }
1639
+ });
1640
+ $$renderer2.push(`<!----> `);
1641
+ Button($$renderer2, {
1642
+ variant: "secondary",
1643
+ size: "small",
1644
+ disabled: !traces.length,
1645
+ onclick: copyLatencyStream,
1646
+ children: ($$renderer3) => {
1647
+ $$renderer3.push(`<!---->${escape_html(copyLatencyState === "ok" ? "Copied" : copyLatencyState === "error" ? "Copy failed" : "Copy latency stream")}`);
1648
+ },
1649
+ $$slots: { default: true }
1650
+ });
1651
+ $$renderer2.push(`<!----></div></div> `);
1652
+ {
1653
+ $$renderer2.push("<!--[-1-->");
1654
+ }
1655
+ $$renderer2.push(`<!--]--> `);
1656
+ if (error) {
1657
+ $$renderer2.push("<!--[0-->");
1658
+ $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Failed to load latency traces: ${escape_html(error)}</div>`);
1659
+ } else {
1660
+ $$renderer2.push("<!--[-1-->");
1661
+ }
1662
+ $$renderer2.push(`<!--]--> `);
1663
+ if (recordingError) {
1664
+ $$renderer2.push("<!--[0-->");
1665
+ $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Recording error: ${escape_html(recordingError)}</div>`);
1666
+ } else {
1667
+ $$renderer2.push("<!--[-1-->");
1668
+ }
1669
+ $$renderer2.push(`<!--]--> `);
1670
+ if (alignmentError) {
1671
+ $$renderer2.push("<!--[0-->");
1672
+ $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Alignment error: ${escape_html(alignmentError)}</div>`);
1673
+ } else {
1674
+ $$renderer2.push("<!--[-1-->");
1675
+ }
1676
+ $$renderer2.push(`<!--]--> `);
1677
+ if (playbackError) {
1678
+ $$renderer2.push("<!--[0-->");
1679
+ $$renderer2.push(`<div class="mt-2 text-sm text-red-300">Playback error: ${escape_html(playbackError)}</div>`);
1680
+ } else {
1681
+ $$renderer2.push("<!--[-1-->");
1682
+ }
1683
+ $$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">`);
1684
+ if (!callSegments().length) {
1685
+ $$renderer2.push("<!--[1-->");
1686
+ $$renderer2.push(`<div class="text-sm text-rc-gray-300">No latency events were found on this call.</div>`);
1687
+ } else if (viewportStartMs == null || viewportEndMs == null) {
1688
+ $$renderer2.push("<!--[2-->");
1689
+ $$renderer2.push(`<div class="text-sm text-rc-gray-300">Preparing timeline…</div>`);
1690
+ } else {
1691
+ $$renderer2.push("<!--[-1-->");
1692
+ $$renderer2.push(`<div class="grid grid-cols-[140px_minmax(0,1fr)] gap-x-3"><div class="flex flex-col"><div class="h-8"></div> <!--[-->`);
1693
+ const each_array = ensure_array_like(timelineRows());
1694
+ for (let rowIndex = 0, $$length = each_array.length; rowIndex < $$length; rowIndex++) {
1695
+ let row = each_array[rowIndex];
1696
+ $$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>`);
1697
+ }
1698
+ $$renderer2.push(`<!--]--> <div class="flex items-center text-xs text-rc-gray-300"${attr_style(`height:${humanSpeechBubbleLaneHeightPx()}px;margin-top:${traceRowsToBubbleGapPx()}px;`)}>Human</div> `);
1699
+ if (waveformRowVisible()) {
1700
+ $$renderer2.push("<!--[0-->");
1701
+ $$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>`);
1702
+ } else {
1703
+ $$renderer2.push("<!--[-1-->");
1704
+ }
1705
+ $$renderer2.push(`<!--]--></div> <div class="relative"><div class="pointer-events-none absolute inset-0 z-10 overflow-hidden"><!--[-->`);
1706
+ const each_array_1 = ensure_array_like(speechBubbles());
1707
+ for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
1708
+ let bubble = each_array_1[$$index_1];
1709
+ $$renderer2.push(`<div class="absolute -translate-x-1/2 border-l border-rc-gray-300/40"${attr_style(speechBubbleLineStyle(bubble))}></div>`);
1710
+ }
1711
+ $$renderer2.push(`<!--]--> <!--[-->`);
1712
+ const each_array_2 = ensure_array_like(guideLines());
1713
+ for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
1714
+ let guide = each_array_2[$$index_2];
1715
+ $$renderer2.push(`<div class="absolute -translate-x-1/2 border-l border-dashed"${attr_style(guideLineStyle(guide))}></div>`);
1716
+ }
1717
+ $$renderer2.push(`<!--]--> `);
1718
+ if (timelineOriginLine()) {
1719
+ $$renderer2.push("<!--[0-->");
1720
+ $$renderer2.push(`<div class="absolute border-l border-rc-gray-200/80"${attr_style(timelineOriginLineStyle(timelineOriginLine()))}></div>`);
1721
+ } else {
1722
+ $$renderer2.push("<!--[-1-->");
1723
+ }
1724
+ $$renderer2.push(`<!--]--> `);
1725
+ if (playbackCursor()) {
1726
+ $$renderer2.push("<!--[0-->");
1727
+ $$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>`);
1728
+ } else {
1729
+ $$renderer2.push("<!--[-1-->");
1730
+ }
1731
+ $$renderer2.push(`<!--]--></div> <div class="relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60"><!--[-->`);
1732
+ const each_array_3 = ensure_array_like(visibleTicks());
1733
+ for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {
1734
+ let tick = each_array_3[$$index_3];
1735
+ $$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>`);
1736
+ }
1737
+ $$renderer2.push(`<!--]--></div> <!--[-->`);
1738
+ const each_array_4 = ensure_array_like(timelineRows());
1739
+ for (let rowIndex = 0, $$length = each_array_4.length; rowIndex < $$length; rowIndex++) {
1740
+ let row = each_array_4[rowIndex];
1741
+ $$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;`)}><!--[-->`);
1742
+ const each_array_5 = ensure_array_like(visibleTicks());
1743
+ for (let $$index_4 = 0, $$length2 = each_array_5.length; $$index_4 < $$length2; $$index_4++) {
1744
+ let tick = each_array_5[$$index_4];
1745
+ $$renderer2.push(`<div class="absolute inset-y-0 w-px bg-rc-gray-700/60"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);
1746
+ }
1747
+ $$renderer2.push(`<!--]--> <!--[-->`);
1748
+ const each_array_6 = ensure_array_like(row.segments);
1749
+ for (let $$index_5 = 0, $$length2 = each_array_6.length; $$index_5 < $$length2; $$index_5++) {
1750
+ let segment = each_array_6[$$index_5];
1751
+ const style = segmentStyle(segment);
1752
+ const text = segmentDisplayText(segment);
1753
+ if (style) {
1754
+ $$renderer2.push("<!--[0-->");
1755
+ $$renderer2.push(`<div${attr_class(clsx(segmentClass(segment)))}${attr_style(style)}>`);
1756
+ if (text) {
1757
+ $$renderer2.push("<!--[0-->");
1758
+ $$renderer2.push(`<span class="block truncate">${escape_html(text)}</span>`);
1759
+ } else {
1760
+ $$renderer2.push("<!--[-1-->");
1761
+ }
1762
+ $$renderer2.push(`<!--]--></div>`);
1763
+ } else {
1764
+ $$renderer2.push("<!--[-1-->");
1765
+ }
1766
+ $$renderer2.push(`<!--]-->`);
1767
+ }
1768
+ $$renderer2.push(`<!--]--></div>`);
1769
+ }
1770
+ $$renderer2.push(`<!--]--> <div${attr_class("relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60", void 0, {
1771
+ "rounded-b": !waveformRowVisible(),
1772
+ "border-b": !waveformRowVisible()
1773
+ })}${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> <!--[-->`);
1774
+ const each_array_7 = ensure_array_like(visibleTicks());
1775
+ for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {
1776
+ let tick = each_array_7[$$index_7];
1777
+ $$renderer2.push(`<div class="absolute inset-y-0 w-px bg-rc-gray-700/45"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);
1778
+ }
1779
+ $$renderer2.push(`<!--]--> <!--[-->`);
1780
+ const each_array_8 = ensure_array_like(speechBubbles());
1781
+ for (let $$index_8 = 0, $$length = each_array_8.length; $$index_8 < $$length; $$index_8++) {
1782
+ let bubble = each_array_8[$$index_8];
1783
+ $$renderer2.push(`<div${attr_class(clsx(speechBubbleClass(bubble)))}${attr_style(speechBubbleStyle(bubble))}>${escape_html(bubble.text)}</div>`);
1784
+ }
1785
+ $$renderer2.push(`<!--]--></div> `);
1786
+ if (waveformRowVisible()) {
1787
+ $$renderer2.push("<!--[0-->");
1788
+ $$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;`)}>`);
1789
+ if (waveformError) {
1790
+ $$renderer2.push("<!--[1-->");
1791
+ $$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>`);
1792
+ } else {
1793
+ $$renderer2.push("<!--[-1-->");
1794
+ $$renderer2.push(`<canvas class="absolute inset-0 h-full w-full"></canvas>`);
1795
+ }
1796
+ $$renderer2.push(`<!--]--> <!--[-->`);
1797
+ const each_array_9 = ensure_array_like(visibleTicks());
1798
+ for (let $$index_9 = 0, $$length = each_array_9.length; $$index_9 < $$length; $$index_9++) {
1799
+ let tick = each_array_9[$$index_9];
1800
+ $$renderer2.push(`<div class="absolute inset-y-0 w-px bg-rc-gray-700/60"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);
1801
+ }
1802
+ $$renderer2.push(`<!--]--></div>`);
1803
+ } else {
1804
+ $$renderer2.push("<!--[-1-->");
1805
+ }
1806
+ $$renderer2.push(`<!--]--></div></div>`);
1807
+ }
1808
+ $$renderer2.push(`<!--]--></div></div></div></div> `);
1809
+ {
1810
+ $$renderer2.push("<!--[-1-->");
1811
+ }
1812
+ $$renderer2.push(`<!--]--> `);
1813
+ {
1814
+ $$renderer2.push("<!--[-1-->");
1815
+ }
1816
+ $$renderer2.push(`<!--]-->`);
1817
+ });
1818
+ }
1819
+
1820
+ export { _page as default };
1821
+ //# sourceMappingURL=_page.svelte.js-tdUdTo4m.js.map