@recombine-ai/bosun 0.8.0 → 0.8.2

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 (201) hide show
  1. package/bin/bosun.js +8 -8
  2. package/build/client/_app/immutable/assets/{0.CeYdzR0K.css → 0.DkT7Ji57.css} +1 -1
  3. package/build/client/_app/immutable/assets/0.DkT7Ji57.css.br +0 -0
  4. package/build/client/_app/immutable/assets/{0.CeYdzR0K.css.gz → 0.DkT7Ji57.css.gz} +0 -0
  5. package/build/client/_app/immutable/assets/{Input.D_a_Hn-e.css → Input.CJ8KyccG.css} +1 -1
  6. package/build/client/_app/immutable/assets/Input.CJ8KyccG.css.br +0 -0
  7. package/build/client/_app/immutable/assets/Input.CJ8KyccG.css.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{B5pH84aF.js → 2QZUjt52.js} +1 -1
  9. package/build/client/_app/immutable/chunks/2QZUjt52.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/2QZUjt52.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{CxPv-oiS.js → BU7aeYn4.js} +1 -1
  12. package/build/client/_app/immutable/chunks/BU7aeYn4.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/BU7aeYn4.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{BALCah_8.js → Bb9ZigkD.js} +2 -2
  15. package/build/client/_app/immutable/chunks/Bb9ZigkD.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/Bb9ZigkD.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{De71gW9B.js → BiBGf8wR.js} +1 -1
  18. package/build/client/_app/immutable/chunks/BiBGf8wR.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/BiBGf8wR.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/{DGK-Y22B.js → C8-d_pGN.js} +8 -5
  21. package/build/client/_app/immutable/chunks/C8-d_pGN.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/C8-d_pGN.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/{BfU3a6pG.js → CYF48L9_.js} +1 -1
  24. package/build/client/_app/immutable/chunks/CYF48L9_.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/CYF48L9_.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/CnRh8Bgk.js +33 -0
  27. package/build/client/_app/immutable/chunks/CnRh8Bgk.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/CnRh8Bgk.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/aFZ7RY4i.js +5 -0
  30. package/build/client/_app/immutable/chunks/aFZ7RY4i.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/aFZ7RY4i.js.gz +0 -0
  32. package/build/client/_app/immutable/entry/{app.z0HZlVW2.js → app.CBFo0y_h.js} +2 -2
  33. package/build/client/_app/immutable/entry/app.CBFo0y_h.js.br +0 -0
  34. package/build/client/_app/immutable/entry/app.CBFo0y_h.js.gz +0 -0
  35. package/build/client/_app/immutable/entry/start.B7Oj0YZC.js +1 -0
  36. package/build/client/_app/immutable/entry/start.B7Oj0YZC.js.br +2 -0
  37. package/build/client/_app/immutable/entry/start.B7Oj0YZC.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{0.K529fk47.js → 0.BS46Erbu.js} +1 -1
  39. package/build/client/_app/immutable/nodes/0.BS46Erbu.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/0.BS46Erbu.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/{1.Do0rKYuZ.js → 1.BkQc4vam.js} +1 -1
  42. package/build/client/_app/immutable/nodes/1.BkQc4vam.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/1.BkQc4vam.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/{10.IAMYOUml.js → 10.CNlp77FZ.js} +3 -3
  45. package/build/client/_app/immutable/nodes/10.CNlp77FZ.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/10.CNlp77FZ.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/{17.DeKTr1ON.js → 17.C7bkiGOl.js} +2 -1
  48. package/build/client/_app/immutable/nodes/17.C7bkiGOl.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/17.C7bkiGOl.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/{18.CCXr28ln.js → 18.CjBHM2ng.js} +2 -2
  51. package/build/client/_app/immutable/nodes/18.CjBHM2ng.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/18.CjBHM2ng.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/2.CAYQyVDJ.js +35 -0
  54. package/build/client/_app/immutable/nodes/2.CAYQyVDJ.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/2.CAYQyVDJ.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/{3.CFCUpmUO.js → 3.CoWzFM8T.js} +1 -1
  57. package/build/client/_app/immutable/nodes/3.CoWzFM8T.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/3.CoWzFM8T.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/{4.BYbOpI2z.js → 4.BC-cU8Pp.js} +1 -1
  60. package/build/client/_app/immutable/nodes/4.BC-cU8Pp.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/4.BC-cU8Pp.js.gz +0 -0
  62. package/build/client/_app/immutable/nodes/{5.DPO0SD9J.js → 5.BqUmLlVD.js} +1 -1
  63. package/build/client/_app/immutable/nodes/5.BqUmLlVD.js.br +0 -0
  64. package/build/client/_app/immutable/nodes/5.BqUmLlVD.js.gz +0 -0
  65. package/build/client/_app/immutable/nodes/{6.BJVVMbLC.js → 6.D4x8Wh9M.js} +1 -1
  66. package/build/client/_app/immutable/nodes/6.D4x8Wh9M.js.br +0 -0
  67. package/build/client/_app/immutable/nodes/6.D4x8Wh9M.js.gz +0 -0
  68. package/build/client/_app/immutable/nodes/{8.BAyrbFTp.js → 8.CaESldgZ.js} +1 -1
  69. package/build/client/_app/immutable/nodes/8.CaESldgZ.js.br +0 -0
  70. package/build/client/_app/immutable/nodes/8.CaESldgZ.js.gz +0 -0
  71. package/build/client/_app/immutable/nodes/9.BwiEOYkX.js +2 -0
  72. package/build/client/_app/immutable/nodes/9.BwiEOYkX.js.br +0 -0
  73. package/build/client/_app/immutable/nodes/9.BwiEOYkX.js.gz +0 -0
  74. package/build/client/_app/version.json +1 -1
  75. package/build/client/_app/version.json.br +0 -0
  76. package/build/client/_app/version.json.gz +0 -0
  77. package/build/server/chunks/{0-BAKgi60O.js → 0-6QwqOuSN.js} +3 -3
  78. package/build/server/chunks/{0-BAKgi60O.js.map → 0-6QwqOuSN.js.map} +1 -1
  79. package/build/server/chunks/{1-jYHJB-tb.js → 1-BqEYCSqb.js} +2 -2
  80. package/build/server/chunks/{1-jYHJB-tb.js.map → 1-BqEYCSqb.js.map} +1 -1
  81. package/build/server/chunks/{10-YF1bugMU.js → 10-BWSo2Lz2.js} +4 -4
  82. package/build/server/chunks/{10-YF1bugMU.js.map → 10-BWSo2Lz2.js.map} +1 -1
  83. package/build/server/chunks/{17-D9vMxjRh.js → 17-C5jRC6rL.js} +3 -3
  84. package/build/server/chunks/{17-D9vMxjRh.js.map → 17-C5jRC6rL.js.map} +1 -1
  85. package/build/server/chunks/{18-BLN7cTaf.js → 18-BzERVoaR.js} +3 -3
  86. package/build/server/chunks/{18-BLN7cTaf.js.map → 18-BzERVoaR.js.map} +1 -1
  87. package/build/server/chunks/{2-B4P_qP3q.js → 2-DTdewCMV.js} +3 -3
  88. package/build/server/chunks/{2-B4P_qP3q.js.map → 2-DTdewCMV.js.map} +1 -1
  89. package/build/server/chunks/{3-njAy3GOi.js → 3-Xnzo0PPo.js} +4 -4
  90. package/build/server/chunks/{3-njAy3GOi.js.map → 3-Xnzo0PPo.js.map} +1 -1
  91. package/build/server/chunks/{4-DPlYm_DX.js → 4-BKFeDeOj.js} +2 -2
  92. package/build/server/chunks/{4-DPlYm_DX.js.map → 4-BKFeDeOj.js.map} +1 -1
  93. package/build/server/chunks/{5-BcfdXwaX.js → 5-QQH3C-Ro.js} +3 -3
  94. package/build/server/chunks/{5-BcfdXwaX.js.map → 5-QQH3C-Ro.js.map} +1 -1
  95. package/build/server/chunks/{6-DtBEsI4e.js → 6-CYC178cM.js} +3 -3
  96. package/build/server/chunks/{6-DtBEsI4e.js.map → 6-CYC178cM.js.map} +1 -1
  97. package/build/server/chunks/{8-DVq9JSHT.js → 8-msXmgb8C.js} +2 -2
  98. package/build/server/chunks/{8-DVq9JSHT.js.map → 8-msXmgb8C.js.map} +1 -1
  99. package/build/server/chunks/{9-BMEiMRkj.js → 9-COYHphb5.js} +4 -4
  100. package/build/server/chunks/{9-BMEiMRkj.js.map → 9-COYHphb5.js.map} +1 -1
  101. package/build/server/chunks/{AgentSidebar-BYk5FBc0.js → AgentSidebar-DqMxRWln.js} +2 -2
  102. package/build/server/chunks/{AgentSidebar-BYk5FBc0.js.map → AgentSidebar-DqMxRWln.js.map} +1 -1
  103. package/build/server/chunks/{Button-CMHzABlu.js → Button-qfXYs6Cv.js} +5 -2
  104. package/build/server/chunks/Button-qfXYs6Cv.js.map +1 -0
  105. package/build/server/chunks/{ChatStepTrace-BWp_rIDm.js → ChatStepTrace-Bvxmgz7y.js} +12 -4
  106. package/build/server/chunks/ChatStepTrace-Bvxmgz7y.js.map +1 -0
  107. package/build/server/chunks/{ContextEditor-DwSmZH0Y.js → ContextEditor-CsiHhmH8.js} +30 -2
  108. package/build/server/chunks/ContextEditor-CsiHhmH8.js.map +1 -0
  109. package/build/server/chunks/{Icon-DdOrLZIU.js → Icon-SOvOgynh.js} +5 -1
  110. package/build/server/chunks/Icon-SOvOgynh.js.map +1 -0
  111. package/build/server/chunks/{_layout.svelte-BxARmfhE.js → _layout.svelte-CqwbWo_W.js} +15 -5
  112. package/build/server/chunks/_layout.svelte-CqwbWo_W.js.map +1 -0
  113. package/build/server/chunks/{_layout.svelte-BnR072vW.js → _layout.svelte-DuOlsMHY.js} +4 -4
  114. package/build/server/chunks/{_layout.svelte-BnR072vW.js.map → _layout.svelte-DuOlsMHY.js.map} +1 -1
  115. package/build/server/chunks/{_page.svelte-DKRvXTam.js → _page.svelte-B8NFVmqA.js} +3 -3
  116. package/build/server/chunks/{_page.svelte-DKRvXTam.js.map → _page.svelte-B8NFVmqA.js.map} +1 -1
  117. package/build/server/chunks/{_page.svelte-CoCvoIxm.js → _page.svelte-Ch8DnIjK.js} +5 -5
  118. package/build/server/chunks/_page.svelte-Ch8DnIjK.js.map +1 -0
  119. package/build/server/chunks/{_page.svelte-CYLWOoKK.js → _page.svelte-DASkT6Tk.js} +4 -3
  120. package/build/server/chunks/_page.svelte-DASkT6Tk.js.map +1 -0
  121. package/build/server/chunks/{_page.svelte-DYCzxw9U.js → _page.svelte-Tl1k8pGd.js} +3 -3
  122. package/build/server/chunks/{_page.svelte-DYCzxw9U.js.map → _page.svelte-Tl1k8pGd.js.map} +1 -1
  123. package/build/server/chunks/{_page.svelte-BzEHuU3o.js → _page.svelte-VFizsKQC.js} +2 -2
  124. package/build/server/chunks/{_page.svelte-BzEHuU3o.js.map → _page.svelte-VFizsKQC.js.map} +1 -1
  125. package/build/server/chunks/{_page.svelte-Bqd9YZKg.js → _page.svelte-c2LBV2K4.js} +39 -10
  126. package/build/server/chunks/_page.svelte-c2LBV2K4.js.map +1 -0
  127. package/build/server/chunks/{_server.ts-B-GidZqI.js → _server.ts-C8SkG6z-.js} +8 -3
  128. package/build/server/chunks/_server.ts-C8SkG6z-.js.map +1 -0
  129. package/build/server/index.js +1 -1
  130. package/build/server/index.js.map +1 -1
  131. package/build/server/manifest.js +14 -14
  132. package/build/server/manifest.js.map +1 -1
  133. package/package.json +16 -3
  134. package/src/backend/roleplay/agents.ts +18 -0
  135. package/src/backend/roleplay/old-server.ts +3 -0
  136. package/src/backend/tests/academy.ts +2 -2
  137. package/src/backend/traces/latency-recordings.ts +2 -4
  138. package/build/client/_app/immutable/assets/0.CeYdzR0K.css.br +0 -0
  139. package/build/client/_app/immutable/assets/Input.D_a_Hn-e.css.br +0 -0
  140. package/build/client/_app/immutable/assets/Input.D_a_Hn-e.css.gz +0 -0
  141. package/build/client/_app/immutable/chunks/B5pH84aF.js.br +0 -0
  142. package/build/client/_app/immutable/chunks/B5pH84aF.js.gz +0 -0
  143. package/build/client/_app/immutable/chunks/BALCah_8.js.br +0 -0
  144. package/build/client/_app/immutable/chunks/BALCah_8.js.gz +0 -0
  145. package/build/client/_app/immutable/chunks/BfU3a6pG.js.br +0 -0
  146. package/build/client/_app/immutable/chunks/BfU3a6pG.js.gz +0 -0
  147. package/build/client/_app/immutable/chunks/CMCi0U-6.js +0 -5
  148. package/build/client/_app/immutable/chunks/CMCi0U-6.js.br +0 -0
  149. package/build/client/_app/immutable/chunks/CMCi0U-6.js.gz +0 -0
  150. package/build/client/_app/immutable/chunks/CxPv-oiS.js.br +0 -0
  151. package/build/client/_app/immutable/chunks/CxPv-oiS.js.gz +0 -0
  152. package/build/client/_app/immutable/chunks/DGK-Y22B.js.br +0 -0
  153. package/build/client/_app/immutable/chunks/DGK-Y22B.js.gz +0 -0
  154. package/build/client/_app/immutable/chunks/De71gW9B.js.br +0 -0
  155. package/build/client/_app/immutable/chunks/De71gW9B.js.gz +0 -0
  156. package/build/client/_app/immutable/chunks/Dh5nRfGH.js +0 -33
  157. package/build/client/_app/immutable/chunks/Dh5nRfGH.js.br +0 -0
  158. package/build/client/_app/immutable/chunks/Dh5nRfGH.js.gz +0 -0
  159. package/build/client/_app/immutable/entry/app.z0HZlVW2.js.br +0 -0
  160. package/build/client/_app/immutable/entry/app.z0HZlVW2.js.gz +0 -0
  161. package/build/client/_app/immutable/entry/start.BI2d1Cy8.js +0 -1
  162. package/build/client/_app/immutable/entry/start.BI2d1Cy8.js.br +0 -2
  163. package/build/client/_app/immutable/entry/start.BI2d1Cy8.js.gz +0 -0
  164. package/build/client/_app/immutable/nodes/0.K529fk47.js.br +0 -0
  165. package/build/client/_app/immutable/nodes/0.K529fk47.js.gz +0 -0
  166. package/build/client/_app/immutable/nodes/1.Do0rKYuZ.js.br +0 -0
  167. package/build/client/_app/immutable/nodes/1.Do0rKYuZ.js.gz +0 -0
  168. package/build/client/_app/immutable/nodes/10.IAMYOUml.js.br +0 -0
  169. package/build/client/_app/immutable/nodes/10.IAMYOUml.js.gz +0 -0
  170. package/build/client/_app/immutable/nodes/17.DeKTr1ON.js.br +0 -0
  171. package/build/client/_app/immutable/nodes/17.DeKTr1ON.js.gz +0 -0
  172. package/build/client/_app/immutable/nodes/18.CCXr28ln.js.br +0 -0
  173. package/build/client/_app/immutable/nodes/18.CCXr28ln.js.gz +0 -0
  174. package/build/client/_app/immutable/nodes/2.B6rYWR87.js +0 -35
  175. package/build/client/_app/immutable/nodes/2.B6rYWR87.js.br +0 -0
  176. package/build/client/_app/immutable/nodes/2.B6rYWR87.js.gz +0 -0
  177. package/build/client/_app/immutable/nodes/3.CFCUpmUO.js.br +0 -0
  178. package/build/client/_app/immutable/nodes/3.CFCUpmUO.js.gz +0 -0
  179. package/build/client/_app/immutable/nodes/4.BYbOpI2z.js.br +0 -0
  180. package/build/client/_app/immutable/nodes/4.BYbOpI2z.js.gz +0 -0
  181. package/build/client/_app/immutable/nodes/5.DPO0SD9J.js.br +0 -0
  182. package/build/client/_app/immutable/nodes/5.DPO0SD9J.js.gz +0 -0
  183. package/build/client/_app/immutable/nodes/6.BJVVMbLC.js.br +0 -0
  184. package/build/client/_app/immutable/nodes/6.BJVVMbLC.js.gz +0 -0
  185. package/build/client/_app/immutable/nodes/8.BAyrbFTp.js.br +0 -0
  186. package/build/client/_app/immutable/nodes/8.BAyrbFTp.js.gz +0 -0
  187. package/build/client/_app/immutable/nodes/9.BUcdtwTB.js +0 -2
  188. package/build/client/_app/immutable/nodes/9.BUcdtwTB.js.br +0 -0
  189. package/build/client/_app/immutable/nodes/9.BUcdtwTB.js.gz +0 -0
  190. package/build/server/chunks/Button-CMHzABlu.js.map +0 -1
  191. package/build/server/chunks/ChatStepTrace-BWp_rIDm.js.map +0 -1
  192. package/build/server/chunks/ContextEditor-DwSmZH0Y.js.map +0 -1
  193. package/build/server/chunks/Icon-DdOrLZIU.js.map +0 -1
  194. package/build/server/chunks/_layout.svelte-BxARmfhE.js.map +0 -1
  195. package/build/server/chunks/_page.svelte-Bqd9YZKg.js.map +0 -1
  196. package/build/server/chunks/_page.svelte-CYLWOoKK.js.map +0 -1
  197. package/build/server/chunks/_page.svelte-CoCvoIxm.js.map +0 -1
  198. package/build/server/chunks/_server.ts-B-GidZqI.js.map +0 -1
  199. /package/build/client/_app/immutable/chunks/{CU1-H3C1.js → DT74mAuZ.js} +0 -0
  200. /package/build/client/_app/immutable/chunks/{CU1-H3C1.js.br → DT74mAuZ.js.br} +0 -0
  201. /package/build/client/_app/immutable/chunks/{CU1-H3C1.js.gz → DT74mAuZ.js.gz} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"_page.svelte-BzEHuU3o.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js"],"sourcesContent":["import { e as ensure_array_like, c as attr_style } from \"../../../../../../chunks/index2.js\";\nimport { o as onDestroy } from \"../../../../../../chunks/index-server.js\";\nimport { p as page } from \"../../../../../../chunks/index3.js\";\nimport { B as Button } from \"../../../../../../chunks/Button.js\";\n/* empty css */\nimport { g as getPersistedTelescopeSourceId } from \"../../../../../../chunks/source-selection.js\";\nimport { W as escape_html } from \"../../../../../../chunks/context.js\";\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const TIMELINE_RULER_HEIGHT_PX = 32;\n const TIMELINE_ROW_HEIGHT_PX = 40;\n const WAVEFORM_ROW_HEIGHT_PX = 160;\n const TIMELINE_SCALE_HEIGHT_PX = 32;\n const BOSUN_COLORS = {\n blue: \"#569cd6\",\n green: \"#93FF6D\",\n greenDark: \"#00B58A\",\n orange: \"#ce9178\",\n purple: \"#81147D\",\n red: \"#FF6666\",\n gray: \"#767676\"\n };\n const RAW_VAD_SPAN_NAMES = /* @__PURE__ */ new Set([\"vad.start_of_speech\", \"vad.end_of_speech\"]);\n const RAW_STT_SPAN_NAMES = /* @__PURE__ */ new Set([\n \"stt.start_of_speech\",\n \"stt.interim_transcript\",\n \"stt.preflight_transcript\",\n \"stt.final_transcript\"\n ]);\n const HIDDEN_LATENCY_SPAN_NAMES = /* @__PURE__ */ new Set([\n \"vad.user_speech\",\n \"vad.endpointing\",\n \"vad.trailing_silence\",\n \"stt.endpointing\",\n \"stt.transcription\",\n \"stt.turn_commit\",\n \"stt.until_turn_committed\",\n \"stt.transcript_to_speech_created\",\n \"stt.transcript_to_llm_request\",\n \"stt.transcript_trigger_selected\",\n \"stt.speech_end_to_trigger_transcript\",\n \"stt.speech_end_to_final_transcript\",\n \"stt.trigger_transcript_to_reply_trigger\",\n \"stt.final_transcript_to_commit\"\n ]);\n const ROW_DEFS = [\n { label: \"VAD\", names: [...RAW_VAD_SPAN_NAMES] },\n { label: \"STT\", names: [...RAW_STT_SPAN_NAMES] },\n { label: \"Trigger\", component: \"trigger\" },\n { label: \"LLM\", names: [\"llm.request.ttft\", \"llm.streaming\"] },\n {\n label: \"LLM→TTS\",\n names: [\"llm_to_tts.buffering\", \"llm_to_tts.streaming\"]\n },\n { label: \"TTS generation\", names: [\"tts.generation\"] },\n {\n label: \"TTS→Audio\",\n names: [\"tts_to_audio.buffering\", \"tts_to_audio.streaming\"]\n },\n { label: \"LLM→Audio start\", names: [\"llm_to_audio.latency\"] },\n { label: \"Other\" }\n ];\n const COLOR_BY_KEY = {\n \"vad.user_speech\": tintHex(BOSUN_COLORS.purple, 0.35),\n \"vad.endpointing\": tintHex(BOSUN_COLORS.purple, -0.15),\n \"llm.request\": tintHex(BOSUN_COLORS.blue, -0.25),\n \"llm.streaming\": BOSUN_COLORS.blue,\n \"llm_to_tts.buffering\": tintHex(BOSUN_COLORS.orange, -0.25),\n \"llm_to_tts.streaming\": BOSUN_COLORS.orange,\n \"tts.generation\": tintHex(BOSUN_COLORS.orange, 0.25),\n \"tts_to_audio.buffering\": tintHex(BOSUN_COLORS.purple, -0.25),\n \"tts_to_audio.streaming\": tintHex(BOSUN_COLORS.purple, 0.25),\n \"llm_to_audio.ok\": BOSUN_COLORS.green,\n \"llm_to_audio.high\": BOSUN_COLORS.red,\n trigger: BOSUN_COLORS.greenDark,\n stt: tintHex(BOSUN_COLORS.purple, 0.2),\n other: BOSUN_COLORS.gray\n };\n let sourceId = getPersistedTelescopeSourceId() ?? \"\";\n let traces = [];\n let recording = {\n alignmentOffsetMs: 0\n };\n let uploadInFlight = false;\n let playbackPositionMs = 0;\n let playbackPlaying = false;\n let viewportStartMs = null;\n let viewportEndMs = null;\n let fileInputEl = null;\n let playbackAudioContext = null;\n let playbackSourceNode = null;\n let playbackStartedAtMs = null;\n let playbackStartedAtContextTime = null;\n const conversationId = (() => page.params.conversationId)();\n function buildRecordingApiUrlFor(cid, nextSourceId) {\n const params = new URLSearchParams();\n if (nextSourceId) params.set(\"source\", nextSourceId);\n const search = params.toString();\n return `/traces/api/latency/${encodeURIComponent(cid)}${search ? `?${search}` : \"\"}`;\n }\n (() => {\n if (!conversationId) return \"\";\n return buildRecordingApiUrlFor(conversationId, sourceId);\n })();\n const timelineOriginMs = (() => {\n let min = Number.POSITIVE_INFINITY;\n for (const trace of traces) {\n if (typeof trace.createdAt !== \"number\" || !Number.isFinite(trace.createdAt)) continue;\n min = Math.min(min, trace.createdAt);\n }\n return Number.isFinite(min) ? min : 0;\n })();\n const callSegments = (() => buildCallLatencySegments(traces))();\n const latencyTraceCount = (() => traces.filter((trace) => {\n const metrics = trace?.metrics;\n return !!metrics && typeof metrics === \"object\";\n }).length)();\n const timelineRows = (() => {\n const grouped = /* @__PURE__ */ new Map();\n for (const segment of callSegments) {\n const items = grouped.get(segment.row);\n if (items) items.push(segment);\n else grouped.set(segment.row, [segment]);\n }\n return [...ROW_DEFS].reverse().map((row) => ({ label: row.label, segments: grouped.get(row.label) ?? [] })).filter((row) => row.segments.length > 0);\n })();\n const guideLines = (() => buildGuideLines())();\n const recordingStartMs = /* @__PURE__ */ (() => {\n return null;\n })();\n const timelinePlotHeightPx = (() => TIMELINE_RULER_HEIGHT_PX + timelineRows.length * TIMELINE_ROW_HEIGHT_PX + WAVEFORM_ROW_HEIGHT_PX + TIMELINE_SCALE_HEIGHT_PX)();\n const playbackAbsoluteMs = (() => {\n if (recordingStartMs == null) return null;\n return recordingStartMs + playbackPositionMs;\n })();\n const playbackCursor = (() => {\n const absoluteMs = playbackAbsoluteMs;\n if (absoluteMs == null || viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n if (absoluteMs < viewportStartMs || absoluteMs > viewportEndMs) return null;\n return {\n leftPercent: clamp((absoluteMs - viewportStartMs) / durationMs * 100, 0, 100),\n heightPx: timelinePlotHeightPx\n };\n })();\n const contentExtent = (() => {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (const segment of callSegments) {\n min = Math.min(min, segment.start);\n max = Math.max(max, segment.end);\n }\n if (!Number.isFinite(min) || !Number.isFinite(max) || max <= min) return null;\n return { min, max };\n })();\n const viewportDurationMs = (() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n return duration > 0 ? duration : null;\n })();\n const visibleTicks = (() => {\n if (viewportStartMs == null || viewportEndMs == null) return [];\n return buildTicks(viewportStartMs, viewportEndMs, timelineOriginMs);\n })();\n const visibleTickStepMs = (() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n return chooseTickStep(durationMs);\n })();\n onDestroy(() => {\n stopPlayback(false);\n void closePlaybackAudioContext();\n });\n function normalizeNonEmptyString(value) {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed ? trimmed : null;\n }\n function ms(value) {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n }\n function clampByte(value) {\n return Math.max(0, Math.min(255, Math.round(value)));\n }\n function clamp(value, min, max) {\n return Math.min(max, Math.max(min, value));\n }\n function tintHex(hex, amount) {\n const raw = (hex ?? \"\").trim().replace(/^#/, \"\");\n const expanded = raw.length === 3 ? raw.split(\"\").map((part) => `${part}${part}`).join(\"\") : raw;\n if (expanded.length !== 6 || !/^[0-9a-fA-F]+$/.test(expanded)) return hex;\n const r = parseInt(expanded.slice(0, 2), 16);\n const g = parseInt(expanded.slice(2, 4), 16);\n const b = parseInt(expanded.slice(4, 6), 16);\n const t = Math.abs(Math.max(-1, Math.min(1, amount)));\n const target = amount >= 0 ? 255 : 0;\n 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\")}`;\n }\n function fmtSignedMs(value) {\n if (!Number.isFinite(value)) return \"0 ms\";\n const rounded = Math.round(value);\n if (rounded === 0) return \"0 ms\";\n return `${rounded > 0 ? \"+\" : \"\"}${rounded} ms`;\n }\n function formatRelativeTime(offsetMs) {\n if (!Number.isFinite(offsetMs)) return \"—\";\n const sign = offsetMs < 0 ? \"-\" : \"\";\n const abs = Math.abs(offsetMs);\n if (abs < 1e4) return `${sign}${(abs / 1e3).toFixed(1)}s`;\n if (abs < 6e4) return `${sign}${(abs / 1e3).toFixed(2)}s`;\n const totalSeconds = abs / 1e3;\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds - minutes * 60;\n return `${sign}${minutes}:${seconds.toFixed(1).padStart(4, \"0\")}`;\n }\n function formatScaleStep(valueMs) {\n if (valueMs == null || !Number.isFinite(valueMs) || valueMs <= 0) return \"—\";\n if (valueMs < 1e3) return `${Math.round(valueMs)} ms`;\n if (valueMs < 1e4) return `${Math.round(valueMs)} ms (${(valueMs / 1e3).toFixed(1)} s)`;\n return `${Math.round(valueMs)} ms (${(valueMs / 1e3).toFixed(2)} s)`;\n }\n function spanAttribute(span, key) {\n const attributes = span?.attributes;\n if (!attributes || typeof attributes !== \"object\") return null;\n return attributes[`bosun.${key}`] ?? attributes[`anyvan.${key}`] ?? null;\n }\n function spanStringAttribute(span, key) {\n return normalizeNonEmptyString(spanAttribute(span, key));\n }\n function spanComponent(span) {\n return spanStringAttribute(span, \"component\");\n }\n function shouldIgnoreLatencySpan(span) {\n const name = normalizeNonEmptyString(span?.name);\n if (!name) return false;\n if (HIDDEN_LATENCY_SPAN_NAMES.has(name)) return true;\n if (name.startsWith(\"vad.\") && !RAW_VAD_SPAN_NAMES.has(name)) return true;\n if (name.startsWith(\"stt.\") && !RAW_STT_SPAN_NAMES.has(name)) return true;\n return false;\n }\n function spanLabel(span) {\n const label = spanStringAttribute(span, \"label\");\n if (label) return label;\n if (typeof span?.name === \"string\" && span.name) return span.name;\n return \"span\";\n }\n function describeTrace(trace) {\n const time = typeof trace.createdAt === \"number\" && Number.isFinite(trace.createdAt) ? new Date(trace.createdAt).toLocaleTimeString() : \"unknown time\";\n if (trace.traceType === \"CONVERSATIONAL\") {\n return `Conversational • ${trace.eventName} • ${time}`;\n }\n if (trace.traceType === \"STEP\") {\n return `Step • ${trace.name ?? \"unknown\"} • ${time}`;\n }\n return `API • ${trace.operationName} • ${time}`;\n }\n function spanColorKey(span) {\n const name = typeof span?.name === \"string\" ? span.name : \"\";\n if (name === \"vad.endpointing\") return \"vad.endpointing\";\n if (name.startsWith(\"vad.\")) return \"vad.user_speech\";\n if (name === \"llm.request.ttft\") return \"llm.request\";\n if (name === \"llm.streaming\") return \"llm.streaming\";\n if (name === \"llm_to_tts.buffering\") return \"llm_to_tts.buffering\";\n if (name === \"llm_to_tts.streaming\") return \"llm_to_tts.streaming\";\n if (name === \"tts.generation\") return \"tts.generation\";\n if (name === \"tts_to_audio.buffering\") return \"tts_to_audio.buffering\";\n if (name === \"tts_to_audio.streaming\") return \"tts_to_audio.streaming\";\n if (name.startsWith(\"stt.\")) return \"stt\";\n if (name.startsWith(\"trigger.\")) return \"trigger\";\n const component = spanComponent(span);\n if (component === \"vad\") return \"vad.user_speech\";\n if (component === \"stt\") return \"stt\";\n if (component === \"trigger\") return \"trigger\";\n return \"other\";\n }\n function makePointSpan(name, atMs, attributes) {\n return {\n name,\n startTimeUnixMs: atMs,\n endTimeUnixMs: atMs,\n durationMs: 0,\n attributes\n };\n }\n function buildLatencyDebugSpans(metrics) {\n const debug = metrics?.debug ?? {};\n const ttsAudioStartAtMs = ms(metrics?.timing?.ttsAudioStartAtMs);\n const isPreResponseEvent = (atMs) => ttsAudioStartAtMs == null || atMs <= ttsAudioStartAtMs;\n const built = [];\n let hasRawVad = false;\n let hasRawStt = false;\n const vadEvents = Array.isArray(debug?.vadEvents?.events) ? debug.vadEvents.events : [];\n vadEvents.forEach((event, index) => {\n const atMs = ms(event?.atMs);\n const type = normalizeNonEmptyString(event?.type);\n if (atMs == null || !isPreResponseEvent(atMs) || type !== \"start_of_speech\" && type !== \"end_of_speech\") {\n return;\n }\n hasRawVad = true;\n built.push(makePointSpan(`vad.${type}`, atMs, {\n \"anyvan.component\": \"vad\",\n \"anyvan.label\": type === \"start_of_speech\" ? \"VAD activated\" : \"VAD deactivated\",\n \"anyvan.description\": type === \"start_of_speech\" ? \"Raw VAD START_OF_SPEECH event\" : \"Raw VAD END_OF_SPEECH event\",\n \"anyvan.eventIndex\": index,\n \"anyvan.samplesIndex\": typeof event?.samplesIndex === \"number\" ? event.samplesIndex : void 0,\n \"anyvan.speechDurationMs\": typeof event?.speechDurationMs === \"number\" ? event.speechDurationMs : void 0,\n \"anyvan.silenceDurationMs\": typeof event?.silenceDurationMs === \"number\" ? event.silenceDurationMs : void 0\n }));\n });\n const sttEvents = Array.isArray(debug?.sttEvents?.events) ? debug.sttEvents.events : [];\n sttEvents.forEach((event, index) => {\n const atMs = ms(event?.atMs);\n const type = normalizeNonEmptyString(event?.type);\n if (atMs == null || !isPreResponseEvent(atMs) || type !== \"start_of_speech\" && type !== \"interim_transcript\" && type !== \"preflight_transcript\" && type !== \"final_transcript\") {\n return;\n }\n hasRawStt = true;\n const label = type === \"start_of_speech\" ? \"STT start of speech\" : type === \"interim_transcript\" ? \"STT interim transcript\" : type === \"preflight_transcript\" ? \"STT preflight transcript\" : \"STT final transcript\";\n built.push(makePointSpan(`stt.${type}`, atMs, {\n \"anyvan.component\": \"stt\",\n \"anyvan.label\": label,\n \"anyvan.description\": `Raw STT ${type.toUpperCase()} event`,\n \"anyvan.eventIndex\": index,\n \"anyvan.requestId\": typeof event?.requestId === \"string\" ? event.requestId : void 0,\n \"anyvan.text\": normalizeNonEmptyString(event?.text),\n \"anyvan.language\": typeof event?.language === \"string\" || event?.language === null ? event.language : void 0,\n \"anyvan.speakerId\": typeof event?.speakerId === \"string\" || event?.speakerId === null ? event.speakerId : void 0\n }));\n });\n return { spans: built, hasRawVad, hasRawStt };\n }\n function buildSegmentsForMetrics(trace, metrics, prefix) {\n const debugSpans = buildLatencyDebugSpans(metrics);\n const spans = Array.isArray(metrics?.spans) ? metrics.spans.filter((span) => {\n const name = normalizeNonEmptyString(span?.name);\n if (name?.startsWith(\"vad.\") && debugSpans.hasRawVad) return false;\n if (name?.startsWith(\"stt.\") && debugSpans.hasRawStt) return false;\n return !shouldIgnoreLatencySpan(span);\n }) : [];\n const summary = metrics?.summary ?? {};\n const timing = metrics?.timing ?? {};\n const indexed = [...spans, ...debugSpans.spans].map((span, index) => ({ span, index }));\n const used = /* @__PURE__ */ new Set();\n const groupedRows = ROW_DEFS.filter((row) => row.label !== \"LLM→Audio start\" && row.label !== \"Other\").map((row) => {\n const matches = indexed.filter(({ span, index }) => {\n if (used.has(index)) return false;\n const name = typeof span?.name === \"string\" ? span.name : \"\";\n const component = spanComponent(span);\n const nameMatch = Array.isArray(row.names) && name !== \"\" && row.names.includes(name);\n const componentMatch = typeof row.component === \"string\" && component === row.component;\n return nameMatch || componentMatch;\n }).sort((a, b) => (ms(a.span.startTimeUnixMs) ?? 0) - (ms(b.span.startTimeUnixMs) ?? 0));\n for (const match of matches) used.add(match.index);\n return { label: row.label, spans: matches.map((match) => match.span) };\n }).filter((row) => row.spans.length > 0);\n const other = indexed.filter(({ index }) => !used.has(index)).map((entry) => entry.span).sort((a, b) => (ms(a.startTimeUnixMs) ?? 0) - (ms(b.startTimeUnixMs) ?? 0));\n if (other.length) groupedRows.push({ label: \"Other\", spans: other });\n const built = [];\n for (const row of groupedRows) {\n row.spans.forEach((span, index) => {\n const start = ms(span.startTimeUnixMs);\n const end = ms(span.endTimeUnixMs);\n if (start == null || end == null || end < start) return;\n built.push({\n id: `${prefix}:${row.label}:${span.name ?? \"span\"}:${start}:${end}:${index}`,\n row: row.label,\n start,\n end,\n durationMs: Math.max(0, end - start),\n colorKey: spanColorKey(span),\n label: spanLabel(span),\n description: spanStringAttribute(span, \"description\"),\n explain: spanStringAttribute(span, \"explain\"),\n text: spanStringAttribute(span, \"text\"),\n traceLabel: describeTrace(trace)\n });\n });\n }\n const llmRequestStartAtMs = ms(timing?.llmRequestStartAtMs);\n const ttsAudioStartAtMs = ms(timing?.ttsAudioStartAtMs);\n if (llmRequestStartAtMs != null && ttsAudioStartAtMs != null && ttsAudioStartAtMs >= llmRequestStartAtMs) {\n const durationMs = ttsAudioStartAtMs - llmRequestStartAtMs;\n built.push({\n id: `${prefix}:llm_to_audio:${llmRequestStartAtMs}:${ttsAudioStartAtMs}`,\n row: \"LLM→Audio start\",\n start: llmRequestStartAtMs,\n end: ttsAudioStartAtMs,\n durationMs,\n colorKey: durationMs > 800 || Boolean(summary?.problematic) ? \"llm_to_audio.high\" : \"llm_to_audio.ok\",\n label: \"LLM→Audio start\",\n description: \"LLM request start → agent speaking (first audio frame)\",\n explain: durationMs > 800 || Boolean(summary?.problematic) ? \"High latency (>800ms) or problematic timing\" : \"OK\",\n text: null,\n traceLabel: describeTrace(trace)\n });\n }\n return built;\n }\n function buildCallLatencySegments(input) {\n const built = [];\n input.forEach((trace, index) => {\n const metrics = trace?.metrics;\n if (!metrics || typeof metrics !== \"object\") return;\n const key = normalizeNonEmptyString(trace?.traceId) ?? `${trace.traceType}:${trace.createdAt}:${index}`;\n built.push(...buildSegmentsForMetrics(trace, metrics, key));\n });\n return built.sort((a, b) => a.start - b.start || a.end - b.end || a.row.localeCompare(b.row));\n }\n function segmentStyle(segment) {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(duration) || duration <= 0) return null;\n const fill = COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray;\n const border = tintHex(fill, -0.25);\n if (segment.end === segment.start) {\n if (segment.start < viewportStartMs || segment.start > viewportEndMs) return null;\n const pointPercent = clamp((segment.start - viewportStartMs) / duration * 100, 0, 100);\n return `left:calc(${pointPercent}% - 2px);width:4px;background:${fill};border-color:${border};`;\n }\n const visibleStart = Math.max(segment.start, viewportStartMs);\n const visibleEnd = Math.min(segment.end, viewportEndMs);\n if (visibleEnd < visibleStart) return null;\n const leftPercent = (visibleStart - viewportStartMs) / duration * 100;\n const widthPercent = (visibleEnd - visibleStart) / duration * 100;\n return `left:${leftPercent}%;width:max(${widthPercent}%,2px);background:${fill};border-color:${border};`;\n }\n function guideLineStyle(guide) {\n return `left:${guide.leftPercent}%;top:${guide.topPx}px;height:${guide.heightPx}px;border-color:${guide.color};opacity:${guide.opacity};`;\n }\n function buildGuideLines(rows) {\n return [];\n }\n function chooseTickStep(durationMs) {\n const approx = durationMs / 7;\n const magnitude = 10 ** Math.floor(Math.log10(Math.max(1, approx)));\n const normalized = approx / magnitude;\n if (normalized <= 1) return 1 * magnitude;\n if (normalized <= 2) return 2 * magnitude;\n if (normalized <= 5) return 5 * magnitude;\n return 10 * magnitude;\n }\n function buildTicks(startMs, endMs, originMs) {\n const durationMs = endMs - startMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return [];\n const stepMs = chooseTickStep(durationMs);\n const firstTick = Math.ceil((startMs - originMs) / stepMs) * stepMs + originMs;\n const ticks = [];\n for (let tick = firstTick; tick <= endMs; tick += stepMs) {\n const leftPercent = (tick - startMs) / durationMs * 100;\n ticks.push({\n time: tick,\n leftPercent,\n label: formatRelativeTime(tick - originMs)\n });\n }\n return ticks;\n }\n async function closePlaybackAudioContext() {\n const context = playbackAudioContext;\n playbackAudioContext = null;\n if (!context) return;\n await context.close().catch(() => {\n });\n }\n function getPlaybackPositionMs() {\n const durationMs = getRecordingDurationMs();\n if (playbackPlaying && playbackAudioContext && playbackStartedAtMs != null && playbackStartedAtContextTime != null) {\n const elapsedMs = (playbackAudioContext.currentTime - playbackStartedAtContextTime) * 1e3;\n const currentMs = playbackStartedAtMs + Math.max(0, elapsedMs);\n return durationMs > 0 ? clamp(currentMs, 0, durationMs) : Math.max(0, currentMs);\n }\n return durationMs > 0 ? clamp(playbackPositionMs, 0, durationMs) : Math.max(0, playbackPositionMs);\n }\n function stopPlayback(preservePosition = true) {\n if (preservePosition) {\n playbackPositionMs = getPlaybackPositionMs();\n }\n const source = playbackSourceNode;\n playbackSourceNode = null;\n playbackStartedAtMs = null;\n playbackStartedAtContextTime = null;\n playbackPlaying = false;\n if (!source) return;\n source.onended = null;\n try {\n source.stop();\n } catch {\n }\n source.disconnect();\n }\n function getRecordingDurationMs() {\n return 0;\n }\n async function togglePlayback() {\n return;\n }\n function fitViewport(markDirty = true) {\n const extent = contentExtent;\n if (!extent) return;\n const paddingMs = Math.max(500, (extent.max - extent.min) * 0.05);\n viewportStartMs = extent.min - paddingMs;\n viewportEndMs = extent.max + paddingMs;\n }\n function clampViewport(startMs, endMs) {\n const extent = contentExtent;\n if (!extent) return { startMs, endMs };\n const durationMs = endMs - startMs;\n if (durationMs <= 0) return { startMs, endMs };\n const marginMs = Math.max(1e3, durationMs * 0.25);\n const minAllowed = extent.min - marginMs;\n const maxAllowed = extent.max + marginMs;\n if (durationMs >= maxAllowed - minAllowed) {\n return { startMs: minAllowed, endMs: maxAllowed };\n }\n if (startMs < minAllowed) {\n endMs += minAllowed - startMs;\n startMs = minAllowed;\n }\n if (endMs > maxAllowed) {\n startMs -= endMs - maxAllowed;\n endMs = maxAllowed;\n }\n return { startMs, endMs };\n }\n function setViewport(startMs, endMs) {\n if (!Number.isFinite(startMs) || !Number.isFinite(endMs) || endMs <= startMs) return;\n const next = clampViewport(startMs, endMs);\n viewportStartMs = next.startMs;\n viewportEndMs = next.endMs;\n }\n function zoomViewport(factor, focusRatio = 0.5) {\n if (viewportStartMs == null || viewportEndMs == null) return;\n const currentDuration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(currentDuration) || currentDuration <= 0) return;\n const extent = contentExtent;\n const contentDuration = extent ? extent.max - extent.min : currentDuration;\n const minDuration = Math.min(100, currentDuration);\n const maxDuration = Math.max(contentDuration + Math.max(2e3, contentDuration * 0.1), 5e3);\n const nextDuration = clamp(currentDuration * factor, minDuration, maxDuration);\n const nextFocusRatio = clamp(focusRatio, 0, 1);\n const focusMs = viewportStartMs + currentDuration * nextFocusRatio;\n const nextStartMs = focusMs - nextDuration * nextFocusRatio;\n setViewport(nextStartMs, nextStartMs + nextDuration);\n }\n async function resetAlignment() {\n return;\n }\n $$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 `);\n if (conversationId) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<span class=\"text-rc-gray-100\">for conversation Id:</span> <span class=\"text-rc-green-200\">${escape_html(conversationId)}</span>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$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 traces:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(callSegments.length)}</span></div> <div><span class=\"text-rc-gray-400\">Traces with metrics:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(latencyTraceCount)}</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> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (viewportStartMs != null && viewportEndMs != null) {\n $$renderer2.push(\"<!--[-->\");\n $$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>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$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\"/> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: uploadInFlight,\n onclick: () => fileInputEl?.click(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(\"Upload WAV\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: true,\n onclick: () => void togglePlayback(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(playbackPlaying ? \"Pause\" : \"Play\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs == null,\n onclick: () => zoomViewport(0.8),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom in`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs == null,\n onclick: () => zoomViewport(1.25),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom out`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !contentExtent,\n onclick: () => fitViewport(true),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Fit call`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: true,\n onclick: resetAlignment,\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Reset alignment`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----></div></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$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 bg-rc-gray-900/60 p-3\"><div class=\"flex flex-wrap items-start justify-between gap-3\"><div><div class=\"text-sm font-semibold text-rc-gray-100\">Recording</div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<div class=\"mt-1 text-sm text-rc-gray-300\">Upload a WAV recording to overlay the call waveform and persist it under this\n\t\t\t\t\t\t\t\tproject's \\`data/\\` folder.</div>`);\n }\n $$renderer2.push(`<!--]--></div> <div class=\"text-xs text-rc-gray-300\"><div>Drag the latency chart to pan the viewport.</div> <div>Scroll anywhere in the timeline to zoom traces and waveform together.</div> <div>Click the waveform to move the playhead.</div> <div>Press Space to play or pause.</div> <div>Drag the waveform itself to align the audio against the traces.</div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div></div></div> <div class=\"rounded-md border border-rc-gray-650 bg-rc-gray-900/60 p-3\"><div class=\"mb-3 flex items-center justify-between gap-3\"><div class=\"text-sm font-semibold text-rc-gray-100\">Call timeline</div> <div class=\"text-xs text-rc-gray-400\">Shared x-axis for traces and waveform</div></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n if (!callSegments.length) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">No latency metrics were found on this call.</div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n if (viewportStartMs == null || viewportEndMs == null) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">Preparing timeline…</div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<div class=\"grid grid-cols-[140px_minmax(0,1fr)] gap-x-3\"><div class=\"flex flex-col\"><div class=\"h-8\"></div> <!--[-->`);\n const each_array = ensure_array_like(timelineRows);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let row = each_array[$$index];\n $$renderer2.push(`<div class=\"flex h-10 items-center text-xs text-rc-gray-300\">${escape_html(row.label)}</div>`);\n }\n $$renderer2.push(`<!--]--> <div class=\"flex h-40 items-center text-xs text-rc-gray-300\">Waveform</div> <div class=\"flex h-8 items-center text-xs text-rc-gray-300\">Scale</div></div> <div class=\"relative\"><div class=\"pointer-events-none absolute inset-0 z-10 overflow-hidden\"><!--[-->`);\n const each_array_1 = ensure_array_like(guideLines);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let guide = each_array_1[$$index_1];\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l border-dashed\"${attr_style(guideLineStyle(guide))}></div>`);\n }\n $$renderer2.push(`<!--]--> `);\n if (playbackCursor) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"absolute top-0 -translate-x-1/2 border-l-2 border-rc-green-200/90\"${attr_style(`left:${playbackCursor.leftPercent}%;height:${playbackCursor.heightPx}px;`)}></div> <div class=\"absolute top-1 h-2 w-2 -translate-x-1/2 rounded-full bg-rc-green-200\"${attr_style(`left:${playbackCursor.leftPercent}%;`)}></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60 bg-rc-gray-800/30\"><!--[-->`);\n const each_array_2 = ensure_array_like(visibleTicks);\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let tick = each_array_2[$$index_2];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/70\"${attr_style(`left:${tick.leftPercent}%;`)}></div> <div class=\"absolute bottom-1 -translate-x-1/2 whitespace-nowrap text-[11px] text-rc-gray-400\"${attr_style(`left:${tick.leftPercent}%;`)}>${escape_html(tick.label)}</div>`);\n }\n $$renderer2.push(`<!--]--></div> <!--[-->`);\n const each_array_3 = ensure_array_like(timelineRows);\n for (let $$index_5 = 0, $$length = each_array_3.length; $$index_5 < $$length; $$index_5++) {\n let row = each_array_3[$$index_5];\n $$renderer2.push(`<div class=\"relative z-0 h-10 overflow-hidden border-x border-t border-rc-gray-700/60 bg-rc-gray-800/20\"><!--[-->`);\n const each_array_4 = ensure_array_like(visibleTicks);\n for (let $$index_3 = 0, $$length2 = each_array_4.length; $$index_3 < $$length2; $$index_3++) {\n let tick = each_array_4[$$index_3];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_5 = ensure_array_like(row.segments);\n for (let $$index_4 = 0, $$length2 = each_array_5.length; $$index_4 < $$length2; $$index_4++) {\n let segment = each_array_5[$$index_4];\n const style = segmentStyle(segment);\n if (style) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"absolute top-1/2 h-5 -translate-y-1/2 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]\"${attr_style(style)}></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div>`);\n }\n $$renderer2.push(`<!--]--> <div class=\"relative z-0 h-40 overflow-hidden border-x border-t border-rc-gray-700/60 bg-rc-gray-800/30\">`);\n {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"absolute inset-0 flex items-center justify-center px-4 text-sm text-rc-gray-300\">Upload a WAV file to render the call waveform here.</div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_6 = ensure_array_like(visibleTicks);\n for (let $$index_6 = 0, $$length = each_array_6.length; $$index_6 < $$length; $$index_6++) {\n let tick = each_array_6[$$index_6];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative z-0 h-8 overflow-hidden rounded-b border-x border-b border-t border-rc-gray-700/60 bg-rc-gray-800/25\"><div class=\"absolute left-3 top-1/2 -translate-y-1/2 rounded bg-rc-gray-900/80 px-2 py-0.5 text-[11px] text-rc-gray-300\">Grid: ${escape_html(formatScaleStep(visibleTickStepMs))}</div> <!--[-->`);\n const each_array_7 = ensure_array_like(visibleTicks);\n for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {\n let tick = each_array_7[$$index_7];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div> <div class=\"absolute bottom-1 -translate-x-1/2 whitespace-nowrap text-[11px] text-rc-gray-400\"${attr_style(`left:${tick.leftPercent}%;`)}>${escape_html(tick.label)}</div>`);\n }\n $$renderer2.push(`<!--]--></div></div></div>`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div></div></div></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_page.svelte-VFizsKQC.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js"],"sourcesContent":["import { e as ensure_array_like, c as attr_style } from \"../../../../../../chunks/index2.js\";\nimport { o as onDestroy } from \"../../../../../../chunks/index-server.js\";\nimport { p as page } from \"../../../../../../chunks/index3.js\";\nimport { B as Button } from \"../../../../../../chunks/Button.js\";\n/* empty css */\nimport { g as getPersistedTelescopeSourceId } from \"../../../../../../chunks/source-selection.js\";\nimport { W as escape_html } from \"../../../../../../chunks/context.js\";\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const TIMELINE_RULER_HEIGHT_PX = 32;\n const TIMELINE_ROW_HEIGHT_PX = 40;\n const WAVEFORM_ROW_HEIGHT_PX = 160;\n const TIMELINE_SCALE_HEIGHT_PX = 32;\n const BOSUN_COLORS = {\n blue: \"#569cd6\",\n green: \"#93FF6D\",\n greenDark: \"#00B58A\",\n orange: \"#ce9178\",\n purple: \"#81147D\",\n red: \"#FF6666\",\n gray: \"#767676\"\n };\n const RAW_VAD_SPAN_NAMES = /* @__PURE__ */ new Set([\"vad.start_of_speech\", \"vad.end_of_speech\"]);\n const RAW_STT_SPAN_NAMES = /* @__PURE__ */ new Set([\n \"stt.start_of_speech\",\n \"stt.interim_transcript\",\n \"stt.preflight_transcript\",\n \"stt.final_transcript\"\n ]);\n const HIDDEN_LATENCY_SPAN_NAMES = /* @__PURE__ */ new Set([\n \"vad.user_speech\",\n \"vad.endpointing\",\n \"vad.trailing_silence\",\n \"stt.endpointing\",\n \"stt.transcription\",\n \"stt.turn_commit\",\n \"stt.until_turn_committed\",\n \"stt.transcript_to_speech_created\",\n \"stt.transcript_to_llm_request\",\n \"stt.transcript_trigger_selected\",\n \"stt.speech_end_to_trigger_transcript\",\n \"stt.speech_end_to_final_transcript\",\n \"stt.trigger_transcript_to_reply_trigger\",\n \"stt.final_transcript_to_commit\"\n ]);\n const ROW_DEFS = [\n { label: \"VAD\", names: [...RAW_VAD_SPAN_NAMES] },\n { label: \"STT\", names: [...RAW_STT_SPAN_NAMES] },\n { label: \"Trigger\", component: \"trigger\" },\n { label: \"LLM\", names: [\"llm.request.ttft\", \"llm.streaming\"] },\n {\n label: \"LLM→TTS\",\n names: [\"llm_to_tts.buffering\", \"llm_to_tts.streaming\"]\n },\n { label: \"TTS generation\", names: [\"tts.generation\"] },\n {\n label: \"TTS→Audio\",\n names: [\"tts_to_audio.buffering\", \"tts_to_audio.streaming\"]\n },\n { label: \"LLM→Audio start\", names: [\"llm_to_audio.latency\"] },\n { label: \"Other\" }\n ];\n const COLOR_BY_KEY = {\n \"vad.user_speech\": tintHex(BOSUN_COLORS.purple, 0.35),\n \"vad.endpointing\": tintHex(BOSUN_COLORS.purple, -0.15),\n \"llm.request\": tintHex(BOSUN_COLORS.blue, -0.25),\n \"llm.streaming\": BOSUN_COLORS.blue,\n \"llm_to_tts.buffering\": tintHex(BOSUN_COLORS.orange, -0.25),\n \"llm_to_tts.streaming\": BOSUN_COLORS.orange,\n \"tts.generation\": tintHex(BOSUN_COLORS.orange, 0.25),\n \"tts_to_audio.buffering\": tintHex(BOSUN_COLORS.purple, -0.25),\n \"tts_to_audio.streaming\": tintHex(BOSUN_COLORS.purple, 0.25),\n \"llm_to_audio.ok\": BOSUN_COLORS.green,\n \"llm_to_audio.high\": BOSUN_COLORS.red,\n trigger: BOSUN_COLORS.greenDark,\n stt: tintHex(BOSUN_COLORS.purple, 0.2),\n other: BOSUN_COLORS.gray\n };\n let sourceId = getPersistedTelescopeSourceId() ?? \"\";\n let traces = [];\n let recording = {\n alignmentOffsetMs: 0\n };\n let uploadInFlight = false;\n let playbackPositionMs = 0;\n let playbackPlaying = false;\n let viewportStartMs = null;\n let viewportEndMs = null;\n let fileInputEl = null;\n let playbackAudioContext = null;\n let playbackSourceNode = null;\n let playbackStartedAtMs = null;\n let playbackStartedAtContextTime = null;\n const conversationId = (() => page.params.conversationId)();\n function buildRecordingApiUrlFor(cid, nextSourceId) {\n const params = new URLSearchParams();\n if (nextSourceId) params.set(\"source\", nextSourceId);\n const search = params.toString();\n return `/traces/api/latency/${encodeURIComponent(cid)}${search ? `?${search}` : \"\"}`;\n }\n (() => {\n if (!conversationId) return \"\";\n return buildRecordingApiUrlFor(conversationId, sourceId);\n })();\n const timelineOriginMs = (() => {\n let min = Number.POSITIVE_INFINITY;\n for (const trace of traces) {\n if (typeof trace.createdAt !== \"number\" || !Number.isFinite(trace.createdAt)) continue;\n min = Math.min(min, trace.createdAt);\n }\n return Number.isFinite(min) ? min : 0;\n })();\n const callSegments = (() => buildCallLatencySegments(traces))();\n const latencyTraceCount = (() => traces.filter((trace) => {\n const metrics = trace?.metrics;\n return !!metrics && typeof metrics === \"object\";\n }).length)();\n const timelineRows = (() => {\n const grouped = /* @__PURE__ */ new Map();\n for (const segment of callSegments) {\n const items = grouped.get(segment.row);\n if (items) items.push(segment);\n else grouped.set(segment.row, [segment]);\n }\n return [...ROW_DEFS].reverse().map((row) => ({ label: row.label, segments: grouped.get(row.label) ?? [] })).filter((row) => row.segments.length > 0);\n })();\n const guideLines = (() => buildGuideLines())();\n const recordingStartMs = /* @__PURE__ */ (() => {\n return null;\n })();\n const timelinePlotHeightPx = (() => TIMELINE_RULER_HEIGHT_PX + timelineRows.length * TIMELINE_ROW_HEIGHT_PX + WAVEFORM_ROW_HEIGHT_PX + TIMELINE_SCALE_HEIGHT_PX)();\n const playbackAbsoluteMs = (() => {\n if (recordingStartMs == null) return null;\n return recordingStartMs + playbackPositionMs;\n })();\n const playbackCursor = (() => {\n const absoluteMs = playbackAbsoluteMs;\n if (absoluteMs == null || viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n if (absoluteMs < viewportStartMs || absoluteMs > viewportEndMs) return null;\n return {\n leftPercent: clamp((absoluteMs - viewportStartMs) / durationMs * 100, 0, 100),\n heightPx: timelinePlotHeightPx\n };\n })();\n const contentExtent = (() => {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (const segment of callSegments) {\n min = Math.min(min, segment.start);\n max = Math.max(max, segment.end);\n }\n if (!Number.isFinite(min) || !Number.isFinite(max) || max <= min) return null;\n return { min, max };\n })();\n const viewportDurationMs = (() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n return duration > 0 ? duration : null;\n })();\n const visibleTicks = (() => {\n if (viewportStartMs == null || viewportEndMs == null) return [];\n return buildTicks(viewportStartMs, viewportEndMs, timelineOriginMs);\n })();\n const visibleTickStepMs = (() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n return chooseTickStep(durationMs);\n })();\n onDestroy(() => {\n stopPlayback(false);\n void closePlaybackAudioContext();\n });\n function normalizeNonEmptyString(value) {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed ? trimmed : null;\n }\n function ms(value) {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n }\n function clampByte(value) {\n return Math.max(0, Math.min(255, Math.round(value)));\n }\n function clamp(value, min, max) {\n return Math.min(max, Math.max(min, value));\n }\n function tintHex(hex, amount) {\n const raw = (hex ?? \"\").trim().replace(/^#/, \"\");\n const expanded = raw.length === 3 ? raw.split(\"\").map((part) => `${part}${part}`).join(\"\") : raw;\n if (expanded.length !== 6 || !/^[0-9a-fA-F]+$/.test(expanded)) return hex;\n const r = parseInt(expanded.slice(0, 2), 16);\n const g = parseInt(expanded.slice(2, 4), 16);\n const b = parseInt(expanded.slice(4, 6), 16);\n const t = Math.abs(Math.max(-1, Math.min(1, amount)));\n const target = amount >= 0 ? 255 : 0;\n 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\")}`;\n }\n function fmtSignedMs(value) {\n if (!Number.isFinite(value)) return \"0 ms\";\n const rounded = Math.round(value);\n if (rounded === 0) return \"0 ms\";\n return `${rounded > 0 ? \"+\" : \"\"}${rounded} ms`;\n }\n function formatRelativeTime(offsetMs) {\n if (!Number.isFinite(offsetMs)) return \"—\";\n const sign = offsetMs < 0 ? \"-\" : \"\";\n const abs = Math.abs(offsetMs);\n if (abs < 1e4) return `${sign}${(abs / 1e3).toFixed(1)}s`;\n if (abs < 6e4) return `${sign}${(abs / 1e3).toFixed(2)}s`;\n const totalSeconds = abs / 1e3;\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds - minutes * 60;\n return `${sign}${minutes}:${seconds.toFixed(1).padStart(4, \"0\")}`;\n }\n function formatScaleStep(valueMs) {\n if (valueMs == null || !Number.isFinite(valueMs) || valueMs <= 0) return \"—\";\n if (valueMs < 1e3) return `${Math.round(valueMs)} ms`;\n if (valueMs < 1e4) return `${Math.round(valueMs)} ms (${(valueMs / 1e3).toFixed(1)} s)`;\n return `${Math.round(valueMs)} ms (${(valueMs / 1e3).toFixed(2)} s)`;\n }\n function spanAttribute(span, key) {\n const attributes = span?.attributes;\n if (!attributes || typeof attributes !== \"object\") return null;\n return attributes[`bosun.${key}`] ?? attributes[`anyvan.${key}`] ?? null;\n }\n function spanStringAttribute(span, key) {\n return normalizeNonEmptyString(spanAttribute(span, key));\n }\n function spanComponent(span) {\n return spanStringAttribute(span, \"component\");\n }\n function shouldIgnoreLatencySpan(span) {\n const name = normalizeNonEmptyString(span?.name);\n if (!name) return false;\n if (HIDDEN_LATENCY_SPAN_NAMES.has(name)) return true;\n if (name.startsWith(\"vad.\") && !RAW_VAD_SPAN_NAMES.has(name)) return true;\n if (name.startsWith(\"stt.\") && !RAW_STT_SPAN_NAMES.has(name)) return true;\n return false;\n }\n function spanLabel(span) {\n const label = spanStringAttribute(span, \"label\");\n if (label) return label;\n if (typeof span?.name === \"string\" && span.name) return span.name;\n return \"span\";\n }\n function describeTrace(trace) {\n const time = typeof trace.createdAt === \"number\" && Number.isFinite(trace.createdAt) ? new Date(trace.createdAt).toLocaleTimeString() : \"unknown time\";\n if (trace.traceType === \"CONVERSATIONAL\") {\n return `Conversational • ${trace.eventName} • ${time}`;\n }\n if (trace.traceType === \"STEP\") {\n return `Step • ${trace.name ?? \"unknown\"} • ${time}`;\n }\n return `API • ${trace.operationName} • ${time}`;\n }\n function spanColorKey(span) {\n const name = typeof span?.name === \"string\" ? span.name : \"\";\n if (name === \"vad.endpointing\") return \"vad.endpointing\";\n if (name.startsWith(\"vad.\")) return \"vad.user_speech\";\n if (name === \"llm.request.ttft\") return \"llm.request\";\n if (name === \"llm.streaming\") return \"llm.streaming\";\n if (name === \"llm_to_tts.buffering\") return \"llm_to_tts.buffering\";\n if (name === \"llm_to_tts.streaming\") return \"llm_to_tts.streaming\";\n if (name === \"tts.generation\") return \"tts.generation\";\n if (name === \"tts_to_audio.buffering\") return \"tts_to_audio.buffering\";\n if (name === \"tts_to_audio.streaming\") return \"tts_to_audio.streaming\";\n if (name.startsWith(\"stt.\")) return \"stt\";\n if (name.startsWith(\"trigger.\")) return \"trigger\";\n const component = spanComponent(span);\n if (component === \"vad\") return \"vad.user_speech\";\n if (component === \"stt\") return \"stt\";\n if (component === \"trigger\") return \"trigger\";\n return \"other\";\n }\n function makePointSpan(name, atMs, attributes) {\n return {\n name,\n startTimeUnixMs: atMs,\n endTimeUnixMs: atMs,\n durationMs: 0,\n attributes\n };\n }\n function buildLatencyDebugSpans(metrics) {\n const debug = metrics?.debug ?? {};\n const ttsAudioStartAtMs = ms(metrics?.timing?.ttsAudioStartAtMs);\n const isPreResponseEvent = (atMs) => ttsAudioStartAtMs == null || atMs <= ttsAudioStartAtMs;\n const built = [];\n let hasRawVad = false;\n let hasRawStt = false;\n const vadEvents = Array.isArray(debug?.vadEvents?.events) ? debug.vadEvents.events : [];\n vadEvents.forEach((event, index) => {\n const atMs = ms(event?.atMs);\n const type = normalizeNonEmptyString(event?.type);\n if (atMs == null || !isPreResponseEvent(atMs) || type !== \"start_of_speech\" && type !== \"end_of_speech\") {\n return;\n }\n hasRawVad = true;\n built.push(makePointSpan(`vad.${type}`, atMs, {\n \"anyvan.component\": \"vad\",\n \"anyvan.label\": type === \"start_of_speech\" ? \"VAD activated\" : \"VAD deactivated\",\n \"anyvan.description\": type === \"start_of_speech\" ? \"Raw VAD START_OF_SPEECH event\" : \"Raw VAD END_OF_SPEECH event\",\n \"anyvan.eventIndex\": index,\n \"anyvan.samplesIndex\": typeof event?.samplesIndex === \"number\" ? event.samplesIndex : void 0,\n \"anyvan.speechDurationMs\": typeof event?.speechDurationMs === \"number\" ? event.speechDurationMs : void 0,\n \"anyvan.silenceDurationMs\": typeof event?.silenceDurationMs === \"number\" ? event.silenceDurationMs : void 0\n }));\n });\n const sttEvents = Array.isArray(debug?.sttEvents?.events) ? debug.sttEvents.events : [];\n sttEvents.forEach((event, index) => {\n const atMs = ms(event?.atMs);\n const type = normalizeNonEmptyString(event?.type);\n if (atMs == null || !isPreResponseEvent(atMs) || type !== \"start_of_speech\" && type !== \"interim_transcript\" && type !== \"preflight_transcript\" && type !== \"final_transcript\") {\n return;\n }\n hasRawStt = true;\n const label = type === \"start_of_speech\" ? \"STT start of speech\" : type === \"interim_transcript\" ? \"STT interim transcript\" : type === \"preflight_transcript\" ? \"STT preflight transcript\" : \"STT final transcript\";\n built.push(makePointSpan(`stt.${type}`, atMs, {\n \"anyvan.component\": \"stt\",\n \"anyvan.label\": label,\n \"anyvan.description\": `Raw STT ${type.toUpperCase()} event`,\n \"anyvan.eventIndex\": index,\n \"anyvan.requestId\": typeof event?.requestId === \"string\" ? event.requestId : void 0,\n \"anyvan.text\": normalizeNonEmptyString(event?.text),\n \"anyvan.language\": typeof event?.language === \"string\" || event?.language === null ? event.language : void 0,\n \"anyvan.speakerId\": typeof event?.speakerId === \"string\" || event?.speakerId === null ? event.speakerId : void 0\n }));\n });\n return { spans: built, hasRawVad, hasRawStt };\n }\n function buildSegmentsForMetrics(trace, metrics, prefix) {\n const debugSpans = buildLatencyDebugSpans(metrics);\n const spans = Array.isArray(metrics?.spans) ? metrics.spans.filter((span) => {\n const name = normalizeNonEmptyString(span?.name);\n if (name?.startsWith(\"vad.\") && debugSpans.hasRawVad) return false;\n if (name?.startsWith(\"stt.\") && debugSpans.hasRawStt) return false;\n return !shouldIgnoreLatencySpan(span);\n }) : [];\n const summary = metrics?.summary ?? {};\n const timing = metrics?.timing ?? {};\n const indexed = [...spans, ...debugSpans.spans].map((span, index) => ({ span, index }));\n const used = /* @__PURE__ */ new Set();\n const groupedRows = ROW_DEFS.filter((row) => row.label !== \"LLM→Audio start\" && row.label !== \"Other\").map((row) => {\n const matches = indexed.filter(({ span, index }) => {\n if (used.has(index)) return false;\n const name = typeof span?.name === \"string\" ? span.name : \"\";\n const component = spanComponent(span);\n const nameMatch = Array.isArray(row.names) && name !== \"\" && row.names.includes(name);\n const componentMatch = typeof row.component === \"string\" && component === row.component;\n return nameMatch || componentMatch;\n }).sort((a, b) => (ms(a.span.startTimeUnixMs) ?? 0) - (ms(b.span.startTimeUnixMs) ?? 0));\n for (const match of matches) used.add(match.index);\n return { label: row.label, spans: matches.map((match) => match.span) };\n }).filter((row) => row.spans.length > 0);\n const other = indexed.filter(({ index }) => !used.has(index)).map((entry) => entry.span).sort((a, b) => (ms(a.startTimeUnixMs) ?? 0) - (ms(b.startTimeUnixMs) ?? 0));\n if (other.length) groupedRows.push({ label: \"Other\", spans: other });\n const built = [];\n for (const row of groupedRows) {\n row.spans.forEach((span, index) => {\n const start = ms(span.startTimeUnixMs);\n const end = ms(span.endTimeUnixMs);\n if (start == null || end == null || end < start) return;\n built.push({\n id: `${prefix}:${row.label}:${span.name ?? \"span\"}:${start}:${end}:${index}`,\n row: row.label,\n start,\n end,\n durationMs: Math.max(0, end - start),\n colorKey: spanColorKey(span),\n label: spanLabel(span),\n description: spanStringAttribute(span, \"description\"),\n explain: spanStringAttribute(span, \"explain\"),\n text: spanStringAttribute(span, \"text\"),\n traceLabel: describeTrace(trace)\n });\n });\n }\n const llmRequestStartAtMs = ms(timing?.llmRequestStartAtMs);\n const ttsAudioStartAtMs = ms(timing?.ttsAudioStartAtMs);\n if (llmRequestStartAtMs != null && ttsAudioStartAtMs != null && ttsAudioStartAtMs >= llmRequestStartAtMs) {\n const durationMs = ttsAudioStartAtMs - llmRequestStartAtMs;\n built.push({\n id: `${prefix}:llm_to_audio:${llmRequestStartAtMs}:${ttsAudioStartAtMs}`,\n row: \"LLM→Audio start\",\n start: llmRequestStartAtMs,\n end: ttsAudioStartAtMs,\n durationMs,\n colorKey: durationMs > 800 || Boolean(summary?.problematic) ? \"llm_to_audio.high\" : \"llm_to_audio.ok\",\n label: \"LLM→Audio start\",\n description: \"LLM request start → agent speaking (first audio frame)\",\n explain: durationMs > 800 || Boolean(summary?.problematic) ? \"High latency (>800ms) or problematic timing\" : \"OK\",\n text: null,\n traceLabel: describeTrace(trace)\n });\n }\n return built;\n }\n function buildCallLatencySegments(input) {\n const built = [];\n input.forEach((trace, index) => {\n const metrics = trace?.metrics;\n if (!metrics || typeof metrics !== \"object\") return;\n const key = normalizeNonEmptyString(trace?.traceId) ?? `${trace.traceType}:${trace.createdAt}:${index}`;\n built.push(...buildSegmentsForMetrics(trace, metrics, key));\n });\n return built.sort((a, b) => a.start - b.start || a.end - b.end || a.row.localeCompare(b.row));\n }\n function segmentStyle(segment) {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(duration) || duration <= 0) return null;\n const fill = COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray;\n const border = tintHex(fill, -0.25);\n if (segment.end === segment.start) {\n if (segment.start < viewportStartMs || segment.start > viewportEndMs) return null;\n const pointPercent = clamp((segment.start - viewportStartMs) / duration * 100, 0, 100);\n return `left:calc(${pointPercent}% - 2px);width:4px;background:${fill};border-color:${border};`;\n }\n const visibleStart = Math.max(segment.start, viewportStartMs);\n const visibleEnd = Math.min(segment.end, viewportEndMs);\n if (visibleEnd < visibleStart) return null;\n const leftPercent = (visibleStart - viewportStartMs) / duration * 100;\n const widthPercent = (visibleEnd - visibleStart) / duration * 100;\n return `left:${leftPercent}%;width:max(${widthPercent}%,2px);background:${fill};border-color:${border};`;\n }\n function guideLineStyle(guide) {\n return `left:${guide.leftPercent}%;top:${guide.topPx}px;height:${guide.heightPx}px;border-color:${guide.color};opacity:${guide.opacity};`;\n }\n function buildGuideLines(rows) {\n return [];\n }\n function chooseTickStep(durationMs) {\n const approx = durationMs / 7;\n const magnitude = 10 ** Math.floor(Math.log10(Math.max(1, approx)));\n const normalized = approx / magnitude;\n if (normalized <= 1) return 1 * magnitude;\n if (normalized <= 2) return 2 * magnitude;\n if (normalized <= 5) return 5 * magnitude;\n return 10 * magnitude;\n }\n function buildTicks(startMs, endMs, originMs) {\n const durationMs = endMs - startMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return [];\n const stepMs = chooseTickStep(durationMs);\n const firstTick = Math.ceil((startMs - originMs) / stepMs) * stepMs + originMs;\n const ticks = [];\n for (let tick = firstTick; tick <= endMs; tick += stepMs) {\n const leftPercent = (tick - startMs) / durationMs * 100;\n ticks.push({\n time: tick,\n leftPercent,\n label: formatRelativeTime(tick - originMs)\n });\n }\n return ticks;\n }\n async function closePlaybackAudioContext() {\n const context = playbackAudioContext;\n playbackAudioContext = null;\n if (!context) return;\n await context.close().catch(() => {\n });\n }\n function getPlaybackPositionMs() {\n const durationMs = getRecordingDurationMs();\n if (playbackPlaying && playbackAudioContext && playbackStartedAtMs != null && playbackStartedAtContextTime != null) {\n const elapsedMs = (playbackAudioContext.currentTime - playbackStartedAtContextTime) * 1e3;\n const currentMs = playbackStartedAtMs + Math.max(0, elapsedMs);\n return durationMs > 0 ? clamp(currentMs, 0, durationMs) : Math.max(0, currentMs);\n }\n return durationMs > 0 ? clamp(playbackPositionMs, 0, durationMs) : Math.max(0, playbackPositionMs);\n }\n function stopPlayback(preservePosition = true) {\n if (preservePosition) {\n playbackPositionMs = getPlaybackPositionMs();\n }\n const source = playbackSourceNode;\n playbackSourceNode = null;\n playbackStartedAtMs = null;\n playbackStartedAtContextTime = null;\n playbackPlaying = false;\n if (!source) return;\n source.onended = null;\n try {\n source.stop();\n } catch {\n }\n source.disconnect();\n }\n function getRecordingDurationMs() {\n return 0;\n }\n async function togglePlayback() {\n return;\n }\n function fitViewport(markDirty = true) {\n const extent = contentExtent;\n if (!extent) return;\n const paddingMs = Math.max(500, (extent.max - extent.min) * 0.05);\n viewportStartMs = extent.min - paddingMs;\n viewportEndMs = extent.max + paddingMs;\n }\n function clampViewport(startMs, endMs) {\n const extent = contentExtent;\n if (!extent) return { startMs, endMs };\n const durationMs = endMs - startMs;\n if (durationMs <= 0) return { startMs, endMs };\n const marginMs = Math.max(1e3, durationMs * 0.25);\n const minAllowed = extent.min - marginMs;\n const maxAllowed = extent.max + marginMs;\n if (durationMs >= maxAllowed - minAllowed) {\n return { startMs: minAllowed, endMs: maxAllowed };\n }\n if (startMs < minAllowed) {\n endMs += minAllowed - startMs;\n startMs = minAllowed;\n }\n if (endMs > maxAllowed) {\n startMs -= endMs - maxAllowed;\n endMs = maxAllowed;\n }\n return { startMs, endMs };\n }\n function setViewport(startMs, endMs) {\n if (!Number.isFinite(startMs) || !Number.isFinite(endMs) || endMs <= startMs) return;\n const next = clampViewport(startMs, endMs);\n viewportStartMs = next.startMs;\n viewportEndMs = next.endMs;\n }\n function zoomViewport(factor, focusRatio = 0.5) {\n if (viewportStartMs == null || viewportEndMs == null) return;\n const currentDuration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(currentDuration) || currentDuration <= 0) return;\n const extent = contentExtent;\n const contentDuration = extent ? extent.max - extent.min : currentDuration;\n const minDuration = Math.min(100, currentDuration);\n const maxDuration = Math.max(contentDuration + Math.max(2e3, contentDuration * 0.1), 5e3);\n const nextDuration = clamp(currentDuration * factor, minDuration, maxDuration);\n const nextFocusRatio = clamp(focusRatio, 0, 1);\n const focusMs = viewportStartMs + currentDuration * nextFocusRatio;\n const nextStartMs = focusMs - nextDuration * nextFocusRatio;\n setViewport(nextStartMs, nextStartMs + nextDuration);\n }\n async function resetAlignment() {\n return;\n }\n $$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 `);\n if (conversationId) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<span class=\"text-rc-gray-100\">for conversation Id:</span> <span class=\"text-rc-green-200\">${escape_html(conversationId)}</span>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$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 traces:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(callSegments.length)}</span></div> <div><span class=\"text-rc-gray-400\">Traces with metrics:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(latencyTraceCount)}</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> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (viewportStartMs != null && viewportEndMs != null) {\n $$renderer2.push(\"<!--[-->\");\n $$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>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$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\"/> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: uploadInFlight,\n onclick: () => fileInputEl?.click(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(\"Upload WAV\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: true,\n onclick: () => void togglePlayback(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(playbackPlaying ? \"Pause\" : \"Play\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs == null,\n onclick: () => zoomViewport(0.8),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom in`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs == null,\n onclick: () => zoomViewport(1.25),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom out`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !contentExtent,\n onclick: () => fitViewport(true),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Fit call`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: true,\n onclick: resetAlignment,\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Reset alignment`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----></div></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$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 bg-rc-gray-900/60 p-3\"><div class=\"flex flex-wrap items-start justify-between gap-3\"><div><div class=\"text-sm font-semibold text-rc-gray-100\">Recording</div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<div class=\"mt-1 text-sm text-rc-gray-300\">Upload a WAV recording to overlay the call waveform and persist it under this\n\t\t\t\t\t\t\t\tproject's \\`data/\\` folder.</div>`);\n }\n $$renderer2.push(`<!--]--></div> <div class=\"text-xs text-rc-gray-300\"><div>Drag the latency chart to pan the viewport.</div> <div>Scroll anywhere in the timeline to zoom traces and waveform together.</div> <div>Click the waveform to move the playhead.</div> <div>Press Space to play or pause.</div> <div>Drag the waveform itself to align the audio against the traces.</div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div></div></div> <div class=\"rounded-md border border-rc-gray-650 bg-rc-gray-900/60 p-3\"><div class=\"mb-3 flex items-center justify-between gap-3\"><div class=\"text-sm font-semibold text-rc-gray-100\">Call timeline</div> <div class=\"text-xs text-rc-gray-400\">Shared x-axis for traces and waveform</div></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n if (!callSegments.length) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">No latency metrics were found on this call.</div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n if (viewportStartMs == null || viewportEndMs == null) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">Preparing timeline…</div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<div class=\"grid grid-cols-[140px_minmax(0,1fr)] gap-x-3\"><div class=\"flex flex-col\"><div class=\"h-8\"></div> <!--[-->`);\n const each_array = ensure_array_like(timelineRows);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let row = each_array[$$index];\n $$renderer2.push(`<div class=\"flex h-10 items-center text-xs text-rc-gray-300\">${escape_html(row.label)}</div>`);\n }\n $$renderer2.push(`<!--]--> <div class=\"flex h-40 items-center text-xs text-rc-gray-300\">Waveform</div> <div class=\"flex h-8 items-center text-xs text-rc-gray-300\">Scale</div></div> <div class=\"relative\"><div class=\"pointer-events-none absolute inset-0 z-10 overflow-hidden\"><!--[-->`);\n const each_array_1 = ensure_array_like(guideLines);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let guide = each_array_1[$$index_1];\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l border-dashed\"${attr_style(guideLineStyle(guide))}></div>`);\n }\n $$renderer2.push(`<!--]--> `);\n if (playbackCursor) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"absolute top-0 -translate-x-1/2 border-l-2 border-rc-green-200/90\"${attr_style(`left:${playbackCursor.leftPercent}%;height:${playbackCursor.heightPx}px;`)}></div> <div class=\"absolute top-1 h-2 w-2 -translate-x-1/2 rounded-full bg-rc-green-200\"${attr_style(`left:${playbackCursor.leftPercent}%;`)}></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60 bg-rc-gray-800/30\"><!--[-->`);\n const each_array_2 = ensure_array_like(visibleTicks);\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let tick = each_array_2[$$index_2];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/70\"${attr_style(`left:${tick.leftPercent}%;`)}></div> <div class=\"absolute bottom-1 -translate-x-1/2 whitespace-nowrap text-[11px] text-rc-gray-400\"${attr_style(`left:${tick.leftPercent}%;`)}>${escape_html(tick.label)}</div>`);\n }\n $$renderer2.push(`<!--]--></div> <!--[-->`);\n const each_array_3 = ensure_array_like(timelineRows);\n for (let $$index_5 = 0, $$length = each_array_3.length; $$index_5 < $$length; $$index_5++) {\n let row = each_array_3[$$index_5];\n $$renderer2.push(`<div class=\"relative z-0 h-10 overflow-hidden border-x border-t border-rc-gray-700/60 bg-rc-gray-800/20\"><!--[-->`);\n const each_array_4 = ensure_array_like(visibleTicks);\n for (let $$index_3 = 0, $$length2 = each_array_4.length; $$index_3 < $$length2; $$index_3++) {\n let tick = each_array_4[$$index_3];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_5 = ensure_array_like(row.segments);\n for (let $$index_4 = 0, $$length2 = each_array_5.length; $$index_4 < $$length2; $$index_4++) {\n let segment = each_array_5[$$index_4];\n const style = segmentStyle(segment);\n if (style) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"absolute top-1/2 h-5 -translate-y-1/2 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]\"${attr_style(style)}></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div>`);\n }\n $$renderer2.push(`<!--]--> <div class=\"relative z-0 h-40 overflow-hidden border-x border-t border-rc-gray-700/60 bg-rc-gray-800/30\">`);\n {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"absolute inset-0 flex items-center justify-center px-4 text-sm text-rc-gray-300\">Upload a WAV file to render the call waveform here.</div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_6 = ensure_array_like(visibleTicks);\n for (let $$index_6 = 0, $$length = each_array_6.length; $$index_6 < $$length; $$index_6++) {\n let tick = each_array_6[$$index_6];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative z-0 h-8 overflow-hidden rounded-b border-x border-b border-t border-rc-gray-700/60 bg-rc-gray-800/25\"><div class=\"absolute left-3 top-1/2 -translate-y-1/2 rounded bg-rc-gray-900/80 px-2 py-0.5 text-[11px] text-rc-gray-300\">Grid: ${escape_html(formatScaleStep(visibleTickStepMs))}</div> <!--[-->`);\n const each_array_7 = ensure_array_like(visibleTicks);\n for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {\n let tick = each_array_7[$$index_7];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div> <div class=\"absolute bottom-1 -translate-x-1/2 whitespace-nowrap text-[11px] text-rc-gray-400\"${attr_style(`left:${tick.leftPercent}%;`)}>${escape_html(tick.label)}</div>`);\n }\n $$renderer2.push(`<!--]--></div></div></div>`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div></div></div></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { B as Button } from './Button-CMHzABlu.js';
1
+ import { B as Button } from './Button-qfXYs6Cv.js';
2
2
  import { D as Dropdown } from './Dropdown-DroDbZQ6.js';
3
3
  import { b as attr_class, s as stringify, e as ensure_array_like, a as attr, f as clsx, c as attr_style } from './index2-BpEbpEAf.js';
4
- import { I as Icon } from './Icon-DdOrLZIU.js';
4
+ import { I as Icon } from './Icon-SOvOgynh.js';
5
5
  import { X as escape_html } from './context-B0vutJuA.js';
6
6
  import { t as trpc } from './trpc-client-Bucti7HD.js';
7
7
  import { g as getEditWorkspaceContext, P as Panel } from './edit-workspace-context-BQXwYkgE.js';
8
- import { C as ChatApiCallTrace, a as ChatConversationalTrace, b as ChatStepTrace } from './ChatStepTrace-BWp_rIDm.js';
8
+ import { C as ChatApiCallTrace, a as ChatConversationalTrace, b as ChatStepTrace } from './ChatStepTrace-Bvxmgz7y.js';
9
9
  import { b as chatContent, i as isApiCallTrace, d as isStepTrace, e as isConversationalTrace, l as logContent } from './log-content.svelte-B3ZvaoLs.js';
10
10
  import { I as Input } from './Input-D-7S8dEO.js';
11
11
  import '@trpc/client';
@@ -410,11 +410,13 @@ function PlaygroundChat($$renderer, $$props) {
410
410
  class: className,
411
411
  context,
412
412
  agentId,
413
+ agentType,
413
414
  analyzeDisabled = false,
414
415
  onAnalyzeTrace,
415
416
  onRegenerateTrace,
416
417
  onRevertToState,
417
418
  onSeeVariants,
419
+ onHangup,
418
420
  variantSourceTrace = null,
419
421
  variantChoices = [],
420
422
  variantLoading = false,
@@ -514,7 +516,7 @@ function PlaygroundChat($$renderer, $$props) {
514
516
  return null;
515
517
  }
516
518
  function isRenderableConversationalMessage(trace) {
517
- return trace.eventName === "received-message" || trace.eventName === "llm-handler-stream-requested" || trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message" || trace.eventName === "transfer-requested";
519
+ return trace.eventName === "received-message" || trace.eventName === "llm-handler-stream-requested" || trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message" || trace.eventName === "transfer-requested" || trace.eventName === "hangup-requested";
518
520
  }
519
521
  function isVariantEligibleTrace(trace) {
520
522
  return !!(agentId && agentId.trim()) && trace.eventName !== "transfer-requested" && (trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message");
@@ -540,6 +542,12 @@ function PlaygroundChat($$renderer, $$props) {
540
542
  }
541
543
  });
542
544
  }
545
+ function handleSecondaryChatButton() {
546
+ if (agentType === "text") ;
547
+ else if (agentType === "voice") {
548
+ onHangup?.();
549
+ }
550
+ }
543
551
  const MONTHS_SHORT = [
544
552
  "Jan",
545
553
  "Feb",
@@ -579,6 +587,9 @@ function PlaygroundChat($$renderer, $$props) {
579
587
  return false;
580
588
  });
581
589
  })();
590
+ const controlsDisabled = (() => {
591
+ return chatContent.findLast((e) => isConversationalTrace(e))?.eventName === "hangup-requested";
592
+ })();
582
593
  const lastVariantEligibleTrace = (() => {
583
594
  for (let index = renderableEntries.length - 1; index >= 0; index--) {
584
595
  const entry = renderableEntries[index];
@@ -817,7 +828,7 @@ function PlaygroundChat($$renderer, $$props) {
817
828
  $$renderer4.push(`<div class="absolute bottom-2 left-2 right-2 z-10 flex items-center gap-3 rounded-lg border border-rc-green-450 bg-rc-gray-930/90 px-3 py-3 font-semibold text-rc-gray-100 shadow-inner-white-soft backdrop-blur-3xl"><span>Choose a variant above to continue</span> <button type="button"${attr("disabled", !onRegenerateVariants || variantLoading || variantApplyingId !== null, true)} class="rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-300 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-100 focus:outline-none focus-visible:outline-none disabled:cursor-wait disabled:opacity-50">Regenerate</button> <button type="button" class="rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-300 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-100 focus:outline-none focus-visible:outline-none">Cancel</button></div>`);
818
829
  } else {
819
830
  $$renderer4.push("<!--[!-->");
820
- $$renderer4.push(`<form class="absolute bottom-2 left-2 right-2 z-10 flex gap-2 rounded"><div class="relative flex-1">`);
831
+ $$renderer4.push(`<form><fieldset${attr("disabled", controlsDisabled, true)} class="absolute bottom-2 left-2 right-2 z-10 flex gap-2 disabled:opacity-35"><div class="relative flex-1">`);
821
832
  if (dropdownOpen) {
822
833
  $$renderer4.push("<!--[-->");
823
834
  $$renderer4.push(`<div class="absolute bottom-full left-0 right-0 mb-1 max-h-60 overflow-y-auto rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox"><!--[-->`);
@@ -872,10 +883,23 @@ function PlaygroundChat($$renderer, $$props) {
872
883
  Button($$renderer4, {
873
884
  size: "small",
874
885
  variant: "secondary",
875
- disabled: aiGenerating,
876
- onclick: () => true,
886
+ disabled: aiGenerating || !agentType,
887
+ onclick: handleSecondaryChatButton,
877
888
  children: ($$renderer5) => {
878
- Icon($$renderer5, { name: "paperclip" });
889
+ if (agentType === "text") {
890
+ $$renderer5.push("<!--[-->");
891
+ Icon($$renderer5, { name: "paperclip" });
892
+ } else {
893
+ $$renderer5.push("<!--[!-->");
894
+ if (agentType === "voice") {
895
+ $$renderer5.push("<!--[-->");
896
+ Icon($$renderer5, { name: "hangup" });
897
+ } else {
898
+ $$renderer5.push("<!--[!-->");
899
+ }
900
+ $$renderer5.push(`<!--]-->`);
901
+ }
902
+ $$renderer5.push(`<!--]-->`);
879
903
  },
880
904
  $$slots: { default: true }
881
905
  });
@@ -903,7 +927,7 @@ function PlaygroundChat($$renderer, $$props) {
903
927
  },
904
928
  $$slots: { default: true }
905
929
  });
906
- $$renderer4.push(`<!----></form>`);
930
+ $$renderer4.push(`<!----></fieldset></form>`);
907
931
  }
908
932
  $$renderer4.push(`<!--]-->`);
909
933
  }
@@ -1127,6 +1151,9 @@ function _page($$renderer, $$props) {
1127
1151
  function handleSeeVariants(trace) {
1128
1152
  void requestVariants(trace);
1129
1153
  }
1154
+ function handleHangup() {
1155
+ actions.hangup();
1156
+ }
1130
1157
  function handleRegenerateVariants() {
1131
1158
  const sourceTrace = variantMode?.sourceTrace;
1132
1159
  if (!sourceTrace) return;
@@ -1299,11 +1326,13 @@ function _page($$renderer, $$props) {
1299
1326
  class: "h-full min-w-0",
1300
1327
  context: workspace.context,
1301
1328
  agentId: workspace.agentId,
1329
+ agentType: workspace.agentType,
1302
1330
  analyzeDisabled: analyzeRunning,
1303
1331
  onAnalyzeTrace: handleAnalyzeTrace,
1304
1332
  onRegenerateTrace: handleRegenerateTrace,
1305
1333
  onRevertToState: (stateId) => actions.selectState(stateId),
1306
1334
  onSeeVariants: handleSeeVariants,
1335
+ onHangup: handleHangup,
1307
1336
  variantSourceTrace: variantMode?.sourceTrace ?? null,
1308
1337
  variantChoices: variantMode?.choices ?? [],
1309
1338
  variantLoading: variantMode?.loading ?? false,
@@ -1328,4 +1357,4 @@ function _page($$renderer, $$props) {
1328
1357
  }
1329
1358
 
1330
1359
  export { _page as default };
1331
- //# sourceMappingURL=_page.svelte-Bqd9YZKg.js.map
1360
+ //# sourceMappingURL=_page.svelte-c2LBV2K4.js.map