@recombine-ai/bosun 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/build/client/_app/immutable/assets/{0.b0jhAoSC.css → 0.FwR3B_mV.css} +1 -1
  2. package/build/client/_app/immutable/assets/0.FwR3B_mV.css.br +0 -0
  3. package/build/client/_app/immutable/assets/{0.b0jhAoSC.css.gz → 0.FwR3B_mV.css.gz} +0 -0
  4. package/build/client/_app/immutable/chunks/BD9x_mnu.js +1 -0
  5. package/build/client/_app/immutable/chunks/BD9x_mnu.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BD9x_mnu.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{lmnC3bvv.js → Bj8jfBTi.js} +1 -1
  8. package/build/client/_app/immutable/chunks/Bj8jfBTi.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/Bj8jfBTi.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/CX0Ekq8t.js +1 -0
  11. package/build/client/_app/immutable/chunks/CX0Ekq8t.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/CX0Ekq8t.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{ChVBNPUb.js → CXESoUel.js} +1 -1
  14. package/build/client/_app/immutable/chunks/CXESoUel.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/CXESoUel.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{E9rdsnHb.js → DCuEIs0S.js} +1 -1
  17. package/build/client/_app/immutable/chunks/DCuEIs0S.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/DCuEIs0S.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/DgGeUDDh.js +1 -0
  20. package/build/client/_app/immutable/chunks/DgGeUDDh.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/DgGeUDDh.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/_U9sB4BM.js +3 -0
  23. package/build/client/_app/immutable/chunks/_U9sB4BM.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/_U9sB4BM.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/{app.BY5DP2K_.js → app.Du7JgOF0.js} +2 -2
  26. package/build/client/_app/immutable/entry/app.Du7JgOF0.js.br +0 -0
  27. package/build/client/_app/immutable/entry/app.Du7JgOF0.js.gz +0 -0
  28. package/build/client/_app/immutable/entry/start.BssSvo4L.js +1 -0
  29. package/build/client/_app/immutable/entry/start.BssSvo4L.js.br +2 -0
  30. package/build/client/_app/immutable/entry/start.BssSvo4L.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{0.Cao0LJwW.js → 0.EJrjlOP2.js} +1 -1
  32. package/build/client/_app/immutable/nodes/0.EJrjlOP2.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/0.EJrjlOP2.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{1.Kjgu6yxL.js → 1.BX3yW9Ki.js} +1 -1
  35. package/build/client/_app/immutable/nodes/1.BX3yW9Ki.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/1.BX3yW9Ki.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/10.HnX8Jhtn.js +13 -0
  38. package/build/client/_app/immutable/nodes/10.HnX8Jhtn.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/10.HnX8Jhtn.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{17.COHkD98p.js → 17.DQQN2LTu.js} +3 -3
  41. package/build/client/_app/immutable/nodes/17.DQQN2LTu.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/17.DQQN2LTu.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{18.DQVit7Md.js → 18.Dx1VeGYs.js} +1 -1
  44. package/build/client/_app/immutable/nodes/18.Dx1VeGYs.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/18.Dx1VeGYs.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{2.DVwYttKv.js → 2.BSZUitGm.js} +1 -1
  47. package/build/client/_app/immutable/nodes/2.BSZUitGm.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/{2.DVwYttKv.js.gz → 2.BSZUitGm.js.gz} +0 -0
  49. package/build/client/_app/immutable/nodes/{3.BhmyTb3R.js → 3.D2P9M-PP.js} +1 -1
  50. package/build/client/_app/immutable/nodes/3.D2P9M-PP.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/3.D2P9M-PP.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{4.CxATX0ci.js → 4.Cx97sxk5.js} +1 -1
  53. package/build/client/_app/immutable/nodes/4.Cx97sxk5.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/4.Cx97sxk5.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{5.Dal1qxB1.js → 5.BAliV6Wc.js} +1 -1
  56. package/build/client/_app/immutable/nodes/5.BAliV6Wc.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/5.BAliV6Wc.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{6.iAOxBhJw.js → 6.CmUnus-n.js} +1 -1
  59. package/build/client/_app/immutable/nodes/6.CmUnus-n.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/6.CmUnus-n.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{8.DFhKu3dp.js → 8.DLYtZXzs.js} +1 -1
  62. package/build/client/_app/immutable/nodes/8.DLYtZXzs.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/8.DLYtZXzs.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{9.DRIEv5m9.js → 9.DQ0jyQBU.js} +1 -1
  65. package/build/client/_app/immutable/nodes/9.DQ0jyQBU.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/9.DQ0jyQBU.js.gz +0 -0
  67. package/build/client/_app/version.json +1 -1
  68. package/build/client/_app/version.json.br +0 -0
  69. package/build/client/_app/version.json.gz +0 -0
  70. package/build/server/chunks/{0-CIzAMtA3.js → 0-DB4bFp_f.js} +3 -3
  71. package/build/server/chunks/{0-CIzAMtA3.js.map → 0-DB4bFp_f.js.map} +1 -1
  72. package/build/server/chunks/{1-D1heuNbf.js → 1-kigiZghR.js} +2 -2
  73. package/build/server/chunks/{1-D1heuNbf.js.map → 1-kigiZghR.js.map} +1 -1
  74. package/build/server/chunks/{10-CjLtjXyZ.js → 10-C49_L5kn.js} +3 -3
  75. package/build/server/chunks/10-C49_L5kn.js.map +1 -0
  76. package/build/server/chunks/{17-DklEmmOx.js → 17-Dbb76ckK.js} +3 -3
  77. package/build/server/chunks/17-Dbb76ckK.js.map +1 -0
  78. package/build/server/chunks/18-CvqluQBN.js +9 -0
  79. package/build/server/chunks/18-CvqluQBN.js.map +1 -0
  80. package/build/server/chunks/{2-DCrAVYXs.js → 2-JGarRt-z.js} +4 -4
  81. package/build/server/chunks/2-JGarRt-z.js.map +1 -0
  82. package/build/server/chunks/{3-BpTqa4DU.js → 3-CnXV_OO3.js} +2 -2
  83. package/build/server/chunks/{3-BpTqa4DU.js.map → 3-CnXV_OO3.js.map} +1 -1
  84. package/build/server/chunks/{4-B7GjwQzI.js → 4-B-XLuotH.js} +2 -2
  85. package/build/server/chunks/{4-B7GjwQzI.js.map → 4-B-XLuotH.js.map} +1 -1
  86. package/build/server/chunks/{5-XjS__bcp.js → 5-Cumig7Am.js} +2 -2
  87. package/build/server/chunks/{5-XjS__bcp.js.map → 5-Cumig7Am.js.map} +1 -1
  88. package/build/server/chunks/{6-DWkWptmB.js → 6-Ez7v6PpX.js} +2 -2
  89. package/build/server/chunks/{6-DWkWptmB.js.map → 6-Ez7v6PpX.js.map} +1 -1
  90. package/build/server/chunks/{8-_swAx6gL.js → 8-COGeKy3N.js} +3 -3
  91. package/build/server/chunks/{8-_swAx6gL.js.map → 8-COGeKy3N.js.map} +1 -1
  92. package/build/server/chunks/9-DlMHnRdZ.js +9 -0
  93. package/build/server/chunks/9-DlMHnRdZ.js.map +1 -0
  94. package/build/server/chunks/Panel-D0IY1AzO.js +11 -0
  95. package/build/server/chunks/Panel-D0IY1AzO.js.map +1 -0
  96. package/build/server/chunks/{_layout.svelte-PtdpfgwJ.js → _layout.svelte-Blfto3jh.js} +82 -12
  97. package/build/server/chunks/_layout.svelte-Blfto3jh.js.map +1 -0
  98. package/build/server/chunks/{_page.svelte-Cu8a_kUO.js → _page.svelte-B1erTzoN.js} +3 -2
  99. package/build/server/chunks/_page.svelte-B1erTzoN.js.map +1 -0
  100. package/build/server/chunks/{_page.svelte-BTKQMuSz.js → _page.svelte-DhhqK6z3.js} +12 -85
  101. package/build/server/chunks/_page.svelte-DhhqK6z3.js.map +1 -0
  102. package/build/server/chunks/{_page.svelte-C3gizoSD.js → _page.svelte-xf-0yXQM.js} +3 -2
  103. package/build/server/chunks/_page.svelte-xf-0yXQM.js.map +1 -0
  104. package/build/server/chunks/edit-workspace-context-biaZqjOf.js +6 -0
  105. package/build/server/chunks/edit-workspace-context-biaZqjOf.js.map +1 -0
  106. package/build/server/index.js +1 -1
  107. package/build/server/index.js.map +1 -1
  108. package/build/server/manifest.js +13 -13
  109. package/build/server/manifest.js.map +1 -1
  110. package/package.json +1 -1
  111. package/src/backend/lib/project-api.ts +6 -0
  112. package/src/backend/roleplay/agents.ts +1 -1
  113. package/src/backend/tests/academy.ts +35 -39
  114. package/src/backend/tests/context-utils.ts +0 -12
  115. package/src/backend/tests/data.spec.ts +21 -14
  116. package/src/backend/tests/data.ts +21 -124
  117. package/src/backend/tests/pii-sanitized-test-drafts.spec.ts +6 -5
  118. package/src/backend/tests/pii-sanitized-test-drafts.ts +2 -2
  119. package/src/backend/tests/router.ts +26 -99
  120. package/src/backend/tests/suite.spec.ts +82 -34
  121. package/src/backend/tests/suite.ts +145 -84
  122. package/build/client/_app/immutable/assets/0.b0jhAoSC.css.br +0 -0
  123. package/build/client/_app/immutable/chunks/BTX1tKMW.js +0 -1
  124. package/build/client/_app/immutable/chunks/BTX1tKMW.js.br +0 -0
  125. package/build/client/_app/immutable/chunks/BTX1tKMW.js.gz +0 -0
  126. package/build/client/_app/immutable/chunks/BVxLHCs8.js +0 -1
  127. package/build/client/_app/immutable/chunks/BVxLHCs8.js.br +0 -0
  128. package/build/client/_app/immutable/chunks/BVxLHCs8.js.gz +0 -0
  129. package/build/client/_app/immutable/chunks/ChVBNPUb.js.br +0 -0
  130. package/build/client/_app/immutable/chunks/ChVBNPUb.js.gz +0 -0
  131. package/build/client/_app/immutable/chunks/E9rdsnHb.js.br +0 -0
  132. package/build/client/_app/immutable/chunks/E9rdsnHb.js.gz +0 -0
  133. package/build/client/_app/immutable/chunks/Z1_c4us_.js +0 -3
  134. package/build/client/_app/immutable/chunks/Z1_c4us_.js.br +0 -0
  135. package/build/client/_app/immutable/chunks/Z1_c4us_.js.gz +0 -0
  136. package/build/client/_app/immutable/chunks/lmnC3bvv.js.br +0 -0
  137. package/build/client/_app/immutable/chunks/lmnC3bvv.js.gz +0 -0
  138. package/build/client/_app/immutable/entry/app.BY5DP2K_.js.br +0 -0
  139. package/build/client/_app/immutable/entry/app.BY5DP2K_.js.gz +0 -0
  140. package/build/client/_app/immutable/entry/start.BeIIwvvV.js +0 -1
  141. package/build/client/_app/immutable/entry/start.BeIIwvvV.js.br +0 -0
  142. package/build/client/_app/immutable/entry/start.BeIIwvvV.js.gz +0 -0
  143. package/build/client/_app/immutable/nodes/0.Cao0LJwW.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/0.Cao0LJwW.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/1.Kjgu6yxL.js.br +0 -0
  146. package/build/client/_app/immutable/nodes/1.Kjgu6yxL.js.gz +0 -0
  147. package/build/client/_app/immutable/nodes/10.yW2mHq85.js +0 -12
  148. package/build/client/_app/immutable/nodes/10.yW2mHq85.js.br +0 -0
  149. package/build/client/_app/immutable/nodes/10.yW2mHq85.js.gz +0 -0
  150. package/build/client/_app/immutable/nodes/17.COHkD98p.js.br +0 -0
  151. package/build/client/_app/immutable/nodes/17.COHkD98p.js.gz +0 -0
  152. package/build/client/_app/immutable/nodes/18.DQVit7Md.js.br +0 -0
  153. package/build/client/_app/immutable/nodes/18.DQVit7Md.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/2.DVwYttKv.js.br +0 -0
  155. package/build/client/_app/immutable/nodes/3.BhmyTb3R.js.br +0 -0
  156. package/build/client/_app/immutable/nodes/3.BhmyTb3R.js.gz +0 -0
  157. package/build/client/_app/immutable/nodes/4.CxATX0ci.js.br +0 -0
  158. package/build/client/_app/immutable/nodes/4.CxATX0ci.js.gz +0 -0
  159. package/build/client/_app/immutable/nodes/5.Dal1qxB1.js.br +0 -0
  160. package/build/client/_app/immutable/nodes/5.Dal1qxB1.js.gz +0 -0
  161. package/build/client/_app/immutable/nodes/6.iAOxBhJw.js.br +0 -0
  162. package/build/client/_app/immutable/nodes/6.iAOxBhJw.js.gz +0 -0
  163. package/build/client/_app/immutable/nodes/8.DFhKu3dp.js.br +0 -0
  164. package/build/client/_app/immutable/nodes/8.DFhKu3dp.js.gz +0 -0
  165. package/build/client/_app/immutable/nodes/9.DRIEv5m9.js.br +0 -0
  166. package/build/client/_app/immutable/nodes/9.DRIEv5m9.js.gz +0 -0
  167. package/build/server/chunks/10-CjLtjXyZ.js.map +0 -1
  168. package/build/server/chunks/17-DklEmmOx.js.map +0 -1
  169. package/build/server/chunks/18-BJS-eRcz.js +0 -9
  170. package/build/server/chunks/18-BJS-eRcz.js.map +0 -1
  171. package/build/server/chunks/2-DCrAVYXs.js.map +0 -1
  172. package/build/server/chunks/9-NEe24O4u.js +0 -9
  173. package/build/server/chunks/9-NEe24O4u.js.map +0 -1
  174. package/build/server/chunks/ContextEditor-ngRBOJVc.js +0 -89
  175. package/build/server/chunks/ContextEditor-ngRBOJVc.js.map +0 -1
  176. package/build/server/chunks/_layout.svelte-PtdpfgwJ.js.map +0 -1
  177. package/build/server/chunks/_page.svelte-BTKQMuSz.js.map +0 -1
  178. package/build/server/chunks/_page.svelte-C3gizoSD.js.map +0 -1
  179. package/build/server/chunks/_page.svelte-Cu8a_kUO.js.map +0 -1
  180. package/build/server/chunks/edit-workspace-context-BEioXKWB.js +0 -12
  181. package/build/server/chunks/edit-workspace-context-BEioXKWB.js.map +0 -1
  182. package/src/backend/tests/config.ts +0 -30
  183. /package/build/client/_app/immutable/assets/{steps.CLTyHc88.css → Popper.CLTyHc88.css} +0 -0
  184. /package/build/client/_app/immutable/assets/{steps.CLTyHc88.css.br → Popper.CLTyHc88.css.br} +0 -0
  185. /package/build/client/_app/immutable/assets/{steps.CLTyHc88.css.gz → Popper.CLTyHc88.css.gz} +0 -0
@@ -1,3 +1,3 @@
1
- import{d as ds,b as Re,e as pe,a as x,f as L,t as Ie,c as us}from"../chunks/Ca197UDq.js";import{a as fs}from"../chunks/C39ai1md.js";import{p as ps,w,x as z,d as te,f as vt,t as S,a as vs,j as r,n as T,c as y,y as i,s as m,r as h,o as Ce,T as ms}from"../chunks/CxLomzuE.js";import{s as I}from"../chunks/DJriQKD9.js";import{i as D}from"../chunks/Buo-57fF.js";import{e as re,i as hs}from"../chunks/BJTwdUYr.js";import{c as mt,s as et}from"../chunks/CAjPRvNs.js";import{s as N}from"../chunks/D-B5X35l.js";import{b as Be}from"../chunks/BLu86SbA.js";import{p as $n}from"../chunks/ChVBNPUb.js";import{B as Ne}from"../chunks/CVlsAO8k.js";import{P as Rn,i as bs}from"../chunks/BTX1tKMW.js";import{g as _r,T as xs}from"../chunks/JcG4w2gF.js";import{b as In,f as Cn,R as ys}from"../chunks/T0seCQS_.js";import{g as gs,c as Nt}from"../chunks/CaHl3dME.js";const On="bosun.traces.latencyTimelineViewports.v2",Dt=new Map;let Bn=!1;function Wn(B){if(!B||typeof B!="object")return!1;const E=B;return typeof E.startMs=="number"&&Number.isFinite(E.startMs)&&typeof E.endMs=="number"&&Number.isFinite(E.endMs)&&E.endMs>E.startMs&&typeof E.originMs=="number"&&Number.isFinite(E.originMs)}function ws(B,E){if(!Number.isFinite(E))return{...B};const ne=E-B.originMs;return{startMs:B.startMs+ne,endMs:B.endMs+ne,originMs:E}}function Hn(){if(!Bn&&(Bn=!0,!(typeof window>"u")))try{const B=window.sessionStorage.getItem(On);if(!B)return;const E=JSON.parse(B);if(!E||typeof E!="object"||Array.isArray(E))return;for(const[ne,Y]of Object.entries(E))!ne||!Wn(Y)||Dt.set(ne,Y)}catch{}}function _s(){if(!(typeof window>"u"))try{window.sessionStorage.setItem(On,JSON.stringify(Object.fromEntries(Dt.entries())))}catch{}}function Ts(B){if(!B)return null;Hn();const E=Dt.get(B);return E?{...E}:null}function Nn(B,E){!B||!Wn(E)||(Hn(),Dt.set(B,{...E}),_s())}var Ms=L('<span class="text-rc-gray-100">for conversation Id:</span> <span class="text-rc-green-200"> </span>',1),Ss=L('<div><span class="text-rc-gray-400">Playhead:</span> <span class="font-mono text-rc-gray-100"> </span></div>'),Ls=L('<div><span class="text-rc-gray-400">Viewport:</span> <span class="font-mono text-rc-gray-100"> </span></div>'),Ps=L('<div class="mt-2 text-sm text-rc-gray-400"> </div>'),Ft=L('<div class="mt-2 text-sm text-red-300"> </div>'),Es=L('<div class="text-sm text-rc-gray-300">Loading latency events…</div>'),ks=L('<div class="text-sm text-rc-gray-300">No latency events were found on this call.</div>'),As=L('<div class="text-sm text-rc-gray-300">Preparing timeline…</div>'),$s=L('<div class="flex items-center text-xs text-rc-gray-300"> </div>'),Rs=L('<div class="flex items-center text-xs text-rc-gray-300">Waveform</div>'),Is=L('<div class="absolute -translate-x-1/2 border-l border-rc-gray-300/40"></div>'),Cs=L('<div class="absolute -translate-x-1/2 border-l border-dashed"></div>'),Bs=L('<div class="absolute border-l border-rc-gray-200/80"></div>'),Ns=L('<div class="absolute -translate-x-1/2 border-l-2 border-rc-green-200/90"></div> <div class="absolute h-2 w-2 -translate-x-1/2 rounded-full bg-rc-green-200"></div>',1),Fs=L('<div class="absolute inset-y-0 w-px bg-rc-gray-700/70"></div> <div> </div>',1),Fn=L('<div class="absolute inset-y-0 w-px bg-rc-gray-700/60"></div>'),Ds=L('<span class="block truncate"> </span>'),Os=L("<div><!></div>"),Ws=L('<div class="relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60"><!> <!></div>'),Hs=L('<div class="absolute inset-y-0 w-px bg-rc-gray-700/45"></div>'),Dn=L("<div> </div>"),Vs=L('<div class="absolute inset-0 flex items-center justify-center px-4 text-sm text-rc-gray-300">Decoding waveform…</div>'),Us=L('<div class="absolute inset-0 flex items-center justify-center px-4 text-sm text-red-300"> </div>'),qs=L('<canvas class="absolute inset-0 h-full w-full"></canvas>'),Ks=L('<div class="relative z-0 overflow-hidden rounded-b border-x border-b border-t border-rc-gray-700/60"><!> <!></div>'),js=L('<div class="grid grid-cols-[140px_minmax(0,1fr)] gap-x-3"><div class="flex flex-col"><div class="h-8"></div> <!> <div class="flex items-center text-xs text-rc-gray-300">Human</div> <!></div> <div class="relative"><div class="pointer-events-none absolute inset-0 z-10 overflow-hidden"><!> <!> <!> <!></div> <div class="relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60"></div> <!> <div><div class="absolute inset-x-0 top-0 border-b border-rc-gray-700/50"></div> <!> <!></div> <!></div></div>'),Xs=L('<div class="pointer-events-none z-popover max-w-[28rem] rounded-md border border-rc-gray-500/80 bg-rc-gray-900/95 px-3 py-2 text-xs text-rc-gray-100 shadow-2xl backdrop-blur-sm"></div>'),zs=L('<div><div class="whitespace-pre-wrap break-words"> </div></div>'),Ys=L('<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 <!></h2> <div class="mt-2 flex flex-wrap gap-x-5 gap-y-1 text-xs text-rc-gray-300"><div><span class="text-rc-gray-400">Latency events:</span> <span class="font-mono text-rc-gray-100"> </span></div> <div><span class="text-rc-gray-400">Timeline items:</span> <span class="font-mono text-rc-gray-100"> </span></div> <div><span class="text-rc-gray-400">Recording offset:</span> <span class="font-mono text-rc-gray-100"> </span></div> <!> <!></div></div> <div class="flex flex-wrap items-center gap-2"><input type="file" accept=".wav,audio/wav,audio/x-wav" class="hidden"/> <!> <!> <!> <!> <!> <!> <!></div></div> <!> <!> <!> <!> <!></div> <div class="rc-scroll min-h-0 flex-1 overflow-auto p-4"><div class="flex flex-col gap-4"><div class="rounded-md border border-rc-gray-650 p-3"><!></div></div></div></div> <!> <!>',1);function fi(B,E){ps(E,!0);const ne=30,Y=32,Me=ne,ae=5,Ot=160,Tr=ne+ae,Mr=3,Vn=8,Fe=60,Un=132,qn=200,Kn=24,Sr=500,Lr=2500,ht=3e4,jn=50,Xn=.00145,Pr=137,Er=250,zn=new Set(["VAD","Playback"]),tt=new xs(fetch),C={blue:"#569cd6",green:"#93FF6D",greenDark:"#00B58A",orange:"#ce9178",purple:"#81147D",red:"#FF6666",gray:"#767676"},kr=[{label:"VAD",eventTypes:["vad.activated","vad.deactivated"]},{label:"STT",eventTypes:["stt.started","stt.interim","stt.final","stt.final_transcript"]},{label:"Trigger",eventTypes:["speech.created"]},{label:"Reply Pending",eventTypes:["reply.pending.started","reply.pending.completed"]},{label:"LLM Transport",eventTypes:["llm.connect_tcp.started","llm.connect_tcp.completed","llm.connect_tcp.failed","llm.start_tls.started","llm.start_tls.completed","llm.start_tls.failed"]},{label:"LLM Wait",eventTypes:["llm.wait.started","llm.requested","llm.wait.completed"]},{label:"LLM Stream",eventTypes:["llm.stream.started","llm.first_token","llm.completed","llm.stream.completed"]},{label:"TTS Text",eventTypes:["tts.text.first_sent","tts.text.completed"]},{label:"Provider",eventTypes:["tts.provider.started","tts.audio.first_received","tts.audio.last_received","tts.provider.completed"]},{label:"Decode",eventTypes:["tts.decode.started","tts.decode.completed"]},{label:"Output Queue",eventTypes:["audio.output.wait.started","audio.output.wait.completed"]},{label:"Playback",eventTypes:["audio.playback.started","audio.playback.stopped","audio.playback.ended"]},{label:"Response Latency"},{label:"Interruptions",eventTypes:["interruption.detected","audio.playback.interrupted"]},{label:"Other"}],Yn=new Set(kr.map(e=>e.label)),Ar={call:Z(C.gray,.2),vad:Z(C.purple,.35),stt:Z(C.purple,.2),trigger:C.greenDark,"response.latency.ok":C.green,"response.latency.high":C.red,"reply.pending":Z(C.greenDark,.18),"llm.transport":Z(C.blue,.18),"llm.wait":Z(C.blue,-.25),"llm.stream":C.blue,"tts.text":C.orange,"tts.provider.lifecycle":Z(C.purple,-.18),"tts.provider":Z(C.purple,.12),"tts.decode":Z(C.orange,-.12),"audio.output.wait":C.orange,playback:Z(C.greenDark,-.08),interruption:C.orange,other:C.gray},Gn=[{startEventType:"reply.pending.started",endEventType:"reply.pending.completed",row:"Reply Pending",colorKey:"reply.pending",label:"Reply pending",description:"Derived from adjacent reply-pending lifecycle events"},{startEventType:"llm.connect_tcp.started",endEventType:"llm.connect_tcp.completed",row:"LLM Transport",colorKey:"llm.transport",label:"Connect TCP",description:"Derived from adjacent TCP connect lifecycle events"},{startEventType:"llm.start_tls.started",endEventType:"llm.start_tls.completed",row:"LLM Transport",colorKey:"llm.transport",label:"Start TLS",description:"Derived from adjacent TLS lifecycle events"},{startEventType:"llm.wait.started",endEventType:"llm.wait.completed",row:"LLM Wait",colorKey:"llm.wait",label:"LLM wait",description:"Derived from adjacent LLM wait lifecycle events"},{startEventType:"llm.stream.started",endEventType:"llm.stream.completed",row:"LLM Stream",colorKey:"llm.stream",label:"LLM stream",description:"Derived from adjacent LLM stream lifecycle events"},{startEventType:"tts.text.first_sent",endEventType:"tts.text.completed",row:"TTS Text",colorKey:"tts.text",label:"TTS text send",description:"Derived from adjacent TTS text send and completion events"},{startEventType:"tts.provider.started",endEventType:"tts.audio.first_received",row:"Provider",colorKey:"tts.provider.lifecycle",label:"Provider wait",description:"Derived from adjacent provider start and first-audio events"},{startEventType:"tts.audio.first_received",endEventType:"tts.provider.completed",row:"Provider",colorKey:"tts.provider",label:"Provider audio",description:"Derived from adjacent provider first-audio and completion events"},{startEventType:"tts.decode.started",endEventType:"tts.decode.completed",row:"Decode",colorKey:"tts.decode",label:"Decode",description:"Derived from adjacent local decode lifecycle events"},{startEventType:"audio.output.wait.started",endEventType:"audio.output.wait.completed",row:"Output Queue",colorKey:"audio.output.wait",label:"Output queue",description:"Derived from adjacent audio-output wait lifecycle events"},{startEventType:"audio.playback.started",endEventType:"audio.playback.stopped",row:"Playback",colorKey:"playback",label:"Playback",description:"Derived from adjacent playback start and playback stop events"}],Zn=new Map(Gn.map(e=>[e.startEventType,e]));function $r(){return{exists:!1,audioUrl:null,fileName:null,mimeType:null,size:null,uploadedAt:null,alignmentOffsetMs:0}}const De=gs(),Wt=_r()??"",Jn=$n.params.conversationId??"",Qn=Nt(Jn,Wt),b=De.latency.get(Qn);tt.setSourceId(Wt||void 0);let Ht=w(z(Wt)),Se=w(z((b==null?void 0:b.conversation)??null)),q=w(z((b==null?void 0:b.traces)??[])),oe=w(z((b==null?void 0:b.conversationTraces)??[])),Le=w(z((b==null?void 0:b.dataLoaded)??!1)),Oe=w(!1),We=w(z((b==null?void 0:b.error)??null)),A=w(z((b==null?void 0:b.recording)??$r())),He=w(z((b==null?void 0:b.recordingLoaded)??!1)),bt=w(!1),ve=w(z((b==null?void 0:b.recordingError)??null)),xt=w(!1),K=w(z((b==null?void 0:b.waveform)??null)),Ve=w(!1),Pe=w(z((b==null?void 0:b.waveformError)??null)),G=w(z((b==null?void 0:b.playbackPositionMs)??0)),ce=w(!1),de=w(null),Vt=w(!1),me=w(null),se=w(z((b==null?void 0:b.viewDirty)??!1)),p=w(null),_=w(null),ie=w(null),Ut=w(null),he=w(0),qt=w(null),Kt=w(null),Ue=w(0),jt=w(0),Xt=w(null),qe=w(null),rt=w(null),zt=w(null),nt=w(null),at=w(null),Yt=w(null),ot=w(z((b==null?void 0:b.humanSpeechBubbleReservedLevels)??1)),Ke=w("idle"),be=w(""),Gt=w(null),yt=0,st=0,gt=0,xe=null,je=0,ue=(b==null?void 0:b.playbackAudioBuffer)??null,le=null,it=null,lt=null,ct=null,dt=null;const Xe=T(()=>$n.params.conversationId);function Rr(e,t){const n=new URLSearchParams;t&&n.set("source",t);const a=n.toString();return`/traces/api/latency/${encodeURIComponent(e)}${a?`?${a}`:""}`}const ut=T(()=>r(Xe)?Rr(r(Xe),r(Ht)):""),W=T(()=>{var t;let e=Number.POSITIVE_INFINITY;for(const n of r(q))typeof n.atMs!="number"||!Number.isFinite(n.atMs)||(e=Math.min(e,n.atMs));return Number.isFinite(e)?e:typeof((t=r(Se))==null?void 0:t.createdAt)=="number"&&Number.isFinite(r(Se).createdAt)?r(Se).createdAt:Number.isFinite(e)?e:0}),Ee=T(()=>Ja(r(q))),ea=T(()=>r(q).length),Ir=T(()=>Aa()),Cr=T(()=>Ia(r(Ee),r(Ir))),ta=T(()=>[...r(Ee).map(t=>{const n=r(Cr).bySegmentId.get(t.id);return!n||t.row!=="Playback"||t.durationMs<=0?t:{...t,speechText:n.text,speechFullText:n.fullText,speechTraceLabel:n.traceLabel}}),...Ca(r(Ir),r(Cr).responseIds)]),ke=T(()=>{const e=new Map;for(const t of r(ta)){const n=e.get(t.row);n?n.push(t):e.set(t.row,[t])}return[...kr].reverse().map(t=>({label:t.label,segments:e.get(t.label)??[]})).filter(t=>t.segments.length>0)}),Zt=T(()=>qa()),ra=T(()=>Math.max(r(ot),Yr(r(Zt),"human"))),Br=T(()=>Va(r(Zt))),Jt=T(()=>Ha(r(ra))),Nr=T(()=>r(Jt)),Fr=T(()=>r(ke).length*Me+Math.max(0,r(ke).length-1)*ae),wt=T(()=>r(ke).length>0?ae:0),na=T(()=>Y+r(Fr)+r(wt)),ft=T(()=>r(A).exists),aa=T(()=>r(ft)?ae+Ot:0),oa=T(()=>co(r(ke))),ye=T(()=>r(K)?r(W)+r(A).alignmentOffsetMs:null),Qt=T(()=>Y+r(Fr)+r(wt)+r(Nr)+r(aa)),er=T(()=>r(ye)==null?null:r(ye)+r(G)),ze=T(()=>{const e=r(er);if(e==null||r(p)==null||r(_)==null)return null;const t=r(_)-r(p);return!Number.isFinite(t)||t<=0||e<r(p)||e>r(_)?null:{leftPercent:H((e-r(p))/t*100,0,100),topPx:Y,heightPx:Math.max(1,r(Qt)-Y)}}),Dr=T(()=>{if(r(p)==null||r(_)==null)return null;const e=r(_)-r(p);return!Number.isFinite(e)||e<=0||r(W)<r(p)||r(W)>r(_)?null:{leftPercent:(r(W)-r(p))/e*100,topPx:Y,heightPx:Math.max(1,r(Qt)-Y)}}),Ye=T(()=>{let e=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const n of r(Ee))e=Math.min(e,n.start),t=Math.max(t,n.end);return r(K)&&r(ye)!=null&&(e=Math.min(e,r(ye)),t=Math.max(t,r(ye)+r(K).durationMs)),!Number.isFinite(e)||!Number.isFinite(t)?null:(t<=e&&(t=e+1),{min:e,max:t})}),_t=T(()=>{let e=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const n of r(Ee))Yn.has(n.row)&&(e=Math.min(e,n.start),t=Math.max(t,n.end));return!Number.isFinite(e)||!Number.isFinite(t)?null:(t<=e&&(t=e+1),{min:e,max:t})}),Or=T(()=>{if(r(p)==null||r(_)==null)return null;const e=r(_)-r(p);return e>0?e:null}),Tt=T(()=>r(p)==null||r(_)==null?[]:fo(r(p),r(_),r(W))),sa=T(()=>r(qe)?no(r(qe)).split(`
2
- `):[]);te(()=>{const e=r(zt),t=r(rt),n=r(qe);r(p),r(_),!(!e||!t||!n)&&e.update()}),te(()=>{const e=r(Yt),t=r(at),n=r(nt);r(p),r(_),!(!e||!t||!n)&&e.update()}),te(()=>{const e=Yr(r(Zt),"human");e>r(ot)&&i(ot,e,!0)});function Ge(e=r(be)){var s,l;if(!e)return;const t=De.latency.get(e),n={conversation:r(Se),traces:r(q),conversationTraces:r(oe),dataLoaded:r(Le),error:r(We),recording:r(A),recordingLoaded:r(He),recordingError:r(ve),waveform:r(K),waveformError:r(Pe),playbackAudioBuffer:ue,playbackPositionMs:r(G),viewportStartMs:r(p),viewportEndMs:r(_),viewportOriginMs:r(W),viewDirty:r(se),humanSpeechBubbleReservedLevels:r(ot),scrollTop:(t==null?void 0:t.scrollTop)??((s=r(ie))==null?void 0:s.scrollTop)??0,scrollLeft:(t==null?void 0:t.scrollLeft)??((l=r(ie))==null?void 0:l.scrollLeft)??0};De.latency.set(e,n);const a=r(Xe),o=_r()??"";a&&o&&e===Nt(a,"")&&De.latency.set(Nt(a,o),n)}async function ia(e){e&&(await ms(),r(ie)&&(r(ie).scrollTop=e.scrollTop,r(ie).scrollLeft=e.scrollLeft))}function la(){if(!r(be)||!r(ie))return;const e=De.latency.get(r(be));if(!e){Ge();return}e.scrollTop=r(ie).scrollTop,e.scrollLeft=r(ie).scrollLeft}fs(()=>{Wr(),Ge(),xe==null||xe(),ar(),Je(!1),ho()}),te(()=>{const e=r(Xe),t=_r()??"";if(t!==r(Ht)&&i(Ht,t,!0),!e)return;const n=Nt(e,t);if(n===r(be))return;Wr(),Ge(),i(be,n,!0);const a=De.latency.get(n),s=((a==null?void 0:a.viewportStartMs)!=null&&a.viewportEndMs!=null&&typeof a.viewportOriginMs=="number"&&Number.isFinite(a.viewportOriginMs)?{startMs:a.viewportStartMs,endMs:a.viewportEndMs,originMs:a.viewportOriginMs}:null)??Ts(n);i(Gt,s,!0),i(se,s?(a==null?void 0:a.viewDirty)??!0:!1,!0),i(We,(a==null?void 0:a.error)??null,!0),i(ve,(a==null?void 0:a.recordingError)??null,!0),i(me,null),i(Pe,(a==null?void 0:a.waveformError)??null,!0),Je(!1),ue=a!=null&&a.recordingLoaded?a.playbackAudioBuffer:null,i(G,(a==null?void 0:a.playbackPositionMs)??0,!0),i(de,null),i(K,a!=null&&a.recordingLoaded?a.waveform:null,!0),i(Se,a!=null&&a.dataLoaded?a.conversation:null,!0),i(q,a!=null&&a.dataLoaded?a.traces:[],!0),i(oe,a!=null&&a.dataLoaded?a.conversationTraces:[],!0),i(Le,(a==null?void 0:a.dataLoaded)??!1,!0),i(A,a!=null&&a.recordingLoaded?a.recording:$r(),!0),i(He,(a==null?void 0:a.recordingLoaded)??!1,!0),i(p,null),i(_,null),i(ot,(a==null?void 0:a.humanSpeechBubbleReservedLevels)??1,!0),tt.setSourceId(t||void 0),r(Le)?i(Oe,!1):Lo(e),r(He)?i(bt,!1):Po(Rr(e,t)),ia(a)}),te(()=>{const e=r(Gt),t=r(Le),n=r(_t)??r(Ye),a=r(W);if(!e||!t||!n)return;i(Gt,null),i(se,!0);const o=ws(e,a);dr(o.startMs,o.endMs)}),te(()=>{!r(Le)||!(r(_t)??r(Ye))||r(se)||cr(!1)}),te(()=>{const e=r(be),t=r(p),n=r(_);!e||t==null||n==null||Nn(e,{startMs:t,endMs:n,originMs:r(W)})}),te(()=>{const e=r(Ut);if(!e||typeof ResizeObserver>"u")return;i(he,e.clientWidth,!0);const t=new ResizeObserver(n=>{const a=n[0];a&&i(he,a.contentRect.width,!0)});return t.observe(e),()=>t.disconnect()}),te(()=>{const e=r(qt);if(!e||typeof ResizeObserver>"u")return;i(Ue,e.clientWidth,!0),i(jt,e.clientHeight,!0);const t=new ResizeObserver(n=>{const a=n[0];a&&(i(Ue,a.contentRect.width,!0),i(jt,a.contentRect.height,!0))});return t.observe(e),()=>t.disconnect()}),te(()=>{if(!r(A).exists||typeof window>"u")return;const t=n=>{n.code==="Space"&&(n.metaKey||n.ctrlKey||n.altKey||n.shiftKey||wo(n.target)||(n.preventDefault(),rn()))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)}),te(()=>{const e=r(Kt),t=r(K),n=r(ye),a=r(p),o=r(_),s=r(Ue),l=r(jt);!e||!t||n==null||a==null||o==null||mo(e,{peaks:t,recordingStartMs:n,viewportStartMs:a,viewportEndMs:o,width:s,height:l})});function J(e){if(typeof e!="string")return null;const t=e.trim();return t||null}function tr(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function rr(e){return Math.max(0,Math.min(255,Math.round(e)))}function H(e,t,n){return Math.min(n,Math.max(t,e))}function Z(e,t){const n=(e??"").trim().replace(/^#/,""),a=n.length===3?n.split("").map(c=>`${c}${c}`).join(""):n;if(a.length!==6||!/^[0-9a-fA-F]+$/.test(a))return e;const o=parseInt(a.slice(0,2),16),s=parseInt(a.slice(2,4),16),l=parseInt(a.slice(4,6),16),d=Math.abs(Math.max(-1,Math.min(1,t))),u=t>=0?255:0;return`#${rr(o+(u-o)*d).toString(16).padStart(2,"0")}${rr(s+(u-s)*d).toString(16).padStart(2,"0")}${rr(l+(u-l)*d).toString(16).padStart(2,"0")}`}function ca(e){const t=tr(e);return t==null?"—":`${Math.round(t)} ms`}function da(e){if(e==null||!Number.isFinite(e))return"0 ms";const t=Math.round(e);return t===0?"0 ms":`${t>0?"+":""}${t} ms`}function Ze(e){if(!Number.isFinite(e))return"—";const t=e<0?"-":"",n=Math.abs(e);if(n<1e4)return`${t}${(n/1e3).toFixed(1)}s`;if(n<6e4)return`${t}${(n/1e3).toFixed(2)}s`;const a=n/1e3,o=Math.floor(a/60),s=a-o*60;return`${t}${o}:${s.toFixed(1).padStart(4,"0")}`}function ua(e){try{return JSON.stringify(e??null,null,2)}catch{return String(e)}}async function fa(){try{await navigator.clipboard.writeText(ua(r(q))),i(Ke,"ok"),window.setTimeout(()=>{i(Ke,"idle")},2e3)}catch(e){console.error("Failed to copy latency stream",e),i(Ke,"error"),window.setTimeout(()=>{i(Ke,"idle")},3e3)}}function Wr(){!r(be)||r(p)==null||r(_)==null||Nn(r(be),{startMs:r(p),endMs:r(_),originMs:r(W)})}function Q(e){const t=typeof e.createdAt=="number"&&Number.isFinite(e.createdAt)?new Date(e.createdAt).toLocaleTimeString():"unknown time";return e.traceType==="LATENCY"?`Latency • #${e.seq??"?"} • ${e.eventType??"unknown"} • ${t}`:e.traceType==="CONVERSATIONAL"?`Conversational • ${e.eventName} • ${t}`:e.traceType==="STEP"?`Step • ${e.name??"unknown"} • ${t}`:`API • ${e.operationName} • ${t}`}function nr(e){const t=e.payload;return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function pa(e){return e==="call.started"||e==="call.ended"?"Call":e.startsWith("vad.")?"VAD":e.startsWith("stt.")?"STT":e==="speech.created"?"Trigger":e.startsWith("reply.pending.")?"Reply Pending":e.startsWith("llm.connect_tcp.")||e.startsWith("llm.start_tls.")?"LLM Transport":e==="llm.requested"||e.startsWith("llm.wait.")?"LLM Wait":e==="llm.first_token"||e==="llm.completed"||e.startsWith("llm.stream.")?"LLM Stream":e.startsWith("tts.text.")?"TTS Text":e.startsWith("tts.provider.")||e==="tts.audio.first_received"||e==="tts.audio.last_received"?"Provider":e.startsWith("tts.decode.")?"Decode":e.startsWith("audio.output.wait.")?"Output Queue":e==="interruption.detected"||e==="audio.playback.interrupted"?"Interruptions":e.startsWith("audio.playback.")?"Playback":"Other"}function va(e){return e==="call.started"||e==="call.ended"?"call":e.startsWith("vad.")?"vad":e.startsWith("stt.")?"stt":e==="speech.created"?"trigger":e.startsWith("reply.pending.")?"reply.pending":e.startsWith("llm.connect_tcp.")||e.startsWith("llm.start_tls.")?"llm.transport":e==="llm.requested"||e.startsWith("llm.wait.")?"llm.wait":e==="llm.first_token"||e==="llm.completed"||e.startsWith("llm.stream.")?"llm.stream":e.startsWith("tts.text.")?"tts.text":e.startsWith("tts.provider.")?"tts.provider.lifecycle":e==="tts.audio.first_received"||e==="tts.audio.last_received"?"tts.provider":e.startsWith("tts.decode.")?"tts.decode":e.startsWith("audio.output.wait.")?"audio.output.wait":e==="interruption.detected"||e==="audio.playback.interrupted"?"interruption":e.startsWith("audio.playback.")?"playback":"other"}function ma(e){switch(e){case"vad.activated":case"stt.started":return"start";case"vad.deactivated":case"stt.final":case"stt.final_transcript":return"end";default:return null}}function ha(e){switch(e.eventType){case"call.started":return"Call started";case"call.ended":return"Call ended";case"vad.activated":return"VAD activated";case"vad.deactivated":return"VAD deactivated";case"stt.started":return"STT start";case"stt.interim":return"STT interim";case"stt.final":case"stt.final_transcript":return"STT final";case"speech.created":return"Speech created";case"reply.pending.started":return"Reply pending start";case"reply.pending.completed":return"Reply pending end";case"llm.connect_tcp.started":return"Connect TCP start";case"llm.connect_tcp.completed":return"Connect TCP end";case"llm.connect_tcp.failed":return"Connect TCP failed";case"llm.start_tls.started":return"TLS start";case"llm.start_tls.completed":return"TLS end";case"llm.start_tls.failed":return"TLS failed";case"llm.wait.started":return"LLM wait start";case"llm.wait.completed":return"LLM wait end";case"llm.stream.started":return"LLM stream start";case"llm.stream.completed":return"LLM stream end";case"llm.requested":return"LLM request";case"llm.first_token":return"LLM first token";case"llm.completed":return"LLM end";case"tts.text.first_sent":return"TTS first text";case"tts.text.completed":return"TTS text end";case"tts.provider.started":return"Provider start";case"tts.provider.completed":return"Provider end";case"tts.audio.first_received":return"Provider audio received";case"tts.audio.last_received":return"Provider audio end";case"tts.decode.started":return"Decode start";case"tts.decode.completed":return"Decode end";case"audio.output.wait.started":return"Output queue start";case"audio.output.wait.completed":return"Output queue end";case"interruption.detected":return"Interruption detected";case"audio.playback.started":return"Playback start";case"audio.playback.stopped":return"Playback stop";case"audio.playback.ended":return"Playback end";case"audio.playback.interrupted":return"Playback interrupted";default:return e.eventType}}function ba(e){const t=nr(e);switch(e.eventType){case"call.started":return"Call-scoped latency stream started";case"call.ended":return"Call-scoped latency stream ended";case"vad.activated":return"Raw VAD activation event";case"vad.deactivated":return"Raw VAD deactivation event";case"stt.started":return"Speech-to-text detected speech start";case"stt.interim":return J(t.originalType)==="preflight_transcript"?"Speech-to-text preflight transcript":"Speech-to-text interim transcript";case"stt.final":case"stt.final_transcript":return"Speech-to-text final transcript";case"speech.created":return"LiveKit created a speech handle";case"reply.pending.started":return"Reply generation was committed, but downstream generation has not started yet";case"reply.pending.completed":return"Reply generation moved from pending into the LLM request phase";case"llm.connect_tcp.started":return"httpcore started opening a new TCP connection for the LLM request";case"llm.connect_tcp.completed":return"httpcore finished opening a new TCP connection for the LLM request";case"llm.connect_tcp.failed":return"httpcore failed while opening a new TCP connection for the LLM request";case"llm.start_tls.started":return"httpcore started TLS negotiation for the LLM request";case"llm.start_tls.completed":return"httpcore finished TLS negotiation for the LLM request";case"llm.start_tls.failed":return"httpcore failed during TLS negotiation for the LLM request";case"llm.wait.started":return"LLM request is in flight and waiting for the first token";case"llm.wait.completed":return"The LLM wait phase ended when the first token arrived";case"llm.stream.started":return"LLM streaming phase started";case"llm.stream.completed":return"LLM streaming phase ended";case"llm.requested":return"AnyVan received an LLM request";case"llm.first_token":return"First LLM token received";case"llm.completed":return"LLM streaming completed";case"tts.text.first_sent":return"First text chunk sent to the TTS provider";case"tts.text.completed":return"Last non-empty text chunk observed for this TTS stream";case"tts.provider.started":return"Provider lifecycle started when the first non-empty TTS text chunk was sent";case"tts.provider.completed":return"Provider lifecycle ended when the provider stream reported completion";case"tts.audio.first_received":return"First audio chunk received from the TTS provider";case"tts.audio.last_received":return"Last audio chunk received from the TTS provider";case"tts.decode.started":return"First provider audio bytes were handed into the local decode path";case"tts.decode.completed":return"The first decoded audio frame left the local decode path";case"audio.output.wait.started":return"The first local audio frame was handed to the LiveKit audio output";case"audio.output.wait.completed":return"The audio-output wait phase ended when low-level playback actually started";case"interruption.detected":return"User speech overlapped active playback; this does not guarantee playback stopped";case"audio.playback.started":return"First played audio frame";case"audio.playback.stopped":return"Playback lifecycle ended on the Playback row";case"audio.playback.ended":return"Audio playback finished normally";case"audio.playback.interrupted":return"Audio playback ended because the output buffer was interrupted";default:return null}}function Hr(e){const t=nr(e);return J(t.text)}function xa(e){return e.eventType==="stt.final"||e.eventType==="stt.final_transcript"}function fe(e){const t=J(e);return t&&t.replace(/\s+/g," ").trim()||null}function ya(e){const t=nr(e),n=fe(t.text)??fe(t.transcript)??fe(t.finalTranscript)??fe(t.final_transcript)??fe(t.message);if(n)return n;const a=t.alternatives;if(Array.isArray(a))for(const o of a){if(!o||typeof o!="object")continue;const s=fe(o.text);if(s)return s}return null}function Vr(e){return e.traceType==="CONVERSATIONAL"}function Ur(e){return Vr(e)&&e.role.toLowerCase()==="user"&&(e.eventName==="received-message"||e.eventName==="llm-handler-stream-requested")}function qr(e){return Vr(e)&&(e.eventName==="finished-main-streaming-step"||e.eventName==="sent-message")}function Mt(e){return J(e.traceId)??`${e.createdAt}:${e.eventName}:${e.content}`}function ga(e,t){for(let n=t-1;n>=0;n-=1){const a=e[n];if(a.traceType==="CONVERSATIONAL")return a}return null}function wa(e,t){const n=tr(t.startTrace.createdAt),a=tr(t.endTrace.createdAt);if(n==null)return null;for(let o=0;o<e.length;o+=1){const s=e[o];if(!qr(s)||s.createdAt<n-Er||a!=null&&s.createdAt<a-Er)continue;const l=ga(e,o);if(!(!l||!Ur(l)))return s}return null}function Kr(e,t){return t>=e.start&&t<=e.end?0:Math.min(Math.abs(t-e.start),Math.abs(t-e.end))}function _a(e,t,n){const a=t.filter(o=>n.has(o.id)?!1:o.start>=e.end-Sr&&o.start<=e.end+Lr).sort((o,s)=>Math.abs(o.start-e.end)-Math.abs(s.start-e.end));return a[0]?a[0]:t.find(o=>!n.has(o.id)&&o.start<=e.end+Lr&&o.end>=e.end-Sr)??null}function Ta(e,t,n){return t.filter(o=>n.has(o.id)?!1:o.end>=e-ht&&o.start<=e+ht).sort((o,s)=>Kr(o,e)-Kr(s,e))[0]??null}function jr(){for(const e of r(q).slice().sort(pt))if(e.eventType==="call.started"&&Number.isFinite(e.atMs))return e.atMs;return r(W)}function Ma(e,t){const n=t.filter(a=>a.start<=e).sort((a,o)=>o.start-a.start||o.end-a.end)[0];return n?n.end<=e?Math.min(n.end,e):Math.min(n.start,e):Math.min(jr(),e)}function Xr(e){return e.replace(/<[^>]+>/g,"").trim()===""}function Sa(e){return/<WAIT\b[^>]*\/?\s*>/i.test(e)}function La(e){return e.traceType==="STEP"&&bs(e.name)&&J(e.response)!=null}function zr(e){return e.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()}function Pa(e,t){if(e===t)return!0;const n=zr(e),a=zr(t);return n!==""&&n===a}function Ea(e){let t=e-ht,n=e+ht;for(const a of r(oe))if(Ur(a))if(a.createdAt<=e)t=a.createdAt;else{n=a.createdAt;break}return{start:t,end:n}}function ka(e,t,n){const a=Ea(e.createdAt);return t.filter(o=>!n.has(Ae(o))&&o.createdAt>=a.start&&o.createdAt<a.end).sort((o,s)=>Math.abs(o.createdAt-e.createdAt)-Math.abs(s.createdAt-e.createdAt))[0]??null}function Aa(){const e=[],t=new Set,n=r(oe).filter(La).sort(lr),a=r(oe).filter(qr).sort(lr);for(const o of a){const s=ka(o,n,t),d=(s?J(s.response):null)??J(o.content),u=fe(d);if(!u||!d)continue;const c=e.find(f=>f.agentTraceIds.size>0&&Math.abs(f.createdAt-o.createdAt)<=1e3&&Pa(f.fullText,d));if(c){c.agentTraceIds.add(Mt(o)),s&&t.add(Ae(s));continue}s&&t.add(Ae(s)),e.push({id:s?`response:step:${Ae(s)}`:`response:agent:${Mt(o)}`,text:u,fullText:d,createdAt:o.createdAt,agentTraceIds:new Set([Mt(o)]),traceLabel:Q(s??o)})}for(const o of n){const s=Ae(o);if(t.has(s))continue;const l=J(o.response),d=fe(l);!d||!l||e.push({id:`response:step:${s}`,text:d,fullText:l,createdAt:o.createdAt,agentTraceIds:new Set,traceLabel:Q(o)})}return e.sort((o,s)=>o.createdAt-s.createdAt||o.id.localeCompare(s.id))}function Ae(e){return J(e.traceId)??`${e.seq??"?"}:${e.createdAt??"?"}`}function $a(){return r(q).slice().sort(pt).flatMap(e=>{if(e.eventType!=="tts.text.first_sent"&&e.eventType!=="tts.text.completed")return[];const t=fe(Hr(e));return t?[{trace:e,text:t}]:[]})}function Ra(e,t,n,a){const o=a-250,s=e.start+2e3;return t.filter(({trace:d})=>n.has(Ae(d))?!1:d.atMs>=o&&d.atMs<=s).sort((d,u)=>Math.abs(d.trace.atMs-e.start)-Math.abs(u.trace.atMs-e.start))[0]??null}function Ia(e,t){const n=new Map,a=e.filter(c=>c.row==="Playback"&&c.durationMs>0).sort((c,f)=>c.start-f.start||c.end-f.end),o=new Set,s=new Set,l=new Set,d=$a();let u=jr();for(const c of a){const f=Ra(c,d,l,u);u=Math.max(u,c.end),f&&(l.add(Ae(f.trace)),n.set(c.id,{text:f.text,fullText:f.text,traceLabel:Q(f.trace)}))}for(const c of In(r(q))){if(Cn(r(oe),c)==null)continue;const f=wa(r(oe),c);if(!f)continue;const g=t.find(j=>j.agentTraceIds.has(Mt(f)));if(!g||s.has(g.id)||Xr(g.fullText))continue;const O=_a(c,a,o);O&&(o.add(O.id),s.add(g.id),n.set(O.id,{text:g.text,fullText:g.fullText,traceLabel:g.traceLabel}))}for(const c of t){if(s.has(c.id)||Xr(c.fullText))continue;const f=Ta(c.createdAt,a,o);f&&(o.add(f.id),s.add(c.id),n.set(f.id,{text:c.text,fullText:c.fullText,traceLabel:c.traceLabel}))}return{bySegmentId:n,responseIds:s}}function Ca(e,t){return e.flatMap(n=>{if(t.has(n.id)||!Sa(n.fullText))return[];const a=Ba(n.createdAt);return[{...Lt({id:`playback:wait:${n.id}`,row:"Playback",start:n.createdAt,end:a,colorKey:"playback",label:"WAIT response",traceLabel:n.traceLabel}),speechText:n.text,speechFullText:n.fullText,speechTraceLabel:n.traceLabel}]})}function Ba(e){const t=r(q).filter(n=>n.atMs>e&&(n.eventType==="audio.playback.started"||n.eventType==="stt.started"||n.eventType==="vad.activated"||n.eventType==="call.ended")).sort((n,a)=>n.atMs-a.atMs||n.seq-a.seq)[0];return t?t.atMs:e+1}function Na(){const e=[],t=r(Ee).filter(n=>n.row==="Playback"&&n.durationMs>0).sort((n,a)=>n.start-a.start||n.end-a.end);return r(q).slice().sort(pt).forEach(n=>{if(!xa(n))return;const a=ya(n);a&&e.push({id:`bubble:human:${n.traceId??n.seq}`,role:"human",text:a,fullText:a,anchorTime:n.atMs,minStartTime:Ma(n.atMs,t),anchorRow:"STT",traceLabel:Q(n)})}),e.sort((n,a)=>n.anchorTime-a.anchorTime||n.role.localeCompare(a.role)||n.id.localeCompare(a.id))}function Fa(e){const t=r(ke).findIndex(n=>n.label===e);return t===-1?Y:Y+t*(Me+ae)+Math.round(Me/2)}function Da(e){let t=0;for(const n of e)n===" "?t+=4:"ilI.,:;!|".includes(n)?t+=4.2:"mwMW@#%&".includes(n)?t+=9.5:/[A-Z0-9]/.test(n)?t+=7.5:t+=6.8;return Math.ceil(t+Kn)}function Oa(e,t){const n=Da(e),a=Math.max(Fe,t);return H(n,Fe,a)}function Wa(e,t){const n=new Set,a=[],o=Math.max(Fe,t);for(const s of[e,qn,Un,Fe]){const l=H(s,Fe,o);l>e||n.has(l)||(n.add(l),a.push(l))}return a}function Yr(e,t){let n=-1;for(const a of e)a.role===t&&(n=Math.max(n,a.level));return n+1}function Ha(e){return Math.max(0,e)*Tr}function Va(e){const t=r(na);return e.map(n=>{const a=n.level*Tr,o=t+a,s=Fa(n.anchorRow);return{...n,topPx:a,lineTopPx:s,lineHeightPx:Math.max(1,o-s)}})}function Ua(e,t){if(r(p)==null||r(_)==null||r(he)<=0)return[];const n=r(p),o=r(_)-n;if(!Number.isFinite(o)||o<=0)return[];const s=t.filter(u=>u.role===e).map(u=>{const c=(u.anchorTime-n)/o*100,f=(u.minStartTime-n)/o*r(he),g=c/100*r(he);return{...u,anchorPercent:c,anchorPx:g,maxWidthPx:Math.max(Fe,g-f)}}).sort((u,c)=>u.anchorPx-c.anchorPx||u.anchorTime-c.anchorTime),l=Array.from({length:Mr},()=>Number.NEGATIVE_INFINITY),d=[];for(const u of s){const c=Oa(u.text,u.maxWidthPx),f=Wa(c,u.maxWidthPx);let g=null;for(const O of f){const j=u.anchorPx,R=j-O;for(let F=0;F<Mr;F+=1)if(!(R<l[F]+Vn)){g={...u,leftPx:R,topPx:0,widthPx:O,level:F,lineTopPx:ne,lineHeightPx:1},l[F]=j;break}if(g)break}g&&d.push(g)}return d}function qa(){const e=Na();return Ua("human",e)}function Ka(e){return`left:${Math.round(e.leftPx)}px;top:${Math.round(e.topPx)}px;width:${Math.round(e.widthPx)}px;height:${ne}px;`}function ja(e){return`left:${e.anchorPercent}%;top:${Math.round(e.lineTopPx)}px;height:${Math.round(e.lineHeightPx)}px;`}function Xa(e){const t="absolute z-20 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 px-3 text-sm leading-[30px] text-rc-gray-100 backdrop-blur-md";return e.role==="agent"?`${t} bg-rc-green-700`:`${t} bg-rc-gray-700`}function za(e){const t="pointer-events-none max-h-56 max-w-[34rem] overflow-auto rounded-lg border-thin border-rc-gray-110 p-2 pt-1 text-sm text-rc-gray-100 shadow-2xl backdrop-blur-md";return e.role==="agent"?`${t} bg-rc-green-700`:`${t} bg-rc-gray-700`}function ar(){dt!=null&&(window.clearTimeout(dt),dt=null)}function Gr(e,t){const n=t.currentTarget;n instanceof HTMLElement&&(ar(),dt=window.setTimeout(()=>{i(nt,e,!0),i(at,n,!0),dt=null},jn))}function St(){ar(),i(nt,null),i(at,null)}function Lt(e){return{id:e.id,row:e.row,start:e.start,end:e.end,durationMs:Math.max(0,e.end-e.start),colorKey:e.colorKey,label:e.label,description:e.description??null,explain:e.explain??null,text:e.text??null,speechText:null,speechFullText:null,speechTraceLabel:null,traceLabel:e.traceLabel,eventMarker:e.eventMarker??null}}function pt(e,t){return e.seq-t.seq||e.atMs-t.atMs||(e.createdAt??0)-(t.createdAt??0)||String(e.traceId??"").localeCompare(String(t.traceId??""))}function Ya(e,t,n,a){for(let o=t+1;o<e.length;o+=1){const s=e[o];if(a(s))return null;if(n(s))return s}return null}function Ga(e){return In(e).filter(t=>Cn(r(oe),t)!=null).map(t=>Lt({id:`derived:${t.id}`,row:"Response Latency",start:t.start,end:t.end,colorKey:t.isHigh?"response.latency.high":"response.latency.ok",label:"Final STT -> speech start",description:t.speechCreatedTrace?"Final STT transcript -> first audio for the next uncancelled LiveKit speech":"Final STT transcript -> next audio playback start",explain:t.isHigh?`High latency (>${ys}ms)`:"OK",text:t.text,traceLabel:t.speechCreatedTrace?`${Q(t.startTrace)} -> ${Q(t.speechCreatedTrace)} -> ${Q(t.endTrace)}`:`${Q(t.startTrace)} -> ${Q(t.endTrace)}`}))}function Za(e){const t=Ga(e);return e.forEach((n,a)=>{const o=Zn.get(n.eventType);if(!o)return;const s=Ya(e,a,l=>l.eventType===o.endEventType,l=>l.eventType===o.startEventType);!s||s.atMs<n.atMs||t.push(Lt({id:`derived:${o.row.toLowerCase().replaceAll(" ","_")}:${n.seq}:${s.seq}`,row:o.row,start:n.atMs,end:s.atMs,colorKey:o.colorKey,label:o.label,description:o.description,traceLabel:Q(n)}))}),t}function Ja(e){const t=e.slice().filter(o=>typeof o.atMs=="number"&&Number.isFinite(o.atMs)&&typeof o.seq=="number"&&Number.isFinite(o.seq)).sort(pt),n=t.map((o,s)=>Lt({id:`point:${o.traceId??o.seq}:${s}`,row:pa(o.eventType),start:o.atMs,end:o.atMs,colorKey:va(o.eventType),label:ha(o),description:ba(o),text:Hr(o),traceLabel:Q(o),eventMarker:ma(o.eventType)}));return[...Za(t),...n].sort((o,s)=>o.start-s.start||(o.durationMs===0?1:0)-(s.durationMs===0?1:0)||o.end-s.end||o.row.localeCompare(s.row))}function Pt(e){const t=e&&typeof e=="object"?e:{},n=typeof t.audioUrl=="string"&&t.audioUrl.trim()?t.audioUrl:null;return{exists:t.exists===!0&&n!=null,audioUrl:n,fileName:typeof t.fileName=="string"?t.fileName:null,mimeType:typeof t.mimeType=="string"?t.mimeType:null,size:typeof t.size=="number"&&Number.isFinite(t.size)?t.size:null,uploadedAt:typeof t.uploadedAt=="string"?t.uploadedAt:null,alignmentOffsetMs:typeof t.alignmentOffsetMs=="number"&&Number.isFinite(t.alignmentOffsetMs)?t.alignmentOffsetMs:0}}function or(e,t){const n=e&&typeof e=="object"?e:{};return typeof n.error=="string"&&n.error.trim()?n.error:typeof n.message=="string"&&n.message.trim()?n.message:t}async function sr(e){var a,o;const t=e.headers.get("content-type")??"";if(t.includes("application/json"))return e.json().catch(()=>({}));const n=(await e.text().catch(()=>"")).trim();if(!n)return{};if(t.includes("text/html")){const s=n.match(/<title>([^<]+)<\/title>/i),l=n.match(/<h1[^>]*>([^<]+)<\/h1>/i);return{message:((a=s==null?void 0:s[1])==null?void 0:a.trim())||((o=l==null?void 0:l[1])==null?void 0:o.trim())||`${e.status} ${e.statusText}`.trim()}}return{message:n}}function Et(e){return e.row==="Playback"&&!e.eventMarker&&e.durationMs>0}function Qa(e){return!Et(e)||!e.speechFullText?null:{role:"agent",fullText:e.speechFullText}}function eo(e){return Et(e)?e.speechText:null}function to(e){if(r(p)==null||r(_)==null)return null;const t=r(_)-r(p);if(!Number.isFinite(t)||t<=0)return null;const n=Ar[e.colorKey]??C.gray,a=Z(n,-.25);if(e.end===e.start){if(e.start<r(p)||e.start>r(_))return null;const u=H((e.start-r(p))/t*100,0,100);return e.eventMarker==="start"?`left:${u}%;width:7px;background:${n};border-color:${a};clip-path:polygon(0 0,100% 50%,0 100%);`:e.eventMarker==="end"?`left:calc(${u}% - 7px);width:7px;background:${n};border-color:${a};clip-path:polygon(100% 0,0 50%,100% 100%);`:`left:calc(${u}% - 2px);width:4px;background:${n};border-color:${a};`}const o=Math.max(e.start,r(p)),s=Math.min(e.end,r(_));if(s<o)return null;const l=(o-r(p))/t*100,d=(s-o)/t*100;return Et(e)?`left:${l}%;width:max(${d}%,2px);`:`left:${l}%;width:max(${d}%,2px);background:${n};border-color:${a};`}function ro(e){return e.eventMarker?"absolute inset-y-0 shadow-[0_0_0_1px_rgba(0,0,0,0.28)]":Et(e)?"absolute inset-y-0 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 bg-rc-green-700 px-3 text-sm leading-[30px] text-rc-gray-100 shadow-[0_0_0_1px_rgba(0,0,0,0.12)] backdrop-blur-md":"absolute inset-y-0 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]"}function no(e){return[e.label,e.row!==e.label?e.row:"",`${Ze(e.start-r(W))} → ${Ze(e.end-r(W))} (${ca(e.durationMs)})`,e.description??"",e.text?`Text: ${e.text}`:"",e.explain??"",e.traceLabel].filter(n=>n.trim()!=="").join(`
3
- `)}function ao(e,t){const n=t.currentTarget;n instanceof HTMLElement&&(i(qe,e,!0),i(rt,n,!0))}function Zr(){i(qe,null),i(rt,null)}function oo(e,t){const n=Qa(e);if(n){Zr(),Gr(n,t);return}St(),ao(e,t)}function Jr(){Zr(),St()}function so(e){return`left:${e.leftPercent}%;top:${e.topPx}px;height:${e.heightPx}px;border-color:${e.color};opacity:${e.opacity};`}function io(e){return`left:${e.leftPercent}%;top:${e.topPx}px;height:${e.heightPx}px;`}function lo(e){const t="absolute top-1 whitespace-nowrap text-[11px] text-rc-gray-400";return e.leftPercent<=.1?t:e.leftPercent>=99.9?`${t} -translate-x-full`:`${t} -translate-x-1/2`}function co(e){if(!r(A).exists||r(p)==null||r(_)==null)return[];const t=r(p),n=r(_),a=n-t;if(!Number.isFinite(a)||a<=0)return[];const o=r(Qt),s=new Set,l=[];return e.forEach((d,u)=>{if(!zn.has(d.label))return;const f=Y+u*(Me+ae)+Math.round(Me/2);d.segments.forEach(g=>{if(g.id.startsWith("playback:wait:"))return;const O=Z(Ar[g.colorKey]??C.gray,.15),j=g.end===g.start?g.start>=t&&g.start<=n?[g.start]:[]:(()=>{const R=Math.max(g.start,t),F=Math.min(g.end,n);return F<R?[]:[R,F]})();for(const R of j){const F=Math.round(R),ge=`${d.label}:${F}`;if(s.has(ge))continue;s.add(ge);const ee=H((R-t)/a*100,0,100);l.push({id:`${g.id}:${F}`,leftPercent:ee,topPx:f,heightPx:Math.max(1,o-f),color:O,opacity:d.label==="VAD"?.62:.48})}})}),l}function uo(e){const t=e/7,n=10**Math.floor(Math.log10(Math.max(1,t))),a=t/n;return a<=1?1*n:a<=2?2*n:a<=5?5*n:10*n}function fo(e,t,n){const a=t-e;if(!Number.isFinite(a)||a<=0)return[];const o=uo(a),s=Math.ceil((e-n)/o)*o+n,l=[];for(let d=s;d<=t;d+=o){const u=(d-e)/a*100;l.push({time:d,leftPercent:u,label:Ze(d-n)})}return l}function Qr(){const e=window.AudioContext??window.webkitAudioContext;if(!e)throw new Error("Web Audio is not available in this browser");return new e}function po(e){if(e.length===0||e.duration===0)return{durationMs:0,binDurationMs:0,minPeaks:new Float32Array(0),maxPeaks:new Float32Array(0),channelCount:e.numberOfChannels,sampleRate:e.sampleRate};const t=H(Math.round(e.duration*200),8e3,6e4),n=Math.max(1,Math.min(t,e.length)),a=Math.max(1,Math.floor(e.length/n)),o=new Float32Array(n),s=new Float32Array(n);for(let l=0;l<n;l+=1){const d=l*a,u=l===n-1?e.length:Math.min(e.length,d+a);let c=1,f=-1;for(let g=0;g<e.numberOfChannels;g+=1){const O=e.getChannelData(g);for(let j=d;j<u;j+=1){const R=O[j]??0;R<c&&(c=R),R>f&&(f=R)}}f===-1&&c===1&&(c=0,f=0),o[l]=c,s[l]=f}return{durationMs:e.duration*1e3,binDurationMs:e.duration*1e3/n,minPeaks:o,maxPeaks:s,channelCount:e.numberOfChannels,sampleRate:e.sampleRate}}async function vo(e){const t=await fetch(e,{cache:"no-store"});if(!t.ok)throw new Error(`Failed to load recording (${t.status})`);const n=await t.arrayBuffer(),a=Qr();try{const o=await a.decodeAudioData(n.slice(0));return{peaks:po(o),audioBuffer:o}}finally{await a.close().catch(()=>{})}}function mo(e,t){const n=Math.max(1,Math.floor(t.width)),a=Math.max(1,Math.floor(t.height)),o=window.devicePixelRatio||1;e.width=Math.max(1,Math.round(n*o)),e.height=Math.max(1,Math.round(a*o)),e.style.width=`${n}px`,e.style.height=`${a}px`;const s=e.getContext("2d");if(!s)return;s.setTransform(o,0,0,o,0,0),s.clearRect(0,0,n,a),s.fillStyle="rgba(10, 10, 10, 0.2)",s.fillRect(0,0,n,a);const l=t.viewportEndMs-t.viewportStartMs;if(l<=0||t.peaks.minPeaks.length===0||t.peaks.binDurationMs<=0)return;const d=t.recordingStartMs+t.peaks.durationMs,u=Math.max(t.viewportStartMs,t.recordingStartMs),c=Math.min(t.viewportEndMs,d),f=a/2,g=a*.42;if(s.strokeStyle="rgba(147, 255, 109, 0.95)",s.lineWidth=1,s.beginPath(),c>u){const O=Math.max(0,Math.floor((u-t.recordingStartMs)/t.peaks.binDurationMs)),j=Math.min(t.peaks.minPeaks.length-1,Math.ceil((c-t.recordingStartMs)/t.peaks.binDurationMs));for(let R=O;R<=j;R+=1){const ge=(t.recordingStartMs+R*t.peaks.binDurationMs-t.viewportStartMs)/l*n,ee=t.peaks.minPeaks[R]??0,Rt=t.peaks.maxPeaks[R]??0,It=f-Rt*g,Ct=f-ee*g;s.moveTo(ge,It),s.lineTo(ge,Ct)}}s.stroke(),s.strokeStyle="rgba(255, 255, 255, 0.18)",s.lineWidth=1,s.beginPath(),s.moveTo(0,f),s.lineTo(n,f),s.stroke()}function ir(){je&&(window.cancelAnimationFrame(je),je=0)}async function ho(){const e=le;le=null,e&&await e.close().catch(()=>{})}async function bo(){return(!le||le.state==="closed")&&(le=Qr()),le.state==="suspended"&&await le.resume(),le}function en(){const e=tn();if(r(ce)&&le&&lt!=null&&ct!=null){const t=(le.currentTime-ct)*1e3,n=lt+Math.max(0,t);return e>0?H(n,0,e):Math.max(0,n)}return e>0?H(r(G),0,e):Math.max(0,r(G))}function Je(e=!0){e&&i(G,en(),!0);const t=it;if(it=null,lt=null,ct=null,i(ce,!1),ir(),!!t){t.onended=null;try{t.stop()}catch{}t.disconnect()}}function xo(){ir();const e=()=>{if(!r(ce)){je=0;return}i(G,en(),!0),je=window.requestAnimationFrame(e)};je=window.requestAnimationFrame(e)}function tn(){return r(K)&&Number.isFinite(r(K).durationMs)?Math.max(0,r(K).durationMs):ue&&Number.isFinite(ue.duration)?Math.max(0,ue.duration*1e3):0}function yo(e){const t=tn(),n=t>0?H(e,0,t):Math.max(0,e);i(G,n,!0),r(ce)&&nn(n)}function go(e,t){if(r(p)==null||r(_)==null||r(ye)==null)return;const n=t.getBoundingClientRect(),a=H((e-n.left)/Math.max(1,n.width),0,1),o=r(p)+a*(r(_)-r(p));i(de,null),yo(o-r(ye))}function wo(e){const t=e instanceof HTMLElement?e:null;if(!t)return!1;const n=t.tagName;return t.isContentEditable||n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||n==="BUTTON"||n==="A"}async function rn(){if(!(!r(A).exists||!r(A).audioUrl)){if(i(de,null),r(ce)){Je(!0);return}await nn(r(G))}}async function nn(e){const t=ue;if(!t){i(de,r(Ve)?"Recording is still decoding":"Failed to decode recording for playback",!0);return}const n=Math.max(0,t.duration*1e3),a=n>0?e>=n?0:H(e,0,n):Math.max(0,e);Je(!1),i(G,a,!0);try{const o=await bo(),s=o.createBufferSource();s.buffer=t,s.connect(o.destination),s.onended=()=>{it===s&&(it=null,lt=null,ct=null,i(ce,!1),i(G,n,!0),ir())},it=s,lt=a,ct=o.currentTime,i(ce,!0),i(de,null),xo(),s.start(0,a/1e3)}catch(o){Je(!1),i(ce,!1),i(de,o instanceof Error?o.message:"Failed to play recording",!0)}}function _o(e){const t=new Set;return e.filter(n=>{const a=J(n==null?void 0:n.traceId);return a?t.has(a)?!1:(t.add(a),!0):!0})}function To(e){const t=new Set;return e.filter(n=>{const a=J(n==null?void 0:n.traceId);return a?t.has(a)?!1:(t.add(a),!0):!0})}function lr(e,t){return e.createdAt-t.createdAt||String(e.traceId??"").localeCompare(String(t.traceId??""))}async function Mo(e){const t=[];let n;for(;;){const a=await tt.getLatencyTraces(e,500,n);if(t.push(...a.items??[]),n=a.lastTraceId,!n)break}return _o(t).slice().sort(pt)}async function So(e){const t=[];let n;for(;;){const a=await tt.getTraces(e,100,n);if(t.push(...a.items??[]),n=a.lastTraceId,!n)break}return To(t).slice().sort(lr)}async function Lo(e){const t=++yt;i(Le,!1),i(Oe,!0),i(We,null);try{const[n,a,o]=await Promise.all([tt.getConversation(e).catch(s=>(console.error("Failed to load conversation details:",s),null)),Mo(e),So(e).catch(s=>(console.error("Failed to load conversation traces for latency matching:",s),[]))]);if(t!==yt)return;i(Se,n,!0),i(q,a,!0),i(oe,o,!0),i(Le,!0)}catch(n){if(t!==yt)return;i(We,n instanceof Error?n.message:String(n),!0),i(Se,null),i(q,[],!0),i(oe,[],!0)}finally{if(t!==yt)return;i(Oe,!1),Ge()}}async function an(e){if(Je(!1),i(A,e,!0),i(me,null),i(de,null),i(G,0),!e.exists||!e.audioUrl){ue=null,i(K,null),i(Ve,!1),i(Pe,null);return}const t=++gt;i(Ve,!0),i(Pe,null);try{const n=await vo(e.audioUrl);if(t!==gt)return;i(K,n.peaks,!0),ue=n.audioBuffer}catch(n){if(t!==gt)return;ue=null,i(K,null),i(Pe,n instanceof Error?n.message:String(n),!0)}finally{if(t!==gt)return;i(Ve,!1)}}async function Po(e=r(ut)){if(!e)return;const t=++st;i(He,!1),i(bt,!0),i(ve,null);try{const n=await fetch(e,{cache:"no-store",headers:{accept:"application/json"}}),a=await sr(n);if(!n.ok)throw new Error(or(a,"Failed to load recording metadata"));if(t!==st||(await an(Pt(a)),t!==st))return;i(He,!0)}catch(n){if(t!==st)return;i(ve,n instanceof Error?n.message:String(n),!0),i(A,Pt({}),!0),i(K,null),i(Ve,!1)}finally{if(t!==st)return;i(bt,!1),Ge()}}function cr(e=!0){const t=r(_t)??r(Ye);if(!t)return;const n=r(W);i(p,n,!0),i(_,Math.max(n+1e3,t.max),!0),i(se,e,!0)}function Eo(e,t){const n=r(Ye);if(!n)return{startMs:e,endMs:t};const a=t-e;if(a<=0)return{startMs:e,endMs:t};const o=Math.max(1e3,a*.25),s=n.min-o,l=n.max+o;return a>=l-s?{startMs:s,endMs:l}:(e<s&&(t+=s-e,e=s),t>l&&(e-=t-l,t=l),{startMs:e,endMs:t})}function dr(e,t){if(!Number.isFinite(e)||!Number.isFinite(t)||t<=e)return;const n=Eo(e,t);i(p,n.startMs,!0),i(_,n.endMs,!0)}function kt(e,t=.5){if(r(p)==null||r(_)==null)return;const n=r(_)-r(p);if(!Number.isFinite(n)||n<=0)return;const a=r(Ye),o=a?a.max-a.min:n,s=Math.min(100,n),l=Math.max(o+Math.max(2e3,o*.1),5e3),d=H(n*e,s,l),u=H(t,0,1),f=r(p)+n*u-d*u;i(se,!0),dr(f,f+d)}function ko(e){let t=e.deltaY;return e.deltaMode===WheelEvent.DOM_DELTA_LINE?t*=16:e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=window.innerHeight),H(t,-Pr,Pr)}function on(e){return Math.exp(ko(e)*Xn)}function ur(e){if(r(he)<=0)return;e.preventDefault();const t=e.currentTarget.getBoundingClientRect(),n=H((e.clientX-t.left)/Math.max(1,t.width),0,1);kt(on(e),n)}function Ao(e){if(r(Ue)<=0)return;e.preventDefault();const t=e.currentTarget.getBoundingClientRect(),n=H((e.clientX-t.left)/Math.max(1,t.width),0,1);kt(on(e),n)}function sn(e){var u;xe==null||xe();const t=Math.max(0,e.activationDistancePx??0);let n=t===0;n&&((u=e.onStart)==null||u.call(e));const a=c=>{var O;if(n)return!0;const f=c.clientX-e.startEvent.clientX,g=c.clientY-e.startEvent.clientY;return Math.hypot(f,g)<t?!1:(n=!0,(O=e.onStart)==null||O.call(e),!0)},o=c=>{a(c)&&e.onMove(c)},s=c=>{var f,g;window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",d),xe=null,!n&&c&&((f=e.onClick)==null||f.call(e,c)),(g=e.onEnd)==null||g.call(e,{wasDrag:n,event:c})},l=c=>s(c),d=()=>s();window.addEventListener("pointermove",o),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",d),xe=()=>s()}function ln(e){if(e.button!==0||r(p)==null||r(_)==null||r(he)<=0)return;e.preventDefault(),i(se,!0);const t=e.clientX,n=r(p),a=r(_)-r(p);sn({startEvent:e,onMove:o=>{const l=(o.clientX-t)/r(he)*a;dr(n-l,n-l+a)}})}function cn(e){i(A,{...r(A),alignmentOffsetMs:Math.round(e)},!0)}async function dn(){if(!(!r(A).exists||!r(ut))){i(Vt,!0),i(me,null);try{const e=await fetch(r(ut),{method:"PATCH",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({alignmentOffsetMs:r(A).alignmentOffsetMs})}),t=await sr(e);if(!e.ok)throw new Error(or(t,"Failed to save alignment offset"));i(A,Pt(t),!0)}catch(e){i(me,e instanceof Error?e.message:String(e),!0)}finally{i(Vt,!1)}}}function $o(e){if(e.button!==0||!r(A).exists||r(K)==null||r(p)==null||r(_)==null||r(Ue)<=0)return;e.preventDefault(),i(me,null);const t=e.currentTarget,n=e.clientX,a=r(A).alignmentOffsetMs,o=r(_)-r(p);sn({startEvent:e,activationDistancePx:6,onStart:()=>{i(se,!0)},onMove:s=>{const d=(s.clientX-n)/r(Ue)*o;cn(a+d)},onClick:s=>{go(s.clientX,t)},onEnd:({wasDrag:s})=>{s&&dn()}})}async function Ro(){r(A).exists&&(i(se,!0),cn(0),await dn())}async function Io(e){var a;const t=e.currentTarget,n=(a=t.files)==null?void 0:a[0];if(t.value="",!(!n||!r(ut))){i(xt,!0),i(ve,null),i(me,null);try{const o=new URL(r(ut),window.location.origin);o.searchParams.set("filename",n.name);const s=await fetch(o,{method:"POST",headers:{accept:"application/json","content-type":n.type||"audio/wav"},body:n}),l=await sr(s);if(!s.ok)throw new Error(or(l,"Failed to upload recording"));i(se,!1),await an(Pt(l)),cr(!1),i(He,!0),Ge()}catch(o){i(ve,o instanceof Error?o.message:String(o),!0)}finally{i(xt,!1)}}}var un=Ys(),At=vt(un),fr=y(At),pr=y(fr),vr=y(pr),mr=y(vr),Co=m(y(mr));{var Bo=e=>{var t=Ms(),n=m(vt(t),2),a=y(n,!0);h(n),S(()=>I(a,r(Xe))),x(e,t)};D(Co,e=>{r(Xe)&&e(Bo)})}h(mr);var fn=m(mr,2),hr=y(fn),pn=m(y(hr),2),No=y(pn,!0);h(pn),h(hr);var br=m(hr,2),vn=m(y(br),2),Fo=y(vn,!0);h(vn),h(br);var xr=m(br,2),mn=m(y(xr),2),Do=y(mn,!0);h(mn),h(xr);var hn=m(xr,2);{var Oo=e=>{var t=Ss(),n=m(y(t),2),a=y(n,!0);h(n),h(t),S(o=>I(a,o),[()=>Ze(r(er)-r(W))]),x(e,t)};D(hn,e=>{r(A).exists&&r(er)!=null&&e(Oo)})}var Wo=m(hn,2);{var Ho=e=>{var t=Ls(),n=m(y(t),2),a=y(n);h(n),h(t),S((o,s)=>I(a,`${o??""} → ${s??""}`),[()=>Ze(r(p)-r(W)),()=>Ze(r(_)-r(W))]),x(e,t)};D(Wo,e=>{r(p)!=null&&r(_)!=null&&e(Ho)})}h(fn),h(vr);var bn=m(vr,2),yr=y(bn);Be(yr,e=>i(Xt,e),()=>r(Xt));var xn=m(yr,2);Ne(xn,{variant:"secondary",size:"small",get disabled(){return r(xt)},onclick:()=>{var e;return(e=r(Xt))==null?void 0:e.click()},children:(e,t)=>{Ce();var n=Ie();S(()=>I(n,r(xt)?"Uploading…":r(A).exists?"Replace WAV":"Upload WAV")),x(e,n)},$$slots:{default:!0}});var yn=m(xn,2);{let e=T(()=>!r(A).exists);Ne(yn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>void rn(),children:(t,n)=>{Ce();var a=Ie();S(()=>I(a,r(ce)?"Pause":"Play")),x(t,a)},$$slots:{default:!0}})}var gn=m(yn,2);{let e=T(()=>r(Or)==null);Ne(gn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>kt(.8),children:(t,n)=>{Ce();var a=Ie("Zoom in");x(t,a)},$$slots:{default:!0}})}var wn=m(gn,2);{let e=T(()=>r(Or)==null);Ne(wn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>kt(1.25),children:(t,n)=>{Ce();var a=Ie("Zoom out");x(t,a)},$$slots:{default:!0}})}var _n=m(wn,2);{let e=T(()=>!(r(_t)??r(Ye)));Ne(_n,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>cr(!0),children:(t,n)=>{Ce();var a=Ie("Fit call");x(t,a)},$$slots:{default:!0}})}var Tn=m(_n,2);{let e=T(()=>!r(A).exists||r(Vt));Ne(Tn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:Ro,children:(t,n)=>{Ce();var a=Ie("Reset alignment");x(t,a)},$$slots:{default:!0}})}var Vo=m(Tn,2);{let e=T(()=>!r(q).length);Ne(Vo,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:fa,children:(t,n)=>{Ce();var a=Ie();S(()=>I(a,r(Ke)==="ok"?"Copied":r(Ke)==="error"?"Copy failed":"Copy latency stream")),x(t,a)},$$slots:{default:!0}})}h(bn),h(pr);var Mn=m(pr,2);{var Uo=e=>{var t=Ps(),n=y(t,!0);h(t),S(()=>I(n,r(Oe)?"Loading call latency…":"Loading recording…")),x(e,t)};D(Mn,e=>{(r(Oe)||r(bt))&&e(Uo)})}var Sn=m(Mn,2);{var qo=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Failed to load latency traces: ${r(We)??""}`)),x(e,t)};D(Sn,e=>{r(We)&&e(qo)})}var Ln=m(Sn,2);{var Ko=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Recording error: ${r(ve)??""}`)),x(e,t)};D(Ln,e=>{r(ve)&&e(Ko)})}var Pn=m(Ln,2);{var jo=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Alignment error: ${r(me)??""}`)),x(e,t)};D(Pn,e=>{r(me)&&e(jo)})}var Xo=m(Pn,2);{var zo=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Playback error: ${r(de)??""}`)),x(e,t)};D(Xo,e=>{r(de)&&e(zo)})}h(fr);var $t=m(fr,2),En=y($t),kn=y(En),Yo=y(kn);{var Go=e=>{var t=Es();x(e,t)},Zo=e=>{var t=ks();x(e,t)},Jo=e=>{var t=As();x(e,t)},Qo=e=>{var t=js(),n=y(t),a=m(y(n),2);re(a,19,()=>r(ke),v=>v.label,(v,M,P)=>{var $=$s(),V=y($,!0);h($),S(()=>{N($,`height:${Me}px;margin-top:${r(P)===0?0:ae}px;`),I(V,r(M).label)}),x(v,$)});var o=m(a,2),s=m(o,2);{var l=v=>{var M=Rs();N(M,`height:${Ot}px;margin-top:${ae}px;`),x(v,M)};D(s,v=>{r(ft)&&v(l)})}h(n);var d=m(n,2),u=y(d),c=y(u);re(c,17,()=>r(Br),v=>v.id,(v,M)=>{var P=Is();S($=>N(P,$),[()=>ja(r(M))]),x(v,P)});var f=m(c,2);re(f,17,()=>r(oa),v=>v.id,(v,M)=>{var P=Cs();S($=>N(P,$),[()=>so(r(M))]),x(v,P)});var g=m(f,2);{var O=v=>{var M=Bs();S(P=>N(M,P),[()=>io(r(Dr))]),x(v,M)};D(g,v=>{r(Dr)&&v(O)})}var j=m(g,2);{var R=v=>{var M=Ns(),P=vt(M),$=m(P,2);S(()=>{N(P,`left:${r(ze).leftPercent}%;top:${r(ze).topPx}px;height:${r(ze).heightPx}px;`),N($,`left:${r(ze).leftPercent}%;top:${r(ze).topPx-4}px;`)}),x(v,M)};D(j,v=>{r(ze)&&v(R)})}h(u);var F=m(u,2);re(F,21,()=>r(Tt),v=>v.time,(v,M,P,$)=>{var V=Fs(),we=vt(V),X=m(we,2),k=y(X,!0);h(X),S(U=>{N(we,`left:${r(M).leftPercent}%;`),et(X,1,U),N(X,`left:${r(M).leftPercent}%;`),I(k,r(M).label)},[()=>mt(lo(r(M)))]),x(v,V)}),h(F),Be(F,v=>i(Ut,v),()=>r(Ut));var ge=m(F,2);re(ge,19,()=>r(ke),v=>v.label,(v,M,P)=>{var $=Ws(),V=y($);re(V,17,()=>r(Tt),X=>X.time,(X,k,U,_e)=>{var Qe=Fn();S(()=>N(Qe,`left:${r(k).leftPercent}%;`)),x(X,Qe)});var we=m(V,2);re(we,17,()=>r(M).segments,X=>X.id,(X,k)=>{const U=T(()=>to(r(k))),_e=T(()=>eo(r(k)));var Qe=us(),Bt=vt(Qe);{var ss=gr=>{var Te=Os(),is=y(Te);{var ls=$e=>{var wr=Ds(),cs=y(wr,!0);h(wr),S(()=>I(cs,r(_e))),x($e,wr)};D(is,$e=>{r(_e)&&$e(ls)})}h(Te),S($e=>{et(Te,1,$e),N(Te,r(U))},[()=>mt(ro(r(k)))]),pe("pointerenter",Te,$e=>oo(r(k),$e)),pe("pointerleave",Te,Jr),Re("pointerdown",Te,Jr),x(gr,Te)};D(Bt,gr=>{r(U)&&gr(ss)})}x(X,Qe)}),h($),S(()=>N($,`height:${Me}px;margin-top:${r(P)===0?0:ae}px;`)),Re("pointerdown",$,ln),pe("wheel",$,ur),x(v,$)});var ee=m(ge,2);let Rt;var It=y(ee),Ct=m(It,2);re(Ct,17,()=>r(Tt),v=>v.time,(v,M,P,$)=>{var V=Hs();S(()=>N(V,`left:${r(M).leftPercent}%;`)),x(v,V)});var ns=m(Ct,2);re(ns,17,()=>r(Br),v=>v.id,(v,M)=>{var P=Dn(),$=y(P,!0);h(P),S((V,we)=>{et(P,1,V),N(P,we),I($,r(M).text)},[()=>mt(Xa(r(M))),()=>Ka(r(M))]),pe("pointerenter",P,V=>Gr(r(M),V)),pe("pointerleave",P,St),Re("pointerdown",P,St),x(v,P)}),h(ee);var as=m(ee,2);{var os=v=>{var M=Ks();N(M,`height:${Ot}px;margin-top:${ae}px;`);var P=y(M);{var $=k=>{var U=Vs();x(k,U)},V=k=>{var U=Us(),_e=y(U);h(U),S(()=>I(_e,`Failed to decode waveform: ${r(Pe)??""}`)),x(k,U)},we=k=>{var U=qs();Be(U,_e=>i(Kt,_e),()=>r(Kt)),x(k,U)};D(P,k=>{r(Ve)?k($):r(Pe)?k(V,1):k(we,-1)})}var X=m(P,2);re(X,17,()=>r(Tt),k=>k.time,(k,U,_e,Qe)=>{var Bt=Fn();S(()=>N(Bt,`left:${r(U).leftPercent}%;`)),x(k,Bt)}),h(M),Be(M,k=>i(qt,k),()=>r(qt)),Re("pointerdown",M,$o),pe("wheel",M,Ao),x(v,M)};D(as,v=>{r(ft)&&v(os)})}h(d),h(t),S(()=>{N(o,`height:${r(Jt)}px;margin-top:${r(wt)}px;`),Rt=et(ee,1,"relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60",null,Rt,{"rounded-b":!r(ft),"border-b":!r(ft)}),N(ee,`height:${r(Nr)}px;margin-top:${r(wt)}px;`),N(It,`height:${r(Jt)}px;`)}),pe("wheel",F,ur),Re("pointerdown",ee,ln),pe("wheel",ee,ur),x(e,t)};D(Yo,e=>{r(Oe)?e(Go):r(Ee).length?r(p)==null||r(_)==null?e(Jo,2):e(Qo,-1):e(Zo,1)})}h(kn),h(En),h($t),Be($t,e=>i(ie,e),()=>r(ie)),h(At);var An=m(At,2);{var es=e=>{Be(Rn(e,{get referenceEl(){return r(rt)},placement:"top-start",offset:[0,10],children:n=>{var a=Xs();re(a,21,()=>r(sa),hs,(o,s,l)=>{var d=Dn();et(d,1,mt(l===0?"font-semibold text-rc-gray-050":"mt-1 whitespace-pre-wrap break-words text-rc-gray-300"));var u=y(d,!0);h(d),S(()=>I(u,r(s))),x(o,d)}),h(a),x(n,a)},$$slots:{default:!0}}),n=>i(zt,n,!0),()=>r(zt))};D(An,e=>{r(qe)&&r(rt)&&e(es)})}var ts=m(An,2);{var rs=e=>{const t=T(()=>r(nt));Be(Rn(e,{get referenceEl(){return r(at)},placement:"top-start",offset:[0,-4],flip:!1,children:a=>{var o=zs(),s=y(o),l=y(s,!0);h(s),h(o),S(d=>{et(o,1,d),I(l,r(t).fullText)},[()=>mt(za(r(t)))]),x(a,o)},$$slots:{default:!0}}),a=>i(Yt,a,!0),()=>r(Yt))};D(ts,e=>{r(nt)&&r(at)&&e(rs)})}S(e=>{I(No,r(ea)),I(Fo,r(Ee).length),I(Do,e)},[()=>da(r(A).alignmentOffsetMs)]),Re("click",At,e=>e.stopPropagation()),Re("change",yr,Io),pe("scroll",$t,la),x(B,un),vs()}ds(["click","change","pointerdown"]);export{fi as component};
1
+ import{d as ds,b as Re,e as pe,a as x,f as L,t as Ie,c as us}from"../chunks/Ca197UDq.js";import{a as fs}from"../chunks/C39ai1md.js";import{p as ps,w,x as z,d as te,f as vt,t as S,a as vs,j as r,n as T,c as y,y as i,s as m,r as h,o as Ce,T as ms}from"../chunks/CxLomzuE.js";import{s as I}from"../chunks/DJriQKD9.js";import{i as D}from"../chunks/Buo-57fF.js";import{e as re,i as hs}from"../chunks/BJTwdUYr.js";import{c as mt,s as et}from"../chunks/CAjPRvNs.js";import{s as N}from"../chunks/D-B5X35l.js";import{b as Be}from"../chunks/BLu86SbA.js";import{p as $n}from"../chunks/CXESoUel.js";import{B as Ne}from"../chunks/CVlsAO8k.js";import{P as Rn}from"../chunks/CX0Ekq8t.js";import{g as _r,T as bs}from"../chunks/JcG4w2gF.js";import{i as xs}from"../chunks/DgGeUDDh.js";import{b as In,f as Cn,R as ys}from"../chunks/T0seCQS_.js";import{g as gs,c as Nt}from"../chunks/CaHl3dME.js";const On="bosun.traces.latencyTimelineViewports.v2",Dt=new Map;let Bn=!1;function Wn(B){if(!B||typeof B!="object")return!1;const E=B;return typeof E.startMs=="number"&&Number.isFinite(E.startMs)&&typeof E.endMs=="number"&&Number.isFinite(E.endMs)&&E.endMs>E.startMs&&typeof E.originMs=="number"&&Number.isFinite(E.originMs)}function ws(B,E){if(!Number.isFinite(E))return{...B};const ne=E-B.originMs;return{startMs:B.startMs+ne,endMs:B.endMs+ne,originMs:E}}function Hn(){if(!Bn&&(Bn=!0,!(typeof window>"u")))try{const B=window.sessionStorage.getItem(On);if(!B)return;const E=JSON.parse(B);if(!E||typeof E!="object"||Array.isArray(E))return;for(const[ne,Y]of Object.entries(E))!ne||!Wn(Y)||Dt.set(ne,Y)}catch{}}function _s(){if(!(typeof window>"u"))try{window.sessionStorage.setItem(On,JSON.stringify(Object.fromEntries(Dt.entries())))}catch{}}function Ts(B){if(!B)return null;Hn();const E=Dt.get(B);return E?{...E}:null}function Nn(B,E){!B||!Wn(E)||(Hn(),Dt.set(B,{...E}),_s())}var Ms=L('<span class="text-rc-gray-100">for conversation Id:</span> <span class="text-rc-green-200"> </span>',1),Ss=L('<div><span class="text-rc-gray-400">Playhead:</span> <span class="font-mono text-rc-gray-100"> </span></div>'),Ls=L('<div><span class="text-rc-gray-400">Viewport:</span> <span class="font-mono text-rc-gray-100"> </span></div>'),Ps=L('<div class="mt-2 text-sm text-rc-gray-400"> </div>'),Ft=L('<div class="mt-2 text-sm text-red-300"> </div>'),Es=L('<div class="text-sm text-rc-gray-300">Loading latency events…</div>'),ks=L('<div class="text-sm text-rc-gray-300">No latency events were found on this call.</div>'),As=L('<div class="text-sm text-rc-gray-300">Preparing timeline…</div>'),$s=L('<div class="flex items-center text-xs text-rc-gray-300"> </div>'),Rs=L('<div class="flex items-center text-xs text-rc-gray-300">Waveform</div>'),Is=L('<div class="absolute -translate-x-1/2 border-l border-rc-gray-300/40"></div>'),Cs=L('<div class="absolute -translate-x-1/2 border-l border-dashed"></div>'),Bs=L('<div class="absolute border-l border-rc-gray-200/80"></div>'),Ns=L('<div class="absolute -translate-x-1/2 border-l-2 border-rc-green-200/90"></div> <div class="absolute h-2 w-2 -translate-x-1/2 rounded-full bg-rc-green-200"></div>',1),Fs=L('<div class="absolute inset-y-0 w-px bg-rc-gray-700/70"></div> <div> </div>',1),Fn=L('<div class="absolute inset-y-0 w-px bg-rc-gray-700/60"></div>'),Ds=L('<span class="block truncate"> </span>'),Os=L("<div><!></div>"),Ws=L('<div class="relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60"><!> <!></div>'),Hs=L('<div class="absolute inset-y-0 w-px bg-rc-gray-700/45"></div>'),Dn=L("<div> </div>"),Vs=L('<div class="absolute inset-0 flex items-center justify-center px-4 text-sm text-rc-gray-300">Decoding waveform…</div>'),Us=L('<div class="absolute inset-0 flex items-center justify-center px-4 text-sm text-red-300"> </div>'),qs=L('<canvas class="absolute inset-0 h-full w-full"></canvas>'),Ks=L('<div class="relative z-0 overflow-hidden rounded-b border-x border-b border-t border-rc-gray-700/60"><!> <!></div>'),js=L('<div class="grid grid-cols-[140px_minmax(0,1fr)] gap-x-3"><div class="flex flex-col"><div class="h-8"></div> <!> <div class="flex items-center text-xs text-rc-gray-300">Human</div> <!></div> <div class="relative"><div class="pointer-events-none absolute inset-0 z-10 overflow-hidden"><!> <!> <!> <!></div> <div class="relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60"></div> <!> <div><div class="absolute inset-x-0 top-0 border-b border-rc-gray-700/50"></div> <!> <!></div> <!></div></div>'),Xs=L('<div class="pointer-events-none z-popover max-w-[28rem] rounded-md border border-rc-gray-500/80 bg-rc-gray-900/95 px-3 py-2 text-xs text-rc-gray-100 shadow-2xl backdrop-blur-sm"></div>'),zs=L('<div><div class="whitespace-pre-wrap break-words"> </div></div>'),Ys=L('<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 <!></h2> <div class="mt-2 flex flex-wrap gap-x-5 gap-y-1 text-xs text-rc-gray-300"><div><span class="text-rc-gray-400">Latency events:</span> <span class="font-mono text-rc-gray-100"> </span></div> <div><span class="text-rc-gray-400">Timeline items:</span> <span class="font-mono text-rc-gray-100"> </span></div> <div><span class="text-rc-gray-400">Recording offset:</span> <span class="font-mono text-rc-gray-100"> </span></div> <!> <!></div></div> <div class="flex flex-wrap items-center gap-2"><input type="file" accept=".wav,audio/wav,audio/x-wav" class="hidden"/> <!> <!> <!> <!> <!> <!> <!></div></div> <!> <!> <!> <!> <!></div> <div class="rc-scroll min-h-0 flex-1 overflow-auto p-4"><div class="flex flex-col gap-4"><div class="rounded-md border border-rc-gray-650 p-3"><!></div></div></div></div> <!> <!>',1);function pi(B,E){ps(E,!0);const ne=30,Y=32,Me=ne,ae=5,Ot=160,Tr=ne+ae,Mr=3,Vn=8,Fe=60,Un=132,qn=200,Kn=24,Sr=500,Lr=2500,ht=3e4,jn=50,Xn=.00145,Pr=137,Er=250,zn=new Set(["VAD","Playback"]),tt=new bs(fetch),C={blue:"#569cd6",green:"#93FF6D",greenDark:"#00B58A",orange:"#ce9178",purple:"#81147D",red:"#FF6666",gray:"#767676"},kr=[{label:"VAD",eventTypes:["vad.activated","vad.deactivated"]},{label:"STT",eventTypes:["stt.started","stt.interim","stt.final","stt.final_transcript"]},{label:"Trigger",eventTypes:["speech.created"]},{label:"Reply Pending",eventTypes:["reply.pending.started","reply.pending.completed"]},{label:"LLM Transport",eventTypes:["llm.connect_tcp.started","llm.connect_tcp.completed","llm.connect_tcp.failed","llm.start_tls.started","llm.start_tls.completed","llm.start_tls.failed"]},{label:"LLM Wait",eventTypes:["llm.wait.started","llm.requested","llm.wait.completed"]},{label:"LLM Stream",eventTypes:["llm.stream.started","llm.first_token","llm.completed","llm.stream.completed"]},{label:"TTS Text",eventTypes:["tts.text.first_sent","tts.text.completed"]},{label:"Provider",eventTypes:["tts.provider.started","tts.audio.first_received","tts.audio.last_received","tts.provider.completed"]},{label:"Decode",eventTypes:["tts.decode.started","tts.decode.completed"]},{label:"Output Queue",eventTypes:["audio.output.wait.started","audio.output.wait.completed"]},{label:"Playback",eventTypes:["audio.playback.started","audio.playback.stopped","audio.playback.ended"]},{label:"Response Latency"},{label:"Interruptions",eventTypes:["interruption.detected","audio.playback.interrupted"]},{label:"Other"}],Yn=new Set(kr.map(e=>e.label)),Ar={call:Z(C.gray,.2),vad:Z(C.purple,.35),stt:Z(C.purple,.2),trigger:C.greenDark,"response.latency.ok":C.green,"response.latency.high":C.red,"reply.pending":Z(C.greenDark,.18),"llm.transport":Z(C.blue,.18),"llm.wait":Z(C.blue,-.25),"llm.stream":C.blue,"tts.text":C.orange,"tts.provider.lifecycle":Z(C.purple,-.18),"tts.provider":Z(C.purple,.12),"tts.decode":Z(C.orange,-.12),"audio.output.wait":C.orange,playback:Z(C.greenDark,-.08),interruption:C.orange,other:C.gray},Gn=[{startEventType:"reply.pending.started",endEventType:"reply.pending.completed",row:"Reply Pending",colorKey:"reply.pending",label:"Reply pending",description:"Derived from adjacent reply-pending lifecycle events"},{startEventType:"llm.connect_tcp.started",endEventType:"llm.connect_tcp.completed",row:"LLM Transport",colorKey:"llm.transport",label:"Connect TCP",description:"Derived from adjacent TCP connect lifecycle events"},{startEventType:"llm.start_tls.started",endEventType:"llm.start_tls.completed",row:"LLM Transport",colorKey:"llm.transport",label:"Start TLS",description:"Derived from adjacent TLS lifecycle events"},{startEventType:"llm.wait.started",endEventType:"llm.wait.completed",row:"LLM Wait",colorKey:"llm.wait",label:"LLM wait",description:"Derived from adjacent LLM wait lifecycle events"},{startEventType:"llm.stream.started",endEventType:"llm.stream.completed",row:"LLM Stream",colorKey:"llm.stream",label:"LLM stream",description:"Derived from adjacent LLM stream lifecycle events"},{startEventType:"tts.text.first_sent",endEventType:"tts.text.completed",row:"TTS Text",colorKey:"tts.text",label:"TTS text send",description:"Derived from adjacent TTS text send and completion events"},{startEventType:"tts.provider.started",endEventType:"tts.audio.first_received",row:"Provider",colorKey:"tts.provider.lifecycle",label:"Provider wait",description:"Derived from adjacent provider start and first-audio events"},{startEventType:"tts.audio.first_received",endEventType:"tts.provider.completed",row:"Provider",colorKey:"tts.provider",label:"Provider audio",description:"Derived from adjacent provider first-audio and completion events"},{startEventType:"tts.decode.started",endEventType:"tts.decode.completed",row:"Decode",colorKey:"tts.decode",label:"Decode",description:"Derived from adjacent local decode lifecycle events"},{startEventType:"audio.output.wait.started",endEventType:"audio.output.wait.completed",row:"Output Queue",colorKey:"audio.output.wait",label:"Output queue",description:"Derived from adjacent audio-output wait lifecycle events"},{startEventType:"audio.playback.started",endEventType:"audio.playback.stopped",row:"Playback",colorKey:"playback",label:"Playback",description:"Derived from adjacent playback start and playback stop events"}],Zn=new Map(Gn.map(e=>[e.startEventType,e]));function $r(){return{exists:!1,audioUrl:null,fileName:null,mimeType:null,size:null,uploadedAt:null,alignmentOffsetMs:0}}const De=gs(),Wt=_r()??"",Jn=$n.params.conversationId??"",Qn=Nt(Jn,Wt),b=De.latency.get(Qn);tt.setSourceId(Wt||void 0);let Ht=w(z(Wt)),Se=w(z((b==null?void 0:b.conversation)??null)),q=w(z((b==null?void 0:b.traces)??[])),oe=w(z((b==null?void 0:b.conversationTraces)??[])),Le=w(z((b==null?void 0:b.dataLoaded)??!1)),Oe=w(!1),We=w(z((b==null?void 0:b.error)??null)),A=w(z((b==null?void 0:b.recording)??$r())),He=w(z((b==null?void 0:b.recordingLoaded)??!1)),bt=w(!1),ve=w(z((b==null?void 0:b.recordingError)??null)),xt=w(!1),K=w(z((b==null?void 0:b.waveform)??null)),Ve=w(!1),Pe=w(z((b==null?void 0:b.waveformError)??null)),G=w(z((b==null?void 0:b.playbackPositionMs)??0)),ce=w(!1),de=w(null),Vt=w(!1),me=w(null),se=w(z((b==null?void 0:b.viewDirty)??!1)),p=w(null),_=w(null),ie=w(null),Ut=w(null),he=w(0),qt=w(null),Kt=w(null),Ue=w(0),jt=w(0),Xt=w(null),qe=w(null),rt=w(null),zt=w(null),nt=w(null),at=w(null),Yt=w(null),ot=w(z((b==null?void 0:b.humanSpeechBubbleReservedLevels)??1)),Ke=w("idle"),be=w(""),Gt=w(null),yt=0,st=0,gt=0,xe=null,je=0,ue=(b==null?void 0:b.playbackAudioBuffer)??null,le=null,it=null,lt=null,ct=null,dt=null;const Xe=T(()=>$n.params.conversationId);function Rr(e,t){const n=new URLSearchParams;t&&n.set("source",t);const a=n.toString();return`/traces/api/latency/${encodeURIComponent(e)}${a?`?${a}`:""}`}const ut=T(()=>r(Xe)?Rr(r(Xe),r(Ht)):""),W=T(()=>{var t;let e=Number.POSITIVE_INFINITY;for(const n of r(q))typeof n.atMs!="number"||!Number.isFinite(n.atMs)||(e=Math.min(e,n.atMs));return Number.isFinite(e)?e:typeof((t=r(Se))==null?void 0:t.createdAt)=="number"&&Number.isFinite(r(Se).createdAt)?r(Se).createdAt:Number.isFinite(e)?e:0}),Ee=T(()=>Ja(r(q))),ea=T(()=>r(q).length),Ir=T(()=>Aa()),Cr=T(()=>Ia(r(Ee),r(Ir))),ta=T(()=>[...r(Ee).map(t=>{const n=r(Cr).bySegmentId.get(t.id);return!n||t.row!=="Playback"||t.durationMs<=0?t:{...t,speechText:n.text,speechFullText:n.fullText,speechTraceLabel:n.traceLabel}}),...Ca(r(Ir),r(Cr).responseIds)]),ke=T(()=>{const e=new Map;for(const t of r(ta)){const n=e.get(t.row);n?n.push(t):e.set(t.row,[t])}return[...kr].reverse().map(t=>({label:t.label,segments:e.get(t.label)??[]})).filter(t=>t.segments.length>0)}),Zt=T(()=>qa()),ra=T(()=>Math.max(r(ot),Yr(r(Zt),"human"))),Br=T(()=>Va(r(Zt))),Jt=T(()=>Ha(r(ra))),Nr=T(()=>r(Jt)),Fr=T(()=>r(ke).length*Me+Math.max(0,r(ke).length-1)*ae),wt=T(()=>r(ke).length>0?ae:0),na=T(()=>Y+r(Fr)+r(wt)),ft=T(()=>r(A).exists),aa=T(()=>r(ft)?ae+Ot:0),oa=T(()=>co(r(ke))),ye=T(()=>r(K)?r(W)+r(A).alignmentOffsetMs:null),Qt=T(()=>Y+r(Fr)+r(wt)+r(Nr)+r(aa)),er=T(()=>r(ye)==null?null:r(ye)+r(G)),ze=T(()=>{const e=r(er);if(e==null||r(p)==null||r(_)==null)return null;const t=r(_)-r(p);return!Number.isFinite(t)||t<=0||e<r(p)||e>r(_)?null:{leftPercent:H((e-r(p))/t*100,0,100),topPx:Y,heightPx:Math.max(1,r(Qt)-Y)}}),Dr=T(()=>{if(r(p)==null||r(_)==null)return null;const e=r(_)-r(p);return!Number.isFinite(e)||e<=0||r(W)<r(p)||r(W)>r(_)?null:{leftPercent:(r(W)-r(p))/e*100,topPx:Y,heightPx:Math.max(1,r(Qt)-Y)}}),Ye=T(()=>{let e=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const n of r(Ee))e=Math.min(e,n.start),t=Math.max(t,n.end);return r(K)&&r(ye)!=null&&(e=Math.min(e,r(ye)),t=Math.max(t,r(ye)+r(K).durationMs)),!Number.isFinite(e)||!Number.isFinite(t)?null:(t<=e&&(t=e+1),{min:e,max:t})}),_t=T(()=>{let e=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const n of r(Ee))Yn.has(n.row)&&(e=Math.min(e,n.start),t=Math.max(t,n.end));return!Number.isFinite(e)||!Number.isFinite(t)?null:(t<=e&&(t=e+1),{min:e,max:t})}),Or=T(()=>{if(r(p)==null||r(_)==null)return null;const e=r(_)-r(p);return e>0?e:null}),Tt=T(()=>r(p)==null||r(_)==null?[]:fo(r(p),r(_),r(W))),sa=T(()=>r(qe)?no(r(qe)).split(`
2
+ `):[]);te(()=>{const e=r(zt),t=r(rt),n=r(qe);r(p),r(_),!(!e||!t||!n)&&e.update()}),te(()=>{const e=r(Yt),t=r(at),n=r(nt);r(p),r(_),!(!e||!t||!n)&&e.update()}),te(()=>{const e=Yr(r(Zt),"human");e>r(ot)&&i(ot,e,!0)});function Ge(e=r(be)){var s,l;if(!e)return;const t=De.latency.get(e),n={conversation:r(Se),traces:r(q),conversationTraces:r(oe),dataLoaded:r(Le),error:r(We),recording:r(A),recordingLoaded:r(He),recordingError:r(ve),waveform:r(K),waveformError:r(Pe),playbackAudioBuffer:ue,playbackPositionMs:r(G),viewportStartMs:r(p),viewportEndMs:r(_),viewportOriginMs:r(W),viewDirty:r(se),humanSpeechBubbleReservedLevels:r(ot),scrollTop:(t==null?void 0:t.scrollTop)??((s=r(ie))==null?void 0:s.scrollTop)??0,scrollLeft:(t==null?void 0:t.scrollLeft)??((l=r(ie))==null?void 0:l.scrollLeft)??0};De.latency.set(e,n);const a=r(Xe),o=_r()??"";a&&o&&e===Nt(a,"")&&De.latency.set(Nt(a,o),n)}async function ia(e){e&&(await ms(),r(ie)&&(r(ie).scrollTop=e.scrollTop,r(ie).scrollLeft=e.scrollLeft))}function la(){if(!r(be)||!r(ie))return;const e=De.latency.get(r(be));if(!e){Ge();return}e.scrollTop=r(ie).scrollTop,e.scrollLeft=r(ie).scrollLeft}fs(()=>{Wr(),Ge(),xe==null||xe(),ar(),Je(!1),ho()}),te(()=>{const e=r(Xe),t=_r()??"";if(t!==r(Ht)&&i(Ht,t,!0),!e)return;const n=Nt(e,t);if(n===r(be))return;Wr(),Ge(),i(be,n,!0);const a=De.latency.get(n),s=((a==null?void 0:a.viewportStartMs)!=null&&a.viewportEndMs!=null&&typeof a.viewportOriginMs=="number"&&Number.isFinite(a.viewportOriginMs)?{startMs:a.viewportStartMs,endMs:a.viewportEndMs,originMs:a.viewportOriginMs}:null)??Ts(n);i(Gt,s,!0),i(se,s?(a==null?void 0:a.viewDirty)??!0:!1,!0),i(We,(a==null?void 0:a.error)??null,!0),i(ve,(a==null?void 0:a.recordingError)??null,!0),i(me,null),i(Pe,(a==null?void 0:a.waveformError)??null,!0),Je(!1),ue=a!=null&&a.recordingLoaded?a.playbackAudioBuffer:null,i(G,(a==null?void 0:a.playbackPositionMs)??0,!0),i(de,null),i(K,a!=null&&a.recordingLoaded?a.waveform:null,!0),i(Se,a!=null&&a.dataLoaded?a.conversation:null,!0),i(q,a!=null&&a.dataLoaded?a.traces:[],!0),i(oe,a!=null&&a.dataLoaded?a.conversationTraces:[],!0),i(Le,(a==null?void 0:a.dataLoaded)??!1,!0),i(A,a!=null&&a.recordingLoaded?a.recording:$r(),!0),i(He,(a==null?void 0:a.recordingLoaded)??!1,!0),i(p,null),i(_,null),i(ot,(a==null?void 0:a.humanSpeechBubbleReservedLevels)??1,!0),tt.setSourceId(t||void 0),r(Le)?i(Oe,!1):Lo(e),r(He)?i(bt,!1):Po(Rr(e,t)),ia(a)}),te(()=>{const e=r(Gt),t=r(Le),n=r(_t)??r(Ye),a=r(W);if(!e||!t||!n)return;i(Gt,null),i(se,!0);const o=ws(e,a);dr(o.startMs,o.endMs)}),te(()=>{!r(Le)||!(r(_t)??r(Ye))||r(se)||cr(!1)}),te(()=>{const e=r(be),t=r(p),n=r(_);!e||t==null||n==null||Nn(e,{startMs:t,endMs:n,originMs:r(W)})}),te(()=>{const e=r(Ut);if(!e||typeof ResizeObserver>"u")return;i(he,e.clientWidth,!0);const t=new ResizeObserver(n=>{const a=n[0];a&&i(he,a.contentRect.width,!0)});return t.observe(e),()=>t.disconnect()}),te(()=>{const e=r(qt);if(!e||typeof ResizeObserver>"u")return;i(Ue,e.clientWidth,!0),i(jt,e.clientHeight,!0);const t=new ResizeObserver(n=>{const a=n[0];a&&(i(Ue,a.contentRect.width,!0),i(jt,a.contentRect.height,!0))});return t.observe(e),()=>t.disconnect()}),te(()=>{if(!r(A).exists||typeof window>"u")return;const t=n=>{n.code==="Space"&&(n.metaKey||n.ctrlKey||n.altKey||n.shiftKey||wo(n.target)||(n.preventDefault(),rn()))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)}),te(()=>{const e=r(Kt),t=r(K),n=r(ye),a=r(p),o=r(_),s=r(Ue),l=r(jt);!e||!t||n==null||a==null||o==null||mo(e,{peaks:t,recordingStartMs:n,viewportStartMs:a,viewportEndMs:o,width:s,height:l})});function J(e){if(typeof e!="string")return null;const t=e.trim();return t||null}function tr(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function rr(e){return Math.max(0,Math.min(255,Math.round(e)))}function H(e,t,n){return Math.min(n,Math.max(t,e))}function Z(e,t){const n=(e??"").trim().replace(/^#/,""),a=n.length===3?n.split("").map(c=>`${c}${c}`).join(""):n;if(a.length!==6||!/^[0-9a-fA-F]+$/.test(a))return e;const o=parseInt(a.slice(0,2),16),s=parseInt(a.slice(2,4),16),l=parseInt(a.slice(4,6),16),d=Math.abs(Math.max(-1,Math.min(1,t))),u=t>=0?255:0;return`#${rr(o+(u-o)*d).toString(16).padStart(2,"0")}${rr(s+(u-s)*d).toString(16).padStart(2,"0")}${rr(l+(u-l)*d).toString(16).padStart(2,"0")}`}function ca(e){const t=tr(e);return t==null?"—":`${Math.round(t)} ms`}function da(e){if(e==null||!Number.isFinite(e))return"0 ms";const t=Math.round(e);return t===0?"0 ms":`${t>0?"+":""}${t} ms`}function Ze(e){if(!Number.isFinite(e))return"—";const t=e<0?"-":"",n=Math.abs(e);if(n<1e4)return`${t}${(n/1e3).toFixed(1)}s`;if(n<6e4)return`${t}${(n/1e3).toFixed(2)}s`;const a=n/1e3,o=Math.floor(a/60),s=a-o*60;return`${t}${o}:${s.toFixed(1).padStart(4,"0")}`}function ua(e){try{return JSON.stringify(e??null,null,2)}catch{return String(e)}}async function fa(){try{await navigator.clipboard.writeText(ua(r(q))),i(Ke,"ok"),window.setTimeout(()=>{i(Ke,"idle")},2e3)}catch(e){console.error("Failed to copy latency stream",e),i(Ke,"error"),window.setTimeout(()=>{i(Ke,"idle")},3e3)}}function Wr(){!r(be)||r(p)==null||r(_)==null||Nn(r(be),{startMs:r(p),endMs:r(_),originMs:r(W)})}function Q(e){const t=typeof e.createdAt=="number"&&Number.isFinite(e.createdAt)?new Date(e.createdAt).toLocaleTimeString():"unknown time";return e.traceType==="LATENCY"?`Latency • #${e.seq??"?"} • ${e.eventType??"unknown"} • ${t}`:e.traceType==="CONVERSATIONAL"?`Conversational • ${e.eventName} • ${t}`:e.traceType==="STEP"?`Step • ${e.name??"unknown"} • ${t}`:`API • ${e.operationName} • ${t}`}function nr(e){const t=e.payload;return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function pa(e){return e==="call.started"||e==="call.ended"?"Call":e.startsWith("vad.")?"VAD":e.startsWith("stt.")?"STT":e==="speech.created"?"Trigger":e.startsWith("reply.pending.")?"Reply Pending":e.startsWith("llm.connect_tcp.")||e.startsWith("llm.start_tls.")?"LLM Transport":e==="llm.requested"||e.startsWith("llm.wait.")?"LLM Wait":e==="llm.first_token"||e==="llm.completed"||e.startsWith("llm.stream.")?"LLM Stream":e.startsWith("tts.text.")?"TTS Text":e.startsWith("tts.provider.")||e==="tts.audio.first_received"||e==="tts.audio.last_received"?"Provider":e.startsWith("tts.decode.")?"Decode":e.startsWith("audio.output.wait.")?"Output Queue":e==="interruption.detected"||e==="audio.playback.interrupted"?"Interruptions":e.startsWith("audio.playback.")?"Playback":"Other"}function va(e){return e==="call.started"||e==="call.ended"?"call":e.startsWith("vad.")?"vad":e.startsWith("stt.")?"stt":e==="speech.created"?"trigger":e.startsWith("reply.pending.")?"reply.pending":e.startsWith("llm.connect_tcp.")||e.startsWith("llm.start_tls.")?"llm.transport":e==="llm.requested"||e.startsWith("llm.wait.")?"llm.wait":e==="llm.first_token"||e==="llm.completed"||e.startsWith("llm.stream.")?"llm.stream":e.startsWith("tts.text.")?"tts.text":e.startsWith("tts.provider.")?"tts.provider.lifecycle":e==="tts.audio.first_received"||e==="tts.audio.last_received"?"tts.provider":e.startsWith("tts.decode.")?"tts.decode":e.startsWith("audio.output.wait.")?"audio.output.wait":e==="interruption.detected"||e==="audio.playback.interrupted"?"interruption":e.startsWith("audio.playback.")?"playback":"other"}function ma(e){switch(e){case"vad.activated":case"stt.started":return"start";case"vad.deactivated":case"stt.final":case"stt.final_transcript":return"end";default:return null}}function ha(e){switch(e.eventType){case"call.started":return"Call started";case"call.ended":return"Call ended";case"vad.activated":return"VAD activated";case"vad.deactivated":return"VAD deactivated";case"stt.started":return"STT start";case"stt.interim":return"STT interim";case"stt.final":case"stt.final_transcript":return"STT final";case"speech.created":return"Speech created";case"reply.pending.started":return"Reply pending start";case"reply.pending.completed":return"Reply pending end";case"llm.connect_tcp.started":return"Connect TCP start";case"llm.connect_tcp.completed":return"Connect TCP end";case"llm.connect_tcp.failed":return"Connect TCP failed";case"llm.start_tls.started":return"TLS start";case"llm.start_tls.completed":return"TLS end";case"llm.start_tls.failed":return"TLS failed";case"llm.wait.started":return"LLM wait start";case"llm.wait.completed":return"LLM wait end";case"llm.stream.started":return"LLM stream start";case"llm.stream.completed":return"LLM stream end";case"llm.requested":return"LLM request";case"llm.first_token":return"LLM first token";case"llm.completed":return"LLM end";case"tts.text.first_sent":return"TTS first text";case"tts.text.completed":return"TTS text end";case"tts.provider.started":return"Provider start";case"tts.provider.completed":return"Provider end";case"tts.audio.first_received":return"Provider audio received";case"tts.audio.last_received":return"Provider audio end";case"tts.decode.started":return"Decode start";case"tts.decode.completed":return"Decode end";case"audio.output.wait.started":return"Output queue start";case"audio.output.wait.completed":return"Output queue end";case"interruption.detected":return"Interruption detected";case"audio.playback.started":return"Playback start";case"audio.playback.stopped":return"Playback stop";case"audio.playback.ended":return"Playback end";case"audio.playback.interrupted":return"Playback interrupted";default:return e.eventType}}function ba(e){const t=nr(e);switch(e.eventType){case"call.started":return"Call-scoped latency stream started";case"call.ended":return"Call-scoped latency stream ended";case"vad.activated":return"Raw VAD activation event";case"vad.deactivated":return"Raw VAD deactivation event";case"stt.started":return"Speech-to-text detected speech start";case"stt.interim":return J(t.originalType)==="preflight_transcript"?"Speech-to-text preflight transcript":"Speech-to-text interim transcript";case"stt.final":case"stt.final_transcript":return"Speech-to-text final transcript";case"speech.created":return"LiveKit created a speech handle";case"reply.pending.started":return"Reply generation was committed, but downstream generation has not started yet";case"reply.pending.completed":return"Reply generation moved from pending into the LLM request phase";case"llm.connect_tcp.started":return"httpcore started opening a new TCP connection for the LLM request";case"llm.connect_tcp.completed":return"httpcore finished opening a new TCP connection for the LLM request";case"llm.connect_tcp.failed":return"httpcore failed while opening a new TCP connection for the LLM request";case"llm.start_tls.started":return"httpcore started TLS negotiation for the LLM request";case"llm.start_tls.completed":return"httpcore finished TLS negotiation for the LLM request";case"llm.start_tls.failed":return"httpcore failed during TLS negotiation for the LLM request";case"llm.wait.started":return"LLM request is in flight and waiting for the first token";case"llm.wait.completed":return"The LLM wait phase ended when the first token arrived";case"llm.stream.started":return"LLM streaming phase started";case"llm.stream.completed":return"LLM streaming phase ended";case"llm.requested":return"AnyVan received an LLM request";case"llm.first_token":return"First LLM token received";case"llm.completed":return"LLM streaming completed";case"tts.text.first_sent":return"First text chunk sent to the TTS provider";case"tts.text.completed":return"Last non-empty text chunk observed for this TTS stream";case"tts.provider.started":return"Provider lifecycle started when the first non-empty TTS text chunk was sent";case"tts.provider.completed":return"Provider lifecycle ended when the provider stream reported completion";case"tts.audio.first_received":return"First audio chunk received from the TTS provider";case"tts.audio.last_received":return"Last audio chunk received from the TTS provider";case"tts.decode.started":return"First provider audio bytes were handed into the local decode path";case"tts.decode.completed":return"The first decoded audio frame left the local decode path";case"audio.output.wait.started":return"The first local audio frame was handed to the LiveKit audio output";case"audio.output.wait.completed":return"The audio-output wait phase ended when low-level playback actually started";case"interruption.detected":return"User speech overlapped active playback; this does not guarantee playback stopped";case"audio.playback.started":return"First played audio frame";case"audio.playback.stopped":return"Playback lifecycle ended on the Playback row";case"audio.playback.ended":return"Audio playback finished normally";case"audio.playback.interrupted":return"Audio playback ended because the output buffer was interrupted";default:return null}}function Hr(e){const t=nr(e);return J(t.text)}function xa(e){return e.eventType==="stt.final"||e.eventType==="stt.final_transcript"}function fe(e){const t=J(e);return t&&t.replace(/\s+/g," ").trim()||null}function ya(e){const t=nr(e),n=fe(t.text)??fe(t.transcript)??fe(t.finalTranscript)??fe(t.final_transcript)??fe(t.message);if(n)return n;const a=t.alternatives;if(Array.isArray(a))for(const o of a){if(!o||typeof o!="object")continue;const s=fe(o.text);if(s)return s}return null}function Vr(e){return e.traceType==="CONVERSATIONAL"}function Ur(e){return Vr(e)&&e.role.toLowerCase()==="user"&&(e.eventName==="received-message"||e.eventName==="llm-handler-stream-requested")}function qr(e){return Vr(e)&&(e.eventName==="finished-main-streaming-step"||e.eventName==="sent-message")}function Mt(e){return J(e.traceId)??`${e.createdAt}:${e.eventName}:${e.content}`}function ga(e,t){for(let n=t-1;n>=0;n-=1){const a=e[n];if(a.traceType==="CONVERSATIONAL")return a}return null}function wa(e,t){const n=tr(t.startTrace.createdAt),a=tr(t.endTrace.createdAt);if(n==null)return null;for(let o=0;o<e.length;o+=1){const s=e[o];if(!qr(s)||s.createdAt<n-Er||a!=null&&s.createdAt<a-Er)continue;const l=ga(e,o);if(!(!l||!Ur(l)))return s}return null}function Kr(e,t){return t>=e.start&&t<=e.end?0:Math.min(Math.abs(t-e.start),Math.abs(t-e.end))}function _a(e,t,n){const a=t.filter(o=>n.has(o.id)?!1:o.start>=e.end-Sr&&o.start<=e.end+Lr).sort((o,s)=>Math.abs(o.start-e.end)-Math.abs(s.start-e.end));return a[0]?a[0]:t.find(o=>!n.has(o.id)&&o.start<=e.end+Lr&&o.end>=e.end-Sr)??null}function Ta(e,t,n){return t.filter(o=>n.has(o.id)?!1:o.end>=e-ht&&o.start<=e+ht).sort((o,s)=>Kr(o,e)-Kr(s,e))[0]??null}function jr(){for(const e of r(q).slice().sort(pt))if(e.eventType==="call.started"&&Number.isFinite(e.atMs))return e.atMs;return r(W)}function Ma(e,t){const n=t.filter(a=>a.start<=e).sort((a,o)=>o.start-a.start||o.end-a.end)[0];return n?n.end<=e?Math.min(n.end,e):Math.min(n.start,e):Math.min(jr(),e)}function Xr(e){return e.replace(/<[^>]+>/g,"").trim()===""}function Sa(e){return/<WAIT\b[^>]*\/?\s*>/i.test(e)}function La(e){return e.traceType==="STEP"&&xs(e.name)&&J(e.response)!=null}function zr(e){return e.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()}function Pa(e,t){if(e===t)return!0;const n=zr(e),a=zr(t);return n!==""&&n===a}function Ea(e){let t=e-ht,n=e+ht;for(const a of r(oe))if(Ur(a))if(a.createdAt<=e)t=a.createdAt;else{n=a.createdAt;break}return{start:t,end:n}}function ka(e,t,n){const a=Ea(e.createdAt);return t.filter(o=>!n.has(Ae(o))&&o.createdAt>=a.start&&o.createdAt<a.end).sort((o,s)=>Math.abs(o.createdAt-e.createdAt)-Math.abs(s.createdAt-e.createdAt))[0]??null}function Aa(){const e=[],t=new Set,n=r(oe).filter(La).sort(lr),a=r(oe).filter(qr).sort(lr);for(const o of a){const s=ka(o,n,t),d=(s?J(s.response):null)??J(o.content),u=fe(d);if(!u||!d)continue;const c=e.find(f=>f.agentTraceIds.size>0&&Math.abs(f.createdAt-o.createdAt)<=1e3&&Pa(f.fullText,d));if(c){c.agentTraceIds.add(Mt(o)),s&&t.add(Ae(s));continue}s&&t.add(Ae(s)),e.push({id:s?`response:step:${Ae(s)}`:`response:agent:${Mt(o)}`,text:u,fullText:d,createdAt:o.createdAt,agentTraceIds:new Set([Mt(o)]),traceLabel:Q(s??o)})}for(const o of n){const s=Ae(o);if(t.has(s))continue;const l=J(o.response),d=fe(l);!d||!l||e.push({id:`response:step:${s}`,text:d,fullText:l,createdAt:o.createdAt,agentTraceIds:new Set,traceLabel:Q(o)})}return e.sort((o,s)=>o.createdAt-s.createdAt||o.id.localeCompare(s.id))}function Ae(e){return J(e.traceId)??`${e.seq??"?"}:${e.createdAt??"?"}`}function $a(){return r(q).slice().sort(pt).flatMap(e=>{if(e.eventType!=="tts.text.first_sent"&&e.eventType!=="tts.text.completed")return[];const t=fe(Hr(e));return t?[{trace:e,text:t}]:[]})}function Ra(e,t,n,a){const o=a-250,s=e.start+2e3;return t.filter(({trace:d})=>n.has(Ae(d))?!1:d.atMs>=o&&d.atMs<=s).sort((d,u)=>Math.abs(d.trace.atMs-e.start)-Math.abs(u.trace.atMs-e.start))[0]??null}function Ia(e,t){const n=new Map,a=e.filter(c=>c.row==="Playback"&&c.durationMs>0).sort((c,f)=>c.start-f.start||c.end-f.end),o=new Set,s=new Set,l=new Set,d=$a();let u=jr();for(const c of a){const f=Ra(c,d,l,u);u=Math.max(u,c.end),f&&(l.add(Ae(f.trace)),n.set(c.id,{text:f.text,fullText:f.text,traceLabel:Q(f.trace)}))}for(const c of In(r(q))){if(Cn(r(oe),c)==null)continue;const f=wa(r(oe),c);if(!f)continue;const g=t.find(j=>j.agentTraceIds.has(Mt(f)));if(!g||s.has(g.id)||Xr(g.fullText))continue;const O=_a(c,a,o);O&&(o.add(O.id),s.add(g.id),n.set(O.id,{text:g.text,fullText:g.fullText,traceLabel:g.traceLabel}))}for(const c of t){if(s.has(c.id)||Xr(c.fullText))continue;const f=Ta(c.createdAt,a,o);f&&(o.add(f.id),s.add(c.id),n.set(f.id,{text:c.text,fullText:c.fullText,traceLabel:c.traceLabel}))}return{bySegmentId:n,responseIds:s}}function Ca(e,t){return e.flatMap(n=>{if(t.has(n.id)||!Sa(n.fullText))return[];const a=Ba(n.createdAt);return[{...Lt({id:`playback:wait:${n.id}`,row:"Playback",start:n.createdAt,end:a,colorKey:"playback",label:"WAIT response",traceLabel:n.traceLabel}),speechText:n.text,speechFullText:n.fullText,speechTraceLabel:n.traceLabel}]})}function Ba(e){const t=r(q).filter(n=>n.atMs>e&&(n.eventType==="audio.playback.started"||n.eventType==="stt.started"||n.eventType==="vad.activated"||n.eventType==="call.ended")).sort((n,a)=>n.atMs-a.atMs||n.seq-a.seq)[0];return t?t.atMs:e+1}function Na(){const e=[],t=r(Ee).filter(n=>n.row==="Playback"&&n.durationMs>0).sort((n,a)=>n.start-a.start||n.end-a.end);return r(q).slice().sort(pt).forEach(n=>{if(!xa(n))return;const a=ya(n);a&&e.push({id:`bubble:human:${n.traceId??n.seq}`,role:"human",text:a,fullText:a,anchorTime:n.atMs,minStartTime:Ma(n.atMs,t),anchorRow:"STT",traceLabel:Q(n)})}),e.sort((n,a)=>n.anchorTime-a.anchorTime||n.role.localeCompare(a.role)||n.id.localeCompare(a.id))}function Fa(e){const t=r(ke).findIndex(n=>n.label===e);return t===-1?Y:Y+t*(Me+ae)+Math.round(Me/2)}function Da(e){let t=0;for(const n of e)n===" "?t+=4:"ilI.,:;!|".includes(n)?t+=4.2:"mwMW@#%&".includes(n)?t+=9.5:/[A-Z0-9]/.test(n)?t+=7.5:t+=6.8;return Math.ceil(t+Kn)}function Oa(e,t){const n=Da(e),a=Math.max(Fe,t);return H(n,Fe,a)}function Wa(e,t){const n=new Set,a=[],o=Math.max(Fe,t);for(const s of[e,qn,Un,Fe]){const l=H(s,Fe,o);l>e||n.has(l)||(n.add(l),a.push(l))}return a}function Yr(e,t){let n=-1;for(const a of e)a.role===t&&(n=Math.max(n,a.level));return n+1}function Ha(e){return Math.max(0,e)*Tr}function Va(e){const t=r(na);return e.map(n=>{const a=n.level*Tr,o=t+a,s=Fa(n.anchorRow);return{...n,topPx:a,lineTopPx:s,lineHeightPx:Math.max(1,o-s)}})}function Ua(e,t){if(r(p)==null||r(_)==null||r(he)<=0)return[];const n=r(p),o=r(_)-n;if(!Number.isFinite(o)||o<=0)return[];const s=t.filter(u=>u.role===e).map(u=>{const c=(u.anchorTime-n)/o*100,f=(u.minStartTime-n)/o*r(he),g=c/100*r(he);return{...u,anchorPercent:c,anchorPx:g,maxWidthPx:Math.max(Fe,g-f)}}).sort((u,c)=>u.anchorPx-c.anchorPx||u.anchorTime-c.anchorTime),l=Array.from({length:Mr},()=>Number.NEGATIVE_INFINITY),d=[];for(const u of s){const c=Oa(u.text,u.maxWidthPx),f=Wa(c,u.maxWidthPx);let g=null;for(const O of f){const j=u.anchorPx,R=j-O;for(let F=0;F<Mr;F+=1)if(!(R<l[F]+Vn)){g={...u,leftPx:R,topPx:0,widthPx:O,level:F,lineTopPx:ne,lineHeightPx:1},l[F]=j;break}if(g)break}g&&d.push(g)}return d}function qa(){const e=Na();return Ua("human",e)}function Ka(e){return`left:${Math.round(e.leftPx)}px;top:${Math.round(e.topPx)}px;width:${Math.round(e.widthPx)}px;height:${ne}px;`}function ja(e){return`left:${e.anchorPercent}%;top:${Math.round(e.lineTopPx)}px;height:${Math.round(e.lineHeightPx)}px;`}function Xa(e){const t="absolute z-20 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 px-3 text-sm leading-[30px] text-rc-gray-100 backdrop-blur-md";return e.role==="agent"?`${t} bg-rc-green-700`:`${t} bg-rc-gray-700`}function za(e){const t="pointer-events-none max-h-56 max-w-[34rem] overflow-auto rounded-lg border-thin border-rc-gray-110 p-2 pt-1 text-sm text-rc-gray-100 shadow-2xl backdrop-blur-md";return e.role==="agent"?`${t} bg-rc-green-700`:`${t} bg-rc-gray-700`}function ar(){dt!=null&&(window.clearTimeout(dt),dt=null)}function Gr(e,t){const n=t.currentTarget;n instanceof HTMLElement&&(ar(),dt=window.setTimeout(()=>{i(nt,e,!0),i(at,n,!0),dt=null},jn))}function St(){ar(),i(nt,null),i(at,null)}function Lt(e){return{id:e.id,row:e.row,start:e.start,end:e.end,durationMs:Math.max(0,e.end-e.start),colorKey:e.colorKey,label:e.label,description:e.description??null,explain:e.explain??null,text:e.text??null,speechText:null,speechFullText:null,speechTraceLabel:null,traceLabel:e.traceLabel,eventMarker:e.eventMarker??null}}function pt(e,t){return e.seq-t.seq||e.atMs-t.atMs||(e.createdAt??0)-(t.createdAt??0)||String(e.traceId??"").localeCompare(String(t.traceId??""))}function Ya(e,t,n,a){for(let o=t+1;o<e.length;o+=1){const s=e[o];if(a(s))return null;if(n(s))return s}return null}function Ga(e){return In(e).filter(t=>Cn(r(oe),t)!=null).map(t=>Lt({id:`derived:${t.id}`,row:"Response Latency",start:t.start,end:t.end,colorKey:t.isHigh?"response.latency.high":"response.latency.ok",label:"Final STT -> speech start",description:t.speechCreatedTrace?"Final STT transcript -> first audio for the next uncancelled LiveKit speech":"Final STT transcript -> next audio playback start",explain:t.isHigh?`High latency (>${ys}ms)`:"OK",text:t.text,traceLabel:t.speechCreatedTrace?`${Q(t.startTrace)} -> ${Q(t.speechCreatedTrace)} -> ${Q(t.endTrace)}`:`${Q(t.startTrace)} -> ${Q(t.endTrace)}`}))}function Za(e){const t=Ga(e);return e.forEach((n,a)=>{const o=Zn.get(n.eventType);if(!o)return;const s=Ya(e,a,l=>l.eventType===o.endEventType,l=>l.eventType===o.startEventType);!s||s.atMs<n.atMs||t.push(Lt({id:`derived:${o.row.toLowerCase().replaceAll(" ","_")}:${n.seq}:${s.seq}`,row:o.row,start:n.atMs,end:s.atMs,colorKey:o.colorKey,label:o.label,description:o.description,traceLabel:Q(n)}))}),t}function Ja(e){const t=e.slice().filter(o=>typeof o.atMs=="number"&&Number.isFinite(o.atMs)&&typeof o.seq=="number"&&Number.isFinite(o.seq)).sort(pt),n=t.map((o,s)=>Lt({id:`point:${o.traceId??o.seq}:${s}`,row:pa(o.eventType),start:o.atMs,end:o.atMs,colorKey:va(o.eventType),label:ha(o),description:ba(o),text:Hr(o),traceLabel:Q(o),eventMarker:ma(o.eventType)}));return[...Za(t),...n].sort((o,s)=>o.start-s.start||(o.durationMs===0?1:0)-(s.durationMs===0?1:0)||o.end-s.end||o.row.localeCompare(s.row))}function Pt(e){const t=e&&typeof e=="object"?e:{},n=typeof t.audioUrl=="string"&&t.audioUrl.trim()?t.audioUrl:null;return{exists:t.exists===!0&&n!=null,audioUrl:n,fileName:typeof t.fileName=="string"?t.fileName:null,mimeType:typeof t.mimeType=="string"?t.mimeType:null,size:typeof t.size=="number"&&Number.isFinite(t.size)?t.size:null,uploadedAt:typeof t.uploadedAt=="string"?t.uploadedAt:null,alignmentOffsetMs:typeof t.alignmentOffsetMs=="number"&&Number.isFinite(t.alignmentOffsetMs)?t.alignmentOffsetMs:0}}function or(e,t){const n=e&&typeof e=="object"?e:{};return typeof n.error=="string"&&n.error.trim()?n.error:typeof n.message=="string"&&n.message.trim()?n.message:t}async function sr(e){var a,o;const t=e.headers.get("content-type")??"";if(t.includes("application/json"))return e.json().catch(()=>({}));const n=(await e.text().catch(()=>"")).trim();if(!n)return{};if(t.includes("text/html")){const s=n.match(/<title>([^<]+)<\/title>/i),l=n.match(/<h1[^>]*>([^<]+)<\/h1>/i);return{message:((a=s==null?void 0:s[1])==null?void 0:a.trim())||((o=l==null?void 0:l[1])==null?void 0:o.trim())||`${e.status} ${e.statusText}`.trim()}}return{message:n}}function Et(e){return e.row==="Playback"&&!e.eventMarker&&e.durationMs>0}function Qa(e){return!Et(e)||!e.speechFullText?null:{role:"agent",fullText:e.speechFullText}}function eo(e){return Et(e)?e.speechText:null}function to(e){if(r(p)==null||r(_)==null)return null;const t=r(_)-r(p);if(!Number.isFinite(t)||t<=0)return null;const n=Ar[e.colorKey]??C.gray,a=Z(n,-.25);if(e.end===e.start){if(e.start<r(p)||e.start>r(_))return null;const u=H((e.start-r(p))/t*100,0,100);return e.eventMarker==="start"?`left:${u}%;width:7px;background:${n};border-color:${a};clip-path:polygon(0 0,100% 50%,0 100%);`:e.eventMarker==="end"?`left:calc(${u}% - 7px);width:7px;background:${n};border-color:${a};clip-path:polygon(100% 0,0 50%,100% 100%);`:`left:calc(${u}% - 2px);width:4px;background:${n};border-color:${a};`}const o=Math.max(e.start,r(p)),s=Math.min(e.end,r(_));if(s<o)return null;const l=(o-r(p))/t*100,d=(s-o)/t*100;return Et(e)?`left:${l}%;width:max(${d}%,2px);`:`left:${l}%;width:max(${d}%,2px);background:${n};border-color:${a};`}function ro(e){return e.eventMarker?"absolute inset-y-0 shadow-[0_0_0_1px_rgba(0,0,0,0.28)]":Et(e)?"absolute inset-y-0 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 bg-rc-green-700 px-3 text-sm leading-[30px] text-rc-gray-100 shadow-[0_0_0_1px_rgba(0,0,0,0.12)] backdrop-blur-md":"absolute inset-y-0 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]"}function no(e){return[e.label,e.row!==e.label?e.row:"",`${Ze(e.start-r(W))} → ${Ze(e.end-r(W))} (${ca(e.durationMs)})`,e.description??"",e.text?`Text: ${e.text}`:"",e.explain??"",e.traceLabel].filter(n=>n.trim()!=="").join(`
3
+ `)}function ao(e,t){const n=t.currentTarget;n instanceof HTMLElement&&(i(qe,e,!0),i(rt,n,!0))}function Zr(){i(qe,null),i(rt,null)}function oo(e,t){const n=Qa(e);if(n){Zr(),Gr(n,t);return}St(),ao(e,t)}function Jr(){Zr(),St()}function so(e){return`left:${e.leftPercent}%;top:${e.topPx}px;height:${e.heightPx}px;border-color:${e.color};opacity:${e.opacity};`}function io(e){return`left:${e.leftPercent}%;top:${e.topPx}px;height:${e.heightPx}px;`}function lo(e){const t="absolute top-1 whitespace-nowrap text-[11px] text-rc-gray-400";return e.leftPercent<=.1?t:e.leftPercent>=99.9?`${t} -translate-x-full`:`${t} -translate-x-1/2`}function co(e){if(!r(A).exists||r(p)==null||r(_)==null)return[];const t=r(p),n=r(_),a=n-t;if(!Number.isFinite(a)||a<=0)return[];const o=r(Qt),s=new Set,l=[];return e.forEach((d,u)=>{if(!zn.has(d.label))return;const f=Y+u*(Me+ae)+Math.round(Me/2);d.segments.forEach(g=>{if(g.id.startsWith("playback:wait:"))return;const O=Z(Ar[g.colorKey]??C.gray,.15),j=g.end===g.start?g.start>=t&&g.start<=n?[g.start]:[]:(()=>{const R=Math.max(g.start,t),F=Math.min(g.end,n);return F<R?[]:[R,F]})();for(const R of j){const F=Math.round(R),ge=`${d.label}:${F}`;if(s.has(ge))continue;s.add(ge);const ee=H((R-t)/a*100,0,100);l.push({id:`${g.id}:${F}`,leftPercent:ee,topPx:f,heightPx:Math.max(1,o-f),color:O,opacity:d.label==="VAD"?.62:.48})}})}),l}function uo(e){const t=e/7,n=10**Math.floor(Math.log10(Math.max(1,t))),a=t/n;return a<=1?1*n:a<=2?2*n:a<=5?5*n:10*n}function fo(e,t,n){const a=t-e;if(!Number.isFinite(a)||a<=0)return[];const o=uo(a),s=Math.ceil((e-n)/o)*o+n,l=[];for(let d=s;d<=t;d+=o){const u=(d-e)/a*100;l.push({time:d,leftPercent:u,label:Ze(d-n)})}return l}function Qr(){const e=window.AudioContext??window.webkitAudioContext;if(!e)throw new Error("Web Audio is not available in this browser");return new e}function po(e){if(e.length===0||e.duration===0)return{durationMs:0,binDurationMs:0,minPeaks:new Float32Array(0),maxPeaks:new Float32Array(0),channelCount:e.numberOfChannels,sampleRate:e.sampleRate};const t=H(Math.round(e.duration*200),8e3,6e4),n=Math.max(1,Math.min(t,e.length)),a=Math.max(1,Math.floor(e.length/n)),o=new Float32Array(n),s=new Float32Array(n);for(let l=0;l<n;l+=1){const d=l*a,u=l===n-1?e.length:Math.min(e.length,d+a);let c=1,f=-1;for(let g=0;g<e.numberOfChannels;g+=1){const O=e.getChannelData(g);for(let j=d;j<u;j+=1){const R=O[j]??0;R<c&&(c=R),R>f&&(f=R)}}f===-1&&c===1&&(c=0,f=0),o[l]=c,s[l]=f}return{durationMs:e.duration*1e3,binDurationMs:e.duration*1e3/n,minPeaks:o,maxPeaks:s,channelCount:e.numberOfChannels,sampleRate:e.sampleRate}}async function vo(e){const t=await fetch(e,{cache:"no-store"});if(!t.ok)throw new Error(`Failed to load recording (${t.status})`);const n=await t.arrayBuffer(),a=Qr();try{const o=await a.decodeAudioData(n.slice(0));return{peaks:po(o),audioBuffer:o}}finally{await a.close().catch(()=>{})}}function mo(e,t){const n=Math.max(1,Math.floor(t.width)),a=Math.max(1,Math.floor(t.height)),o=window.devicePixelRatio||1;e.width=Math.max(1,Math.round(n*o)),e.height=Math.max(1,Math.round(a*o)),e.style.width=`${n}px`,e.style.height=`${a}px`;const s=e.getContext("2d");if(!s)return;s.setTransform(o,0,0,o,0,0),s.clearRect(0,0,n,a),s.fillStyle="rgba(10, 10, 10, 0.2)",s.fillRect(0,0,n,a);const l=t.viewportEndMs-t.viewportStartMs;if(l<=0||t.peaks.minPeaks.length===0||t.peaks.binDurationMs<=0)return;const d=t.recordingStartMs+t.peaks.durationMs,u=Math.max(t.viewportStartMs,t.recordingStartMs),c=Math.min(t.viewportEndMs,d),f=a/2,g=a*.42;if(s.strokeStyle="rgba(147, 255, 109, 0.95)",s.lineWidth=1,s.beginPath(),c>u){const O=Math.max(0,Math.floor((u-t.recordingStartMs)/t.peaks.binDurationMs)),j=Math.min(t.peaks.minPeaks.length-1,Math.ceil((c-t.recordingStartMs)/t.peaks.binDurationMs));for(let R=O;R<=j;R+=1){const ge=(t.recordingStartMs+R*t.peaks.binDurationMs-t.viewportStartMs)/l*n,ee=t.peaks.minPeaks[R]??0,Rt=t.peaks.maxPeaks[R]??0,It=f-Rt*g,Ct=f-ee*g;s.moveTo(ge,It),s.lineTo(ge,Ct)}}s.stroke(),s.strokeStyle="rgba(255, 255, 255, 0.18)",s.lineWidth=1,s.beginPath(),s.moveTo(0,f),s.lineTo(n,f),s.stroke()}function ir(){je&&(window.cancelAnimationFrame(je),je=0)}async function ho(){const e=le;le=null,e&&await e.close().catch(()=>{})}async function bo(){return(!le||le.state==="closed")&&(le=Qr()),le.state==="suspended"&&await le.resume(),le}function en(){const e=tn();if(r(ce)&&le&&lt!=null&&ct!=null){const t=(le.currentTime-ct)*1e3,n=lt+Math.max(0,t);return e>0?H(n,0,e):Math.max(0,n)}return e>0?H(r(G),0,e):Math.max(0,r(G))}function Je(e=!0){e&&i(G,en(),!0);const t=it;if(it=null,lt=null,ct=null,i(ce,!1),ir(),!!t){t.onended=null;try{t.stop()}catch{}t.disconnect()}}function xo(){ir();const e=()=>{if(!r(ce)){je=0;return}i(G,en(),!0),je=window.requestAnimationFrame(e)};je=window.requestAnimationFrame(e)}function tn(){return r(K)&&Number.isFinite(r(K).durationMs)?Math.max(0,r(K).durationMs):ue&&Number.isFinite(ue.duration)?Math.max(0,ue.duration*1e3):0}function yo(e){const t=tn(),n=t>0?H(e,0,t):Math.max(0,e);i(G,n,!0),r(ce)&&nn(n)}function go(e,t){if(r(p)==null||r(_)==null||r(ye)==null)return;const n=t.getBoundingClientRect(),a=H((e-n.left)/Math.max(1,n.width),0,1),o=r(p)+a*(r(_)-r(p));i(de,null),yo(o-r(ye))}function wo(e){const t=e instanceof HTMLElement?e:null;if(!t)return!1;const n=t.tagName;return t.isContentEditable||n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||n==="BUTTON"||n==="A"}async function rn(){if(!(!r(A).exists||!r(A).audioUrl)){if(i(de,null),r(ce)){Je(!0);return}await nn(r(G))}}async function nn(e){const t=ue;if(!t){i(de,r(Ve)?"Recording is still decoding":"Failed to decode recording for playback",!0);return}const n=Math.max(0,t.duration*1e3),a=n>0?e>=n?0:H(e,0,n):Math.max(0,e);Je(!1),i(G,a,!0);try{const o=await bo(),s=o.createBufferSource();s.buffer=t,s.connect(o.destination),s.onended=()=>{it===s&&(it=null,lt=null,ct=null,i(ce,!1),i(G,n,!0),ir())},it=s,lt=a,ct=o.currentTime,i(ce,!0),i(de,null),xo(),s.start(0,a/1e3)}catch(o){Je(!1),i(ce,!1),i(de,o instanceof Error?o.message:"Failed to play recording",!0)}}function _o(e){const t=new Set;return e.filter(n=>{const a=J(n==null?void 0:n.traceId);return a?t.has(a)?!1:(t.add(a),!0):!0})}function To(e){const t=new Set;return e.filter(n=>{const a=J(n==null?void 0:n.traceId);return a?t.has(a)?!1:(t.add(a),!0):!0})}function lr(e,t){return e.createdAt-t.createdAt||String(e.traceId??"").localeCompare(String(t.traceId??""))}async function Mo(e){const t=[];let n;for(;;){const a=await tt.getLatencyTraces(e,500,n);if(t.push(...a.items??[]),n=a.lastTraceId,!n)break}return _o(t).slice().sort(pt)}async function So(e){const t=[];let n;for(;;){const a=await tt.getTraces(e,100,n);if(t.push(...a.items??[]),n=a.lastTraceId,!n)break}return To(t).slice().sort(lr)}async function Lo(e){const t=++yt;i(Le,!1),i(Oe,!0),i(We,null);try{const[n,a,o]=await Promise.all([tt.getConversation(e).catch(s=>(console.error("Failed to load conversation details:",s),null)),Mo(e),So(e).catch(s=>(console.error("Failed to load conversation traces for latency matching:",s),[]))]);if(t!==yt)return;i(Se,n,!0),i(q,a,!0),i(oe,o,!0),i(Le,!0)}catch(n){if(t!==yt)return;i(We,n instanceof Error?n.message:String(n),!0),i(Se,null),i(q,[],!0),i(oe,[],!0)}finally{if(t!==yt)return;i(Oe,!1),Ge()}}async function an(e){if(Je(!1),i(A,e,!0),i(me,null),i(de,null),i(G,0),!e.exists||!e.audioUrl){ue=null,i(K,null),i(Ve,!1),i(Pe,null);return}const t=++gt;i(Ve,!0),i(Pe,null);try{const n=await vo(e.audioUrl);if(t!==gt)return;i(K,n.peaks,!0),ue=n.audioBuffer}catch(n){if(t!==gt)return;ue=null,i(K,null),i(Pe,n instanceof Error?n.message:String(n),!0)}finally{if(t!==gt)return;i(Ve,!1)}}async function Po(e=r(ut)){if(!e)return;const t=++st;i(He,!1),i(bt,!0),i(ve,null);try{const n=await fetch(e,{cache:"no-store",headers:{accept:"application/json"}}),a=await sr(n);if(!n.ok)throw new Error(or(a,"Failed to load recording metadata"));if(t!==st||(await an(Pt(a)),t!==st))return;i(He,!0)}catch(n){if(t!==st)return;i(ve,n instanceof Error?n.message:String(n),!0),i(A,Pt({}),!0),i(K,null),i(Ve,!1)}finally{if(t!==st)return;i(bt,!1),Ge()}}function cr(e=!0){const t=r(_t)??r(Ye);if(!t)return;const n=r(W);i(p,n,!0),i(_,Math.max(n+1e3,t.max),!0),i(se,e,!0)}function Eo(e,t){const n=r(Ye);if(!n)return{startMs:e,endMs:t};const a=t-e;if(a<=0)return{startMs:e,endMs:t};const o=Math.max(1e3,a*.25),s=n.min-o,l=n.max+o;return a>=l-s?{startMs:s,endMs:l}:(e<s&&(t+=s-e,e=s),t>l&&(e-=t-l,t=l),{startMs:e,endMs:t})}function dr(e,t){if(!Number.isFinite(e)||!Number.isFinite(t)||t<=e)return;const n=Eo(e,t);i(p,n.startMs,!0),i(_,n.endMs,!0)}function kt(e,t=.5){if(r(p)==null||r(_)==null)return;const n=r(_)-r(p);if(!Number.isFinite(n)||n<=0)return;const a=r(Ye),o=a?a.max-a.min:n,s=Math.min(100,n),l=Math.max(o+Math.max(2e3,o*.1),5e3),d=H(n*e,s,l),u=H(t,0,1),f=r(p)+n*u-d*u;i(se,!0),dr(f,f+d)}function ko(e){let t=e.deltaY;return e.deltaMode===WheelEvent.DOM_DELTA_LINE?t*=16:e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=window.innerHeight),H(t,-Pr,Pr)}function on(e){return Math.exp(ko(e)*Xn)}function ur(e){if(r(he)<=0)return;e.preventDefault();const t=e.currentTarget.getBoundingClientRect(),n=H((e.clientX-t.left)/Math.max(1,t.width),0,1);kt(on(e),n)}function Ao(e){if(r(Ue)<=0)return;e.preventDefault();const t=e.currentTarget.getBoundingClientRect(),n=H((e.clientX-t.left)/Math.max(1,t.width),0,1);kt(on(e),n)}function sn(e){var u;xe==null||xe();const t=Math.max(0,e.activationDistancePx??0);let n=t===0;n&&((u=e.onStart)==null||u.call(e));const a=c=>{var O;if(n)return!0;const f=c.clientX-e.startEvent.clientX,g=c.clientY-e.startEvent.clientY;return Math.hypot(f,g)<t?!1:(n=!0,(O=e.onStart)==null||O.call(e),!0)},o=c=>{a(c)&&e.onMove(c)},s=c=>{var f,g;window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",d),xe=null,!n&&c&&((f=e.onClick)==null||f.call(e,c)),(g=e.onEnd)==null||g.call(e,{wasDrag:n,event:c})},l=c=>s(c),d=()=>s();window.addEventListener("pointermove",o),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",d),xe=()=>s()}function ln(e){if(e.button!==0||r(p)==null||r(_)==null||r(he)<=0)return;e.preventDefault(),i(se,!0);const t=e.clientX,n=r(p),a=r(_)-r(p);sn({startEvent:e,onMove:o=>{const l=(o.clientX-t)/r(he)*a;dr(n-l,n-l+a)}})}function cn(e){i(A,{...r(A),alignmentOffsetMs:Math.round(e)},!0)}async function dn(){if(!(!r(A).exists||!r(ut))){i(Vt,!0),i(me,null);try{const e=await fetch(r(ut),{method:"PATCH",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({alignmentOffsetMs:r(A).alignmentOffsetMs})}),t=await sr(e);if(!e.ok)throw new Error(or(t,"Failed to save alignment offset"));i(A,Pt(t),!0)}catch(e){i(me,e instanceof Error?e.message:String(e),!0)}finally{i(Vt,!1)}}}function $o(e){if(e.button!==0||!r(A).exists||r(K)==null||r(p)==null||r(_)==null||r(Ue)<=0)return;e.preventDefault(),i(me,null);const t=e.currentTarget,n=e.clientX,a=r(A).alignmentOffsetMs,o=r(_)-r(p);sn({startEvent:e,activationDistancePx:6,onStart:()=>{i(se,!0)},onMove:s=>{const d=(s.clientX-n)/r(Ue)*o;cn(a+d)},onClick:s=>{go(s.clientX,t)},onEnd:({wasDrag:s})=>{s&&dn()}})}async function Ro(){r(A).exists&&(i(se,!0),cn(0),await dn())}async function Io(e){var a;const t=e.currentTarget,n=(a=t.files)==null?void 0:a[0];if(t.value="",!(!n||!r(ut))){i(xt,!0),i(ve,null),i(me,null);try{const o=new URL(r(ut),window.location.origin);o.searchParams.set("filename",n.name);const s=await fetch(o,{method:"POST",headers:{accept:"application/json","content-type":n.type||"audio/wav"},body:n}),l=await sr(s);if(!s.ok)throw new Error(or(l,"Failed to upload recording"));i(se,!1),await an(Pt(l)),cr(!1),i(He,!0),Ge()}catch(o){i(ve,o instanceof Error?o.message:String(o),!0)}finally{i(xt,!1)}}}var un=Ys(),At=vt(un),fr=y(At),pr=y(fr),vr=y(pr),mr=y(vr),Co=m(y(mr));{var Bo=e=>{var t=Ms(),n=m(vt(t),2),a=y(n,!0);h(n),S(()=>I(a,r(Xe))),x(e,t)};D(Co,e=>{r(Xe)&&e(Bo)})}h(mr);var fn=m(mr,2),hr=y(fn),pn=m(y(hr),2),No=y(pn,!0);h(pn),h(hr);var br=m(hr,2),vn=m(y(br),2),Fo=y(vn,!0);h(vn),h(br);var xr=m(br,2),mn=m(y(xr),2),Do=y(mn,!0);h(mn),h(xr);var hn=m(xr,2);{var Oo=e=>{var t=Ss(),n=m(y(t),2),a=y(n,!0);h(n),h(t),S(o=>I(a,o),[()=>Ze(r(er)-r(W))]),x(e,t)};D(hn,e=>{r(A).exists&&r(er)!=null&&e(Oo)})}var Wo=m(hn,2);{var Ho=e=>{var t=Ls(),n=m(y(t),2),a=y(n);h(n),h(t),S((o,s)=>I(a,`${o??""} → ${s??""}`),[()=>Ze(r(p)-r(W)),()=>Ze(r(_)-r(W))]),x(e,t)};D(Wo,e=>{r(p)!=null&&r(_)!=null&&e(Ho)})}h(fn),h(vr);var bn=m(vr,2),yr=y(bn);Be(yr,e=>i(Xt,e),()=>r(Xt));var xn=m(yr,2);Ne(xn,{variant:"secondary",size:"small",get disabled(){return r(xt)},onclick:()=>{var e;return(e=r(Xt))==null?void 0:e.click()},children:(e,t)=>{Ce();var n=Ie();S(()=>I(n,r(xt)?"Uploading…":r(A).exists?"Replace WAV":"Upload WAV")),x(e,n)},$$slots:{default:!0}});var yn=m(xn,2);{let e=T(()=>!r(A).exists);Ne(yn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>void rn(),children:(t,n)=>{Ce();var a=Ie();S(()=>I(a,r(ce)?"Pause":"Play")),x(t,a)},$$slots:{default:!0}})}var gn=m(yn,2);{let e=T(()=>r(Or)==null);Ne(gn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>kt(.8),children:(t,n)=>{Ce();var a=Ie("Zoom in");x(t,a)},$$slots:{default:!0}})}var wn=m(gn,2);{let e=T(()=>r(Or)==null);Ne(wn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>kt(1.25),children:(t,n)=>{Ce();var a=Ie("Zoom out");x(t,a)},$$slots:{default:!0}})}var _n=m(wn,2);{let e=T(()=>!(r(_t)??r(Ye)));Ne(_n,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:()=>cr(!0),children:(t,n)=>{Ce();var a=Ie("Fit call");x(t,a)},$$slots:{default:!0}})}var Tn=m(_n,2);{let e=T(()=>!r(A).exists||r(Vt));Ne(Tn,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:Ro,children:(t,n)=>{Ce();var a=Ie("Reset alignment");x(t,a)},$$slots:{default:!0}})}var Vo=m(Tn,2);{let e=T(()=>!r(q).length);Ne(Vo,{variant:"secondary",size:"small",get disabled(){return r(e)},onclick:fa,children:(t,n)=>{Ce();var a=Ie();S(()=>I(a,r(Ke)==="ok"?"Copied":r(Ke)==="error"?"Copy failed":"Copy latency stream")),x(t,a)},$$slots:{default:!0}})}h(bn),h(pr);var Mn=m(pr,2);{var Uo=e=>{var t=Ps(),n=y(t,!0);h(t),S(()=>I(n,r(Oe)?"Loading call latency…":"Loading recording…")),x(e,t)};D(Mn,e=>{(r(Oe)||r(bt))&&e(Uo)})}var Sn=m(Mn,2);{var qo=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Failed to load latency traces: ${r(We)??""}`)),x(e,t)};D(Sn,e=>{r(We)&&e(qo)})}var Ln=m(Sn,2);{var Ko=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Recording error: ${r(ve)??""}`)),x(e,t)};D(Ln,e=>{r(ve)&&e(Ko)})}var Pn=m(Ln,2);{var jo=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Alignment error: ${r(me)??""}`)),x(e,t)};D(Pn,e=>{r(me)&&e(jo)})}var Xo=m(Pn,2);{var zo=e=>{var t=Ft(),n=y(t);h(t),S(()=>I(n,`Playback error: ${r(de)??""}`)),x(e,t)};D(Xo,e=>{r(de)&&e(zo)})}h(fr);var $t=m(fr,2),En=y($t),kn=y(En),Yo=y(kn);{var Go=e=>{var t=Es();x(e,t)},Zo=e=>{var t=ks();x(e,t)},Jo=e=>{var t=As();x(e,t)},Qo=e=>{var t=js(),n=y(t),a=m(y(n),2);re(a,19,()=>r(ke),v=>v.label,(v,M,P)=>{var $=$s(),V=y($,!0);h($),S(()=>{N($,`height:${Me}px;margin-top:${r(P)===0?0:ae}px;`),I(V,r(M).label)}),x(v,$)});var o=m(a,2),s=m(o,2);{var l=v=>{var M=Rs();N(M,`height:${Ot}px;margin-top:${ae}px;`),x(v,M)};D(s,v=>{r(ft)&&v(l)})}h(n);var d=m(n,2),u=y(d),c=y(u);re(c,17,()=>r(Br),v=>v.id,(v,M)=>{var P=Is();S($=>N(P,$),[()=>ja(r(M))]),x(v,P)});var f=m(c,2);re(f,17,()=>r(oa),v=>v.id,(v,M)=>{var P=Cs();S($=>N(P,$),[()=>so(r(M))]),x(v,P)});var g=m(f,2);{var O=v=>{var M=Bs();S(P=>N(M,P),[()=>io(r(Dr))]),x(v,M)};D(g,v=>{r(Dr)&&v(O)})}var j=m(g,2);{var R=v=>{var M=Ns(),P=vt(M),$=m(P,2);S(()=>{N(P,`left:${r(ze).leftPercent}%;top:${r(ze).topPx}px;height:${r(ze).heightPx}px;`),N($,`left:${r(ze).leftPercent}%;top:${r(ze).topPx-4}px;`)}),x(v,M)};D(j,v=>{r(ze)&&v(R)})}h(u);var F=m(u,2);re(F,21,()=>r(Tt),v=>v.time,(v,M,P,$)=>{var V=Fs(),we=vt(V),X=m(we,2),k=y(X,!0);h(X),S(U=>{N(we,`left:${r(M).leftPercent}%;`),et(X,1,U),N(X,`left:${r(M).leftPercent}%;`),I(k,r(M).label)},[()=>mt(lo(r(M)))]),x(v,V)}),h(F),Be(F,v=>i(Ut,v),()=>r(Ut));var ge=m(F,2);re(ge,19,()=>r(ke),v=>v.label,(v,M,P)=>{var $=Ws(),V=y($);re(V,17,()=>r(Tt),X=>X.time,(X,k,U,_e)=>{var Qe=Fn();S(()=>N(Qe,`left:${r(k).leftPercent}%;`)),x(X,Qe)});var we=m(V,2);re(we,17,()=>r(M).segments,X=>X.id,(X,k)=>{const U=T(()=>to(r(k))),_e=T(()=>eo(r(k)));var Qe=us(),Bt=vt(Qe);{var ss=gr=>{var Te=Os(),is=y(Te);{var ls=$e=>{var wr=Ds(),cs=y(wr,!0);h(wr),S(()=>I(cs,r(_e))),x($e,wr)};D(is,$e=>{r(_e)&&$e(ls)})}h(Te),S($e=>{et(Te,1,$e),N(Te,r(U))},[()=>mt(ro(r(k)))]),pe("pointerenter",Te,$e=>oo(r(k),$e)),pe("pointerleave",Te,Jr),Re("pointerdown",Te,Jr),x(gr,Te)};D(Bt,gr=>{r(U)&&gr(ss)})}x(X,Qe)}),h($),S(()=>N($,`height:${Me}px;margin-top:${r(P)===0?0:ae}px;`)),Re("pointerdown",$,ln),pe("wheel",$,ur),x(v,$)});var ee=m(ge,2);let Rt;var It=y(ee),Ct=m(It,2);re(Ct,17,()=>r(Tt),v=>v.time,(v,M,P,$)=>{var V=Hs();S(()=>N(V,`left:${r(M).leftPercent}%;`)),x(v,V)});var ns=m(Ct,2);re(ns,17,()=>r(Br),v=>v.id,(v,M)=>{var P=Dn(),$=y(P,!0);h(P),S((V,we)=>{et(P,1,V),N(P,we),I($,r(M).text)},[()=>mt(Xa(r(M))),()=>Ka(r(M))]),pe("pointerenter",P,V=>Gr(r(M),V)),pe("pointerleave",P,St),Re("pointerdown",P,St),x(v,P)}),h(ee);var as=m(ee,2);{var os=v=>{var M=Ks();N(M,`height:${Ot}px;margin-top:${ae}px;`);var P=y(M);{var $=k=>{var U=Vs();x(k,U)},V=k=>{var U=Us(),_e=y(U);h(U),S(()=>I(_e,`Failed to decode waveform: ${r(Pe)??""}`)),x(k,U)},we=k=>{var U=qs();Be(U,_e=>i(Kt,_e),()=>r(Kt)),x(k,U)};D(P,k=>{r(Ve)?k($):r(Pe)?k(V,1):k(we,-1)})}var X=m(P,2);re(X,17,()=>r(Tt),k=>k.time,(k,U,_e,Qe)=>{var Bt=Fn();S(()=>N(Bt,`left:${r(U).leftPercent}%;`)),x(k,Bt)}),h(M),Be(M,k=>i(qt,k),()=>r(qt)),Re("pointerdown",M,$o),pe("wheel",M,Ao),x(v,M)};D(as,v=>{r(ft)&&v(os)})}h(d),h(t),S(()=>{N(o,`height:${r(Jt)}px;margin-top:${r(wt)}px;`),Rt=et(ee,1,"relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60",null,Rt,{"rounded-b":!r(ft),"border-b":!r(ft)}),N(ee,`height:${r(Nr)}px;margin-top:${r(wt)}px;`),N(It,`height:${r(Jt)}px;`)}),pe("wheel",F,ur),Re("pointerdown",ee,ln),pe("wheel",ee,ur),x(e,t)};D(Yo,e=>{r(Oe)?e(Go):r(Ee).length?r(p)==null||r(_)==null?e(Jo,2):e(Qo,-1):e(Zo,1)})}h(kn),h(En),h($t),Be($t,e=>i(ie,e),()=>r(ie)),h(At);var An=m(At,2);{var es=e=>{Be(Rn(e,{get referenceEl(){return r(rt)},placement:"top-start",offset:[0,10],children:n=>{var a=Xs();re(a,21,()=>r(sa),hs,(o,s,l)=>{var d=Dn();et(d,1,mt(l===0?"font-semibold text-rc-gray-050":"mt-1 whitespace-pre-wrap break-words text-rc-gray-300"));var u=y(d,!0);h(d),S(()=>I(u,r(s))),x(o,d)}),h(a),x(n,a)},$$slots:{default:!0}}),n=>i(zt,n,!0),()=>r(zt))};D(An,e=>{r(qe)&&r(rt)&&e(es)})}var ts=m(An,2);{var rs=e=>{const t=T(()=>r(nt));Be(Rn(e,{get referenceEl(){return r(at)},placement:"top-start",offset:[0,-4],flip:!1,children:a=>{var o=zs(),s=y(o),l=y(s,!0);h(s),h(o),S(d=>{et(o,1,d),I(l,r(t).fullText)},[()=>mt(za(r(t)))]),x(a,o)},$$slots:{default:!0}}),a=>i(Yt,a,!0),()=>r(Yt))};D(ts,e=>{r(nt)&&r(at)&&e(rs)})}S(e=>{I(No,r(ea)),I(Fo,r(Ee).length),I(Do,e)},[()=>da(r(A).alignmentOffsetMs)]),Re("click",At,e=>e.stopPropagation()),Re("change",yr,Io),pe("scroll",$t,la),x(B,un),vs()}ds(["click","change","pointerdown"]);export{pi as component};
@@ -1,4 +1,4 @@
1
- import{a as c,t as W,f as x,d as xe,c as Gt,b as ie,e as De}from"../chunks/Ca197UDq.js";import"../chunks/BNifnXkO.js";import{o as Ue,a as We}from"../chunks/C39ai1md.js";import{p as ce,d as Ke,j as t,y as f,c as _,f as dt,s as C,n as Nt,r as m,a as ue,w as Qt,o as xt,t as U,k as ot,h as d,_ as Z,a4 as B,bf as Ut,bg as qe,e as Be,$ as He,T as Ve,bh as fe}from"../chunks/CxLomzuE.js";import{s as G}from"../chunks/DJriQKD9.js";import{p as X,a as Ye,s as Ge}from"../chunks/CPXdAKdv.js";import{i as L}from"../chunks/Buo-57fF.js";import{e as le,i as pe}from"../chunks/BJTwdUYr.js";import{h as Qe}from"../chunks/iAhzu4tv.js";import{c as Xe}from"../chunks/D-B5X35l.js";import{b as Ze}from"../chunks/BLu86SbA.js";import{i as be}from"../chunks/BI42X8h_.js";import{s as tr}from"../chunks/BVxLHCs8.js";import{g as ve,T as er}from"../chunks/JcG4w2gF.js";import{i as se}from"../chunks/BTX1tKMW.js";import{b as rr,f as ar}from"../chunks/T0seCQS_.js";import{B as gt}from"../chunks/CVlsAO8k.js";import{D as nr}from"../chunks/lmnC3bvv.js";import{I as or,h as me}from"../chunks/07xNIa59.js";import{M as ge}from"../chunks/CyvQWZoe.js";import{m as sr}from"../chunks/ddC1NP9R.js";import{C as ir,a as lr,b as cr,f as ye,c as _e}from"../chunks/Z1_c4us_.js";import{s as jt}from"../chunks/CAjPRvNs.js";import{g as ur,c as he}from"../chunks/CaHl3dME.js";const dr=()=>{const rt=tr;return{page:{subscribe:rt.page.subscribe},navigating:{subscribe:rt.navigating.subscribe},updated:rt.updated}},fr={subscribe(rt){return dr().page.subscribe(rt)}};var pr=x("<!> <!>",1),vr=x('<div class="mt-1 overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox"><!> <!></div>'),mr=x("<div><!> <!></div>");function gr(rt,k){ce(k,!0);let S=X(k,"disabled",3,!1),bt=X(k,"dropdownId",3,"copy-traces-dropdown"),j=Qt(!1),st=Qt(null),at=Qt(null),it=Qt(null);Ke(()=>{S()&&t(j)&&f(j,!1)});async function yt(D){try{const E=D==="with-prompts"?k.getWithPromptsText():k.getWithoutPromptsText();await navigator.clipboard.writeText(E),f(at,D,!0),t(it)&&clearTimeout(t(it)),f(it,window.setTimeout(()=>{f(at,null),f(it,null)},2e3),!0)}catch(E){console.error("Failed to copy traces",E)}}var ft=mr(),p=_(ft);gt(p,{variant:"secondary",size:"small",get disabled(){return S()},get"aria-expanded"(){return t(j)},"aria-haspopup":"listbox",get"aria-controls"(){return bt()},onclick:D=>{D.stopPropagation(),f(j,!t(j))},class:"flex items-center gap-1",get el(){return t(st)},set el(D){f(st,D,!0)},children:(D,E)=>{var h=pr(),$=dt(h);{var _t=P=>{var tt=W("Copied traces (without prompts)");c(P,tt)},z=P=>{var tt=W("Copied traces (with prompts)");c(P,tt)},lt=P=>{var tt=W("Copy traces");c(P,tt)};L($,P=>{t(at)==="without-prompts"?P(_t):t(at)==="with-prompts"?P(z,1):P(lt,-1)})}var K=C($,2);{let P=Nt(()=>"size-5 text-rc-gray-400 transition-transform duration-200 "+(t(j)?"rotate-180":""));or(K,{name:"chevron-down",get class(){return t(P)}})}c(D,h)},$$slots:{default:!0}});var Tt=C(p,2);nr(Tt,{get id(){return bt()},get open(){return t(j)},onClose:()=>f(j,!1),get anchorEl(){return t(st)},placement:"bottom-end",offset:[0,1],children:E=>{var h=vr(),$=_(h);gt($,{variant:"ghost",size:"small",role:"option",onclick:z=>{z.stopPropagation(),f(j,!1),yt("without-prompts")},class:"w-full rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400",children:(z,lt)=>{xt();var K=W("Without prompts");c(z,K)},$$slots:{default:!0}});var _t=C($,2);gt(_t,{variant:"ghost",size:"small",role:"option",onclick:z=>{z.stopPropagation(),f(j,!1),yt("with-prompts")},class:"w-full rounded-none py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400",children:(z,lt)=>{xt();var K=W("With prompts");c(z,K)},$$slots:{default:!0}}),m(h),c(E,h)},$$slots:{default:!0}}),m(ft),c(rt,ft),ue()}var yr=x("<div> </div>"),_r=x('<div class="mt-1 whitespace-pre-wrap break-words text-xs italic text-rc-gray-200"> </div>'),hr=x("<div><!> <!> <!></div>"),xr=x("<div><div><div> </div> <div><!> <!></div> <!></div></div>"),br=x('<div class="space-y-3"></div>'),Tr=x('<div class="whitespace-pre-wrap break-words"><!></div>'),wr=x('<button class="inline-flex text-sm text-rc-green-200 hover:text-rc-green-100"> </button>'),Sr=x('<div><span class="whitespace-pre-wrap break-words"><!></span> <!></div>');function $r(rt,k){ce(k,!1);let S=X(k,"value",8,""),bt=X(k,"limit",8,200),j=X(k,"maxLines",8,null),st=X(k,"className",8,""),at=X(k,"collapsedLabel",8,"...more"),it=X(k,"initiallyExpanded",8,!1),yt=X(k,"stopPropagation",8,!0),ft=X(k,"expanded",28,it),p=X(k,"treatPlainText",8,!1),Tt=X(k,"highlightPrompt",8,!1);function D(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function E(s){const l=h(s);let n=D(l);const u=[];return n=n.replace(/(\{+[\s\S]*?\}+)/g,g=>{const y=u.length;return u.push(g),`__CURLY${y}__`}),n=n.replace(/^(\s*#.*)$/gm,'<span class="prompt-heading">$1</span>'),n=n.replace(/(&lt;[^&]*?&gt;)/g,'<span class="mtk8">$1</span>'),n=n.replace(/^(\s*)(\d+)([.)])(\s+)/gm,(g,y,w,O,ct)=>`${y}<span class="mtk8">${w}${O}</span>${ct}`),u.forEach((g,y)=>{const w=`<span class="mtk5">${g}</span>`;n=n.replace(`__CURLY${y}__`,w)}),n=n.replace(/\n/g,"<br/>"),n}function h(s){let l=s.replace(/\r\n/g,`
1
+ import{a as c,t as W,f as x,d as xe,c as Gt,b as ie,e as De}from"../chunks/Ca197UDq.js";import"../chunks/BNifnXkO.js";import{o as Ue,a as We}from"../chunks/C39ai1md.js";import{p as ce,d as Ke,j as t,y as f,c as _,f as dt,s as C,n as Nt,r as m,a as ue,w as Qt,o as xt,t as U,k as ot,h as d,_ as Z,a4 as B,bf as Ut,bg as qe,e as Be,$ as He,T as Ve,bh as fe}from"../chunks/CxLomzuE.js";import{s as G}from"../chunks/DJriQKD9.js";import{p as X,a as Ye,s as Ge}from"../chunks/CPXdAKdv.js";import{i as L}from"../chunks/Buo-57fF.js";import{e as le,i as pe}from"../chunks/BJTwdUYr.js";import{h as Qe}from"../chunks/iAhzu4tv.js";import{c as Xe}from"../chunks/D-B5X35l.js";import{b as Ze}from"../chunks/BLu86SbA.js";import{i as be}from"../chunks/BI42X8h_.js";import{s as tr}from"../chunks/BD9x_mnu.js";import{g as ve,T as er}from"../chunks/JcG4w2gF.js";import{i as se}from"../chunks/DgGeUDDh.js";import{b as rr,f as ar}from"../chunks/T0seCQS_.js";import{B as gt}from"../chunks/CVlsAO8k.js";import{D as nr}from"../chunks/Bj8jfBTi.js";import{I as or,h as me}from"../chunks/07xNIa59.js";import{M as ge}from"../chunks/CyvQWZoe.js";import{m as sr}from"../chunks/ddC1NP9R.js";import{C as ir,a as lr,b as cr,f as ye,c as _e}from"../chunks/_U9sB4BM.js";import{s as jt}from"../chunks/CAjPRvNs.js";import{g as ur,c as he}from"../chunks/CaHl3dME.js";const dr=()=>{const rt=tr;return{page:{subscribe:rt.page.subscribe},navigating:{subscribe:rt.navigating.subscribe},updated:rt.updated}},fr={subscribe(rt){return dr().page.subscribe(rt)}};var pr=x("<!> <!>",1),vr=x('<div class="mt-1 overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox"><!> <!></div>'),mr=x("<div><!> <!></div>");function gr(rt,k){ce(k,!0);let S=X(k,"disabled",3,!1),bt=X(k,"dropdownId",3,"copy-traces-dropdown"),j=Qt(!1),st=Qt(null),at=Qt(null),it=Qt(null);Ke(()=>{S()&&t(j)&&f(j,!1)});async function yt(D){try{const E=D==="with-prompts"?k.getWithPromptsText():k.getWithoutPromptsText();await navigator.clipboard.writeText(E),f(at,D,!0),t(it)&&clearTimeout(t(it)),f(it,window.setTimeout(()=>{f(at,null),f(it,null)},2e3),!0)}catch(E){console.error("Failed to copy traces",E)}}var ft=mr(),p=_(ft);gt(p,{variant:"secondary",size:"small",get disabled(){return S()},get"aria-expanded"(){return t(j)},"aria-haspopup":"listbox",get"aria-controls"(){return bt()},onclick:D=>{D.stopPropagation(),f(j,!t(j))},class:"flex items-center gap-1",get el(){return t(st)},set el(D){f(st,D,!0)},children:(D,E)=>{var h=pr(),$=dt(h);{var _t=P=>{var tt=W("Copied traces (without prompts)");c(P,tt)},z=P=>{var tt=W("Copied traces (with prompts)");c(P,tt)},lt=P=>{var tt=W("Copy traces");c(P,tt)};L($,P=>{t(at)==="without-prompts"?P(_t):t(at)==="with-prompts"?P(z,1):P(lt,-1)})}var K=C($,2);{let P=Nt(()=>"size-5 text-rc-gray-400 transition-transform duration-200 "+(t(j)?"rotate-180":""));or(K,{name:"chevron-down",get class(){return t(P)}})}c(D,h)},$$slots:{default:!0}});var Tt=C(p,2);nr(Tt,{get id(){return bt()},get open(){return t(j)},onClose:()=>f(j,!1),get anchorEl(){return t(st)},placement:"bottom-end",offset:[0,1],children:E=>{var h=vr(),$=_(h);gt($,{variant:"ghost",size:"small",role:"option",onclick:z=>{z.stopPropagation(),f(j,!1),yt("without-prompts")},class:"w-full rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400",children:(z,lt)=>{xt();var K=W("Without prompts");c(z,K)},$$slots:{default:!0}});var _t=C($,2);gt(_t,{variant:"ghost",size:"small",role:"option",onclick:z=>{z.stopPropagation(),f(j,!1),yt("with-prompts")},class:"w-full rounded-none py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400",children:(z,lt)=>{xt();var K=W("With prompts");c(z,K)},$$slots:{default:!0}}),m(h),c(E,h)},$$slots:{default:!0}}),m(ft),c(rt,ft),ue()}var yr=x("<div> </div>"),_r=x('<div class="mt-1 whitespace-pre-wrap break-words text-xs italic text-rc-gray-200"> </div>'),hr=x("<div><!> <!> <!></div>"),xr=x("<div><div><div> </div> <div><!> <!></div> <!></div></div>"),br=x('<div class="space-y-3"></div>'),Tr=x('<div class="whitespace-pre-wrap break-words"><!></div>'),wr=x('<button class="inline-flex text-sm text-rc-green-200 hover:text-rc-green-100"> </button>'),Sr=x('<div><span class="whitespace-pre-wrap break-words"><!></span> <!></div>');function $r(rt,k){ce(k,!1);let S=X(k,"value",8,""),bt=X(k,"limit",8,200),j=X(k,"maxLines",8,null),st=X(k,"className",8,""),at=X(k,"collapsedLabel",8,"...more"),it=X(k,"initiallyExpanded",8,!1),yt=X(k,"stopPropagation",8,!0),ft=X(k,"expanded",28,it),p=X(k,"treatPlainText",8,!1),Tt=X(k,"highlightPrompt",8,!1);function D(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function E(s){const l=h(s);let n=D(l);const u=[];return n=n.replace(/(\{+[\s\S]*?\}+)/g,g=>{const y=u.length;return u.push(g),`__CURLY${y}__`}),n=n.replace(/^(\s*#.*)$/gm,'<span class="prompt-heading">$1</span>'),n=n.replace(/(&lt;[^&]*?&gt;)/g,'<span class="mtk8">$1</span>'),n=n.replace(/^(\s*)(\d+)([.)])(\s+)/gm,(g,y,w,O,ct)=>`${y}<span class="mtk8">${w}${O}</span>${ct}`),u.forEach((g,y)=>{const w=`<span class="mtk5">${g}</span>`;n=n.replace(`__CURLY${y}__`,w)}),n=n.replace(/\n/g,"<br/>"),n}function h(s){let l=s.replace(/\r\n/g,`
2
2
  `);return l=l.replace(/\\n/g,`
3
3
  `),l}function $(s){try{if(Array.isArray(s)){const l=s.map(n=>(n==null?void 0:n.text)??(n==null?void 0:n.content)??JSON.stringify(n)).join(" ");return h(l)}if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l)){const n=l.map(u=>(u==null?void 0:u.text)??(u==null?void 0:u.content)??JSON.stringify(u)).join(" ");return h(n)}return h(s)}catch{return h(s)}return h(JSON.stringify(s))}catch{return h(String(s??""))}}function _t(s){try{if(Array.isArray(s)){const l=s.map(n=>(n==null?void 0:n.text)??(n==null?void 0:n.content)??JSON.stringify(n)).join(`
4
4
  `);return h(l)}if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l)){const n=l.map(u=>(u==null?void 0:u.text)??(u==null?void 0:u.content)??JSON.stringify(u)).join(`
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/DLQqXQ6R.js","../chunks/C1FmrZbK.js","../assets/editor.BMIWPGx3.css"])))=>i.map(i=>d[i]);
2
- var yn=Object.defineProperty;var _n=(N,C,c)=>C in N?yn(N,C,{enumerable:!0,configurable:!0,writable:!0,value:c}):N[C]=c;var Ae=(N,C,c)=>_n(N,typeof C!="symbol"?C+"":C,c);import{a as ie,f as ve,d as Bt,b as bt,t as Ge,c as ht}from"../chunks/Ca197UDq.js";import{o as Mt,a as Jt}from"../chunks/C39ai1md.js";import{p as vt,j as A,y as me,d as ze,c as ae,r as re,a as mt,w as je,s as de,o as Ve,t as Be,n as Te,f as De,a4 as xn,bh as wn,_ as bn,x as jt}from"../chunks/CxLomzuE.js";import{s as Pe}from"../chunks/DJriQKD9.js";import{i as Ie}from"../chunks/Buo-57fF.js";import{k as En,M as kn}from"../chunks/CyvQWZoe.js";import{e as ct,i as Rt}from"../chunks/BJTwdUYr.js";import{s as Sn}from"../chunks/BDl2QuyN.js";import{r as Xt,e as On}from"../chunks/D-B5X35l.js";import{s as Ln}from"../chunks/CAjPRvNs.js";import{a as Tn}from"../chunks/BPNEONy5.js";import{P as dt,g as Zt,s as An}from"../chunks/CzXNWL4m.js";import{B as lt}from"../chunks/CVlsAO8k.js";import{d as Dt,e as Cn,f as Nn,g as Pn,D as Rn}from"../chunks/lmnC3bvv.js";import{I as In}from"../chunks/07xNIa59.js";import{T as It,a as ot}from"../chunks/BsDZe4N6.js";import{p as Ct,l as Fn,C as Bn,P as Vt}from"../chunks/Dslf9OwW.js";import{r as Mn,g as pt}from"../chunks/BVxLHCs8.js";import{p as Ye}from"../chunks/ChVBNPUb.js";import{e as Nt,t as st}from"../chunks/E9rdsnHb.js";import{i as Kn}from"../chunks/BTX1tKMW.js";import{_ as en}from"../chunks/C1FmrZbK.js";import{b as tn}from"../chunks/BLu86SbA.js";import{e as nn,a as rn,c as jn}from"../chunks/BU7aeYn4.js";import{p as Pt}from"../chunks/CPXdAKdv.js";import{A as Dn}from"../chunks/C7he4XPB.js";import{g as Vn}from"../chunks/Cql_e8Of.js";import"../chunks/BNifnXkO.js";import{i as Un}from"../chunks/BI42X8h_.js";import{c as Ut,a as $n}from"../chunks/QpaC6J6s.js";var Wn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Hn(N){return N&&N.__esModule&&Object.prototype.hasOwnProperty.call(N,"default")?N.default:N}class Gn{constructor(C){Ae(this,"ws",null);Ae(this,"openHandler",null);Ae(this,"closeHandler",null);Ae(this,"errorHandler",null);Ae(this,"messageHandler",null);Ae(this,"retries",0);Ae(this,"maxRetries",5);Ae(this,"retryDelay",500);Ae(this,"retryTimeout",null);Ae(this,"isOpen",!1);Ae(this,"isDestroyed",!1);Ae(this,"agentsLoaded",!1);Ae(this,"init",()=>{if(!this.isOpen){this.agentsLoaded=!1,console.log(`Initializing websocket connection with [${this.wsUrl}]`);try{this.ws=new WebSocket(this.wsUrl)}catch{this.retryConnect();return}this.isDestroyed=!1,this.ws.onmessage=C=>{var E,_,d,w,l,t,y,O;const c=JSON.parse(C.data);c.channel==="error"?(E=this.errorHandler)==null||E.call(this,c.message):c.channel==="app-events"?(console.log("MSG:",c.event.type),c.event.type==="agents-loaded"&&(this.agentsLoaded=!0)):c.channel==="log"?console.log(`MSG: log [${c.message.severity}]`,c.message.message):c.channel==="api-call-trace"?console.log("MSG: api-call-trace",(_=c.trace)==null?void 0:_.operationName,(d=c.trace)==null?void 0:d.method,(w=c.trace)==null?void 0:w.path):c.channel==="conversational-trace"&&console.log("MSG: conversational-trace",(l=c.trace)==null?void 0:l.eventName,(t=c.trace)==null?void 0:t.role,(y=c.trace)==null?void 0:y.medium),(O=this.messageHandler)==null||O.call(this,c)},this.ws.onerror=C=>{var c;console.error("Websocket error:",C),(c=this.ws)==null||c.close(),this.retryConnect()},this.ws.onclose=()=>{console.log("Websocket closed"),this.isOpen=!1,this.retryConnect()},this.ws.onopen=()=>{var C;this.retries=0,this.isOpen=!0,this.retryTimeout&&clearTimeout(this.retryTimeout),(C=this.openHandler)==null||C.call(this),console.log("Websocket connected")}}});Ae(this,"destroy",()=>{var C;this.isDestroyed=!0,(C=this.ws)==null||C.close()});Ae(this,"onOpen",C=>{this.openHandler=C,this.isOpen&&C()});Ae(this,"onClose",C=>{this.closeHandler=C,this.isOpen||C()});Ae(this,"onError",C=>{this.errorHandler=C});Ae(this,"onMessage",C=>{this.messageHandler=C});Ae(this,"sendMessage",C=>{var c;C.channel,(c=this.ws)==null||c.send(JSON.stringify(C))});Ae(this,"isReady",()=>this.isOpen&&this.agentsLoaded);Ae(this,"retryConnect",()=>{var C,c;this.isDestroyed||(!this.isOpen&&this.retries<this.maxRetries?(this.retries++,this.init(),this.retryTimeout=setTimeout(this.retryConnect,this.retryDelay)):((C=this.errorHandler)==null||C.call(this,"WebSocket Error, please reload the browser"),(c=this.closeHandler)==null||c.call(this)))});this.wsUrl=C}}const qn=Nt.PUBLIC_WS_HOST??`ws://${Nt.PUBLIC_WS_HOSTNAME??"localhost"}:${Nt.PUBLIC_WS_PORT??"8080"}`,it=new Gn(qn);var zn=ve('<div class="flex h-full flex-col"><div class="h-full w-full"></div></div>');function Qn(N,C){vt(C,!0);let c=je(null),E=null,_=[],d=!1,w;Mt(async()=>{if(!w)return;nn();const l=await en(()=>import("../chunks/DLQqXQ6R.js").then(t=>t.e),__vite__mapDeps([0,1,2]),import.meta.url);d||(rn(l),me(c,l.editor.create(w,{value:C.schema??"",language:"typescript",theme:"bosun-dark",lineNumbers:"off",automaticLayout:!0,minimap:{enabled:!1},matchBrackets:"never",bracketPairColorization:{enabled:!1},guides:{highlightActiveBracketPair:!1,bracketPairs:!1,bracketPairsHorizontal:!1},occurrencesHighlight:"off",selectionHighlight:!1,unicodeHighlight:{ambiguousCharacters:!1,nonBasicASCII:!1,invisibleCharacters:!1,includeStrings:!1,includeComments:!1},autoClosingQuotes:"never"}),!0),E=A(c).getModel(),_.push(A(c).onDidChangeModelContent(()=>{if(!A(c))return;const t=A(c).getValue();t!==C.schema&&C.onChange(t)})))}),Jt(()=>{d=!0;for(const t of _)try{t.dispose()}catch{}_=[];const l=E;E=null;try{if(A(c)){try{A(c).setModel(null)}catch{}A(c).dispose()}}finally{me(c,null)}try{l==null||l.dispose()}catch{}}),ze(()=>{if(!A(c))return;const l=C.schema??"";A(c).getValue()!==l&&A(c).setValue(l)}),dt(N,{get class(){return`overflow-hidden ${C.class??""}`},children:(l,t)=>{var y=zn(),O=ae(y);tn(O,V=>w=V,()=>w),re(y),ie(l,y)}}),mt()}function Yn(N,C){return N.languages.registerCompletionItemProvider("markdown",{triggerCharacters:[" ","."],provideCompletionItems:(c,E)=>{const _=c.getValueInRange({startLineNumber:E.lineNumber,startColumn:1,endLineNumber:E.lineNumber,endColumn:E.column}),d=_.match(/\{%\s*(if|elif|for)\s+([^%]*)$/),w=_.match(/\{\{\s*([^}]*)$/);if(d||w){let t="";d?t=d[2].trim():w&&(t=w[1].trim());const{keys:y,lastPartLength:O}=Jn(C,t);return{suggestions:y.map(D=>({label:D,kind:N.languages.CompletionItemKind.Variable,insertText:D,range:{startLineNumber:E.lineNumber,endLineNumber:E.lineNumber,startColumn:E.column-O,endColumn:E.column}}))}}const l=_.match(/\{%\s*([^%]*)$/);if(l){const t=l[1].trim();return{suggestions:Ft(["if","elif","else","endif","for","endfor"],t).map((O,V)=>({label:O,kind:N.languages.CompletionItemKind.Keyword,insertText:O,sortText:String(V).padStart(2,"0"),range:{startLineNumber:E.lineNumber,endLineNumber:E.lineNumber,startColumn:E.column-t.length,endColumn:E.column}}))}}return{suggestions:[]}}})}function Jn(N,C){let c=N,E=[],_=0;if(C==="")E=Object.keys(N??{}),_=0;else if(C.includes(".")){const d=C.split("."),w=d.pop()||"";_=w.length;for(const l of d)if(c&&typeof c=="object"&&l in c)c=c[l];else{c=null;break}c&&typeof c=="object"&&(E=Ft(Object.keys(c),w))}else _=C.length,E=Ft(Object.keys(N??{}),C);return{keys:E,lastPartLength:_}}function Ft(N,C){return C?N.map((c,E)=>({value:c,index:E,match:Xn(c,C)})).filter(c=>c.match!==null).sort((c,E)=>c.match.kindRank!==E.match.kindRank?c.match.kindRank-E.match.kindRank:c.match.span!==E.match.span?c.match.span-E.match.span:c.match.gapCount!==E.match.gapCount?c.match.gapCount-E.match.gapCount:c.match.start!==E.match.start?c.match.start-E.match.start:c.index-E.index).map(c=>c.value):N}function Xn(N,C){const c=N.toLowerCase(),E=C.toLowerCase();if(!E)return null;if(c.startsWith(E))return{kindRank:0,start:0,span:E.length,gapCount:0};const _=c.indexOf(E);if(_!==-1)return{kindRank:nr(N,_,E.length),start:_,span:E.length,gapCount:0};const d=Zn(c,E);return d?{kindRank:4,start:d.start,span:d.span,gapCount:d.gapCount}:null}function Zn(N,C){if(!N||!C)return null;let c=null,E=0;for(;E<N.length;){let _=E,d=0;for(;_<N.length&&d<C.length;)N[_]===C[d]&&(d+=1),_+=1;if(d!==C.length)break;const w=new Array(C.length);let l=_-1;for(let O=C.length-1;O>=0;O--){for(;l>=0&&N[l]!==C[O];)l-=1;if(l<0)return c;w[O]=l,l-=1}let t=0;for(let O=1;O<w.length;O++)t+=w[O]-w[O-1]-1;const y={start:w[0],span:w[w.length-1]-w[0]+1,gapCount:t};(!c||y.span<c.span||y.span===c.span&&y.gapCount<c.gapCount||y.span===c.span&&y.gapCount===c.gapCount&&y.start<c.start)&&(c=y),E=w[0]+1}return c}function er(N,C){return C<=0?!0:/[\s._-]/.test(N[C-1]??"")}function tr(N,C){return C>=N.length?!0:/[\s._-]/.test(N[C]??"")}function nr(N,C,c){const E=er(N,C),_=tr(N,C+c);return E&&_?1:E?2:3}const rr=/^(#{1,6})\s/,ir=/^\s*\{%\s*(if|elif|elseif|else|endif|for|endfor)\b/,or={provideFoldingRanges(N){return ar(N)}},sr={provideFoldingRanges(N){return lr(N)}};function ar(N){const C=[],c=N.getLineCount(),E=[];for(let _=1;_<=c;_++){const d=rr.exec(N.getLineContent(_));d&&E.push({line:_,level:d[1].length})}for(let _=0;_<E.length;_++){const{line:d,level:w}=E[_];let l=c;for(let t=_+1;t<E.length;t++)if(E[t].level<=w){l=E[t].line-1;break}l=on(N,d,l),l>d&&C.push({start:d,end:l})}return C}function lr(N){const C=[],c=[],E=N.getLineCount();for(let _=1;_<=E;_++){const d=ir.exec(N.getLineContent(_));if(!d)continue;const w=d[1];if(w==="if"){c.push({kind:"if",branchStarts:[_],startLine:_});continue}if(w==="for"){c.push({kind:"for",branchStarts:[_],startLine:_});continue}if(w==="elif"||w==="elseif"||w==="else"){const l=cr(c,"if");if(!l)continue;wt(C,N,l.branchStarts.at(-1)??l.startLine,_-1),l.branchStarts.push(_);continue}if(w==="endif"){const l=$t(c,"if");if(!l)continue;wt(C,N,l.branchStarts.at(-1)??l.startLine,_-1);continue}if(w==="endfor"){const l=$t(c,"for");if(!l)continue;wt(C,N,l.startLine,_-1)}}for(const _ of c){const d=_.kind==="if"?_.branchStarts.at(-1)??_.startLine:_.startLine;wt(C,N,d,E)}return C}function cr(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N[c];return null}function $t(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N.splice(c,1)[0];return null}function wt(N,C,c,E){const _=on(C,c,E);_>c&&N.push({start:c,end:_})}function on(N,C,c){let E=c;for(;E>C&&N.getLineContent(E).trim()==="";)E-=1;return E}const ur=/\{%[-\s]*(if|elif|elseif|else|endif|for|endfor)\b/,fr={provideDocumentHighlights(N,C){const c=hr(N),E=C.lineNumber,_=C.column;for(const d of c)for(const w of d)if(w.line===E&&_>=w.startColumn&&_<=w.endColumn)return d.map(l=>({range:{startLineNumber:l.line,startColumn:l.startColumn,endLineNumber:l.line,endColumn:l.endColumn},kind:1}));return[]}};function pr(N,C){const c=N.getLineContent(C),E=ur.exec(c);if(!E)return null;const _=E[1],d=E.index+E[0].length-_.length;return{line:C,startColumn:d+1,endColumn:d+_.length+1,keyword:_}}function hr(N){const C=[],c=N.getLineCount(),E=[];for(let _=1;_<=c;_++){const d=pr(N,_);if(!d)continue;const w=d.keyword;if(w==="if"){E.push({kind:"if",tags:[d]});continue}if(w==="for"){E.push({kind:"for",tags:[d]});continue}if(w==="elif"||w==="elseif"||w==="else"){const l=dr(E,"if");l&&l.tags.push(d);continue}if(w==="endif"){const l=Wt(E,"if");l&&(l.tags.push(d),C.push(l.tags));continue}if(w==="endfor"){const l=Wt(E,"for");l&&(l.tags.push(d),C.push(l.tags))}}return C}function dr(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N[c];return null}function Wt(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N.splice(c,1)[0];return null}var sn={exports:{}};/*! Browser bundle of nunjucks 3.2.4 */(function(N,C){(function(E,_){N.exports=_()})(typeof self<"u"?self:Wn,function(){return function(c){var E={};function _(d){if(E[d])return E[d].exports;var w=E[d]={i:d,l:!1,exports:{}};return c[d].call(w.exports,w,w.exports,_),w.l=!0,w.exports}return _.m=c,_.c=E,_.d=function(d,w,l){_.o(d,w)||Object.defineProperty(d,w,{configurable:!1,enumerable:!0,get:l})},_.n=function(d){var w=d&&d.__esModule?function(){return d.default}:function(){return d};return _.d(w,"a",w),w},_.o=function(d,w){return Object.prototype.hasOwnProperty.call(d,w)},_.p="",_(_.s=11)}([function(c,y,_){var d=Array.prototype,w=Object.prototype,l={"&":"&amp;",'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","\\":"&#92;"},t=/[&"'<>\\]/g,y=c.exports={};function O(p,k){return w.hasOwnProperty.call(p,k)}y.hasOwnProp=O;function V(p){return l[p]}function D(p,k,B){if(B.Update||(B=new y.TemplateError(B)),B.Update(p),!k){var P=B;B=new Error(P.message),B.name=P.name}return B}y._prettifyError=D;function K(p,k,B){var P,W;p instanceof Error&&(W=p,p=W.name+": "+W.message),Object.setPrototypeOf?(P=new Error(p),Object.setPrototypeOf(P,K.prototype)):(P=this,Object.defineProperty(P,"message",{enumerable:!1,writable:!0,value:p})),Object.defineProperty(P,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(P,this.constructor);var oe;if(W){var X=Object.getOwnPropertyDescriptor(W,"stack");oe=X&&(X.get||function(){return X.value}),oe||(oe=function(){return W.stack})}else{var fe=new Error(p).stack;oe=function(){return fe}}return Object.defineProperty(P,"stack",{get:function(){return oe.call(P)}}),Object.defineProperty(P,"cause",{value:W}),P.lineno=k,P.colno=B,P.firstUpdate=!0,P.Update=function(J){var ee="("+(J||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?ee+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(ee+=" [Line "+this.lineno+"]")),ee+=`
2
+ var yn=Object.defineProperty;var _n=(N,C,c)=>C in N?yn(N,C,{enumerable:!0,configurable:!0,writable:!0,value:c}):N[C]=c;var Ae=(N,C,c)=>_n(N,typeof C!="symbol"?C+"":C,c);import{a as ie,f as ve,d as Bt,b as bt,t as Ge,c as ht}from"../chunks/Ca197UDq.js";import{o as Mt,a as Jt}from"../chunks/C39ai1md.js";import{p as vt,j as A,y as me,d as ze,c as ae,r as re,a as mt,w as je,s as de,o as Ve,t as Be,n as Te,f as De,a4 as xn,bh as wn,_ as bn,x as jt}from"../chunks/CxLomzuE.js";import{s as Pe}from"../chunks/DJriQKD9.js";import{i as Ie}from"../chunks/Buo-57fF.js";import{k as En,M as kn}from"../chunks/CyvQWZoe.js";import{e as ct,i as Rt}from"../chunks/BJTwdUYr.js";import{s as Sn}from"../chunks/BDl2QuyN.js";import{r as Xt,e as On}from"../chunks/D-B5X35l.js";import{s as Ln}from"../chunks/CAjPRvNs.js";import{a as Tn}from"../chunks/BPNEONy5.js";import{P as dt,g as Zt,s as An}from"../chunks/CzXNWL4m.js";import{B as lt}from"../chunks/CVlsAO8k.js";import{d as Dt,e as Cn,f as Nn,g as Pn,D as Rn}from"../chunks/Bj8jfBTi.js";import{I as In}from"../chunks/07xNIa59.js";import{T as It,a as ot}from"../chunks/BsDZe4N6.js";import{p as Ct,l as Fn,C as Bn,P as Vt}from"../chunks/Dslf9OwW.js";import{r as Mn,g as pt}from"../chunks/BD9x_mnu.js";import{p as Ye}from"../chunks/CXESoUel.js";import{e as Nt,t as st}from"../chunks/DCuEIs0S.js";import{i as Kn}from"../chunks/DgGeUDDh.js";import{_ as en}from"../chunks/C1FmrZbK.js";import{b as tn}from"../chunks/BLu86SbA.js";import{e as nn,a as rn,c as jn}from"../chunks/BU7aeYn4.js";import{p as Pt}from"../chunks/CPXdAKdv.js";import{A as Dn}from"../chunks/C7he4XPB.js";import{g as Vn}from"../chunks/Cql_e8Of.js";import"../chunks/BNifnXkO.js";import{i as Un}from"../chunks/BI42X8h_.js";import{c as Ut,a as $n}from"../chunks/QpaC6J6s.js";var Wn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Hn(N){return N&&N.__esModule&&Object.prototype.hasOwnProperty.call(N,"default")?N.default:N}class Gn{constructor(C){Ae(this,"ws",null);Ae(this,"openHandler",null);Ae(this,"closeHandler",null);Ae(this,"errorHandler",null);Ae(this,"messageHandler",null);Ae(this,"retries",0);Ae(this,"maxRetries",5);Ae(this,"retryDelay",500);Ae(this,"retryTimeout",null);Ae(this,"isOpen",!1);Ae(this,"isDestroyed",!1);Ae(this,"agentsLoaded",!1);Ae(this,"init",()=>{if(!this.isOpen){this.agentsLoaded=!1,console.log(`Initializing websocket connection with [${this.wsUrl}]`);try{this.ws=new WebSocket(this.wsUrl)}catch{this.retryConnect();return}this.isDestroyed=!1,this.ws.onmessage=C=>{var E,_,d,w,l,t,y,O;const c=JSON.parse(C.data);c.channel==="error"?(E=this.errorHandler)==null||E.call(this,c.message):c.channel==="app-events"?(console.log("MSG:",c.event.type),c.event.type==="agents-loaded"&&(this.agentsLoaded=!0)):c.channel==="log"?console.log(`MSG: log [${c.message.severity}]`,c.message.message):c.channel==="api-call-trace"?console.log("MSG: api-call-trace",(_=c.trace)==null?void 0:_.operationName,(d=c.trace)==null?void 0:d.method,(w=c.trace)==null?void 0:w.path):c.channel==="conversational-trace"&&console.log("MSG: conversational-trace",(l=c.trace)==null?void 0:l.eventName,(t=c.trace)==null?void 0:t.role,(y=c.trace)==null?void 0:y.medium),(O=this.messageHandler)==null||O.call(this,c)},this.ws.onerror=C=>{var c;console.error("Websocket error:",C),(c=this.ws)==null||c.close(),this.retryConnect()},this.ws.onclose=()=>{console.log("Websocket closed"),this.isOpen=!1,this.retryConnect()},this.ws.onopen=()=>{var C;this.retries=0,this.isOpen=!0,this.retryTimeout&&clearTimeout(this.retryTimeout),(C=this.openHandler)==null||C.call(this),console.log("Websocket connected")}}});Ae(this,"destroy",()=>{var C;this.isDestroyed=!0,(C=this.ws)==null||C.close()});Ae(this,"onOpen",C=>{this.openHandler=C,this.isOpen&&C()});Ae(this,"onClose",C=>{this.closeHandler=C,this.isOpen||C()});Ae(this,"onError",C=>{this.errorHandler=C});Ae(this,"onMessage",C=>{this.messageHandler=C});Ae(this,"sendMessage",C=>{var c;C.channel,(c=this.ws)==null||c.send(JSON.stringify(C))});Ae(this,"isReady",()=>this.isOpen&&this.agentsLoaded);Ae(this,"retryConnect",()=>{var C,c;this.isDestroyed||(!this.isOpen&&this.retries<this.maxRetries?(this.retries++,this.init(),this.retryTimeout=setTimeout(this.retryConnect,this.retryDelay)):((C=this.errorHandler)==null||C.call(this,"WebSocket Error, please reload the browser"),(c=this.closeHandler)==null||c.call(this)))});this.wsUrl=C}}const qn=Nt.PUBLIC_WS_HOST??`ws://${Nt.PUBLIC_WS_HOSTNAME??"localhost"}:${Nt.PUBLIC_WS_PORT??"8080"}`,it=new Gn(qn);var zn=ve('<div class="flex h-full flex-col"><div class="h-full w-full"></div></div>');function Qn(N,C){vt(C,!0);let c=je(null),E=null,_=[],d=!1,w;Mt(async()=>{if(!w)return;nn();const l=await en(()=>import("../chunks/DLQqXQ6R.js").then(t=>t.e),__vite__mapDeps([0,1,2]),import.meta.url);d||(rn(l),me(c,l.editor.create(w,{value:C.schema??"",language:"typescript",theme:"bosun-dark",lineNumbers:"off",automaticLayout:!0,minimap:{enabled:!1},matchBrackets:"never",bracketPairColorization:{enabled:!1},guides:{highlightActiveBracketPair:!1,bracketPairs:!1,bracketPairsHorizontal:!1},occurrencesHighlight:"off",selectionHighlight:!1,unicodeHighlight:{ambiguousCharacters:!1,nonBasicASCII:!1,invisibleCharacters:!1,includeStrings:!1,includeComments:!1},autoClosingQuotes:"never"}),!0),E=A(c).getModel(),_.push(A(c).onDidChangeModelContent(()=>{if(!A(c))return;const t=A(c).getValue();t!==C.schema&&C.onChange(t)})))}),Jt(()=>{d=!0;for(const t of _)try{t.dispose()}catch{}_=[];const l=E;E=null;try{if(A(c)){try{A(c).setModel(null)}catch{}A(c).dispose()}}finally{me(c,null)}try{l==null||l.dispose()}catch{}}),ze(()=>{if(!A(c))return;const l=C.schema??"";A(c).getValue()!==l&&A(c).setValue(l)}),dt(N,{get class(){return`overflow-hidden ${C.class??""}`},children:(l,t)=>{var y=zn(),O=ae(y);tn(O,V=>w=V,()=>w),re(y),ie(l,y)}}),mt()}function Yn(N,C){return N.languages.registerCompletionItemProvider("markdown",{triggerCharacters:[" ","."],provideCompletionItems:(c,E)=>{const _=c.getValueInRange({startLineNumber:E.lineNumber,startColumn:1,endLineNumber:E.lineNumber,endColumn:E.column}),d=_.match(/\{%\s*(if|elif|for)\s+([^%]*)$/),w=_.match(/\{\{\s*([^}]*)$/);if(d||w){let t="";d?t=d[2].trim():w&&(t=w[1].trim());const{keys:y,lastPartLength:O}=Jn(C,t);return{suggestions:y.map(D=>({label:D,kind:N.languages.CompletionItemKind.Variable,insertText:D,range:{startLineNumber:E.lineNumber,endLineNumber:E.lineNumber,startColumn:E.column-O,endColumn:E.column}}))}}const l=_.match(/\{%\s*([^%]*)$/);if(l){const t=l[1].trim();return{suggestions:Ft(["if","elif","else","endif","for","endfor"],t).map((O,V)=>({label:O,kind:N.languages.CompletionItemKind.Keyword,insertText:O,sortText:String(V).padStart(2,"0"),range:{startLineNumber:E.lineNumber,endLineNumber:E.lineNumber,startColumn:E.column-t.length,endColumn:E.column}}))}}return{suggestions:[]}}})}function Jn(N,C){let c=N,E=[],_=0;if(C==="")E=Object.keys(N??{}),_=0;else if(C.includes(".")){const d=C.split("."),w=d.pop()||"";_=w.length;for(const l of d)if(c&&typeof c=="object"&&l in c)c=c[l];else{c=null;break}c&&typeof c=="object"&&(E=Ft(Object.keys(c),w))}else _=C.length,E=Ft(Object.keys(N??{}),C);return{keys:E,lastPartLength:_}}function Ft(N,C){return C?N.map((c,E)=>({value:c,index:E,match:Xn(c,C)})).filter(c=>c.match!==null).sort((c,E)=>c.match.kindRank!==E.match.kindRank?c.match.kindRank-E.match.kindRank:c.match.span!==E.match.span?c.match.span-E.match.span:c.match.gapCount!==E.match.gapCount?c.match.gapCount-E.match.gapCount:c.match.start!==E.match.start?c.match.start-E.match.start:c.index-E.index).map(c=>c.value):N}function Xn(N,C){const c=N.toLowerCase(),E=C.toLowerCase();if(!E)return null;if(c.startsWith(E))return{kindRank:0,start:0,span:E.length,gapCount:0};const _=c.indexOf(E);if(_!==-1)return{kindRank:nr(N,_,E.length),start:_,span:E.length,gapCount:0};const d=Zn(c,E);return d?{kindRank:4,start:d.start,span:d.span,gapCount:d.gapCount}:null}function Zn(N,C){if(!N||!C)return null;let c=null,E=0;for(;E<N.length;){let _=E,d=0;for(;_<N.length&&d<C.length;)N[_]===C[d]&&(d+=1),_+=1;if(d!==C.length)break;const w=new Array(C.length);let l=_-1;for(let O=C.length-1;O>=0;O--){for(;l>=0&&N[l]!==C[O];)l-=1;if(l<0)return c;w[O]=l,l-=1}let t=0;for(let O=1;O<w.length;O++)t+=w[O]-w[O-1]-1;const y={start:w[0],span:w[w.length-1]-w[0]+1,gapCount:t};(!c||y.span<c.span||y.span===c.span&&y.gapCount<c.gapCount||y.span===c.span&&y.gapCount===c.gapCount&&y.start<c.start)&&(c=y),E=w[0]+1}return c}function er(N,C){return C<=0?!0:/[\s._-]/.test(N[C-1]??"")}function tr(N,C){return C>=N.length?!0:/[\s._-]/.test(N[C]??"")}function nr(N,C,c){const E=er(N,C),_=tr(N,C+c);return E&&_?1:E?2:3}const rr=/^(#{1,6})\s/,ir=/^\s*\{%\s*(if|elif|elseif|else|endif|for|endfor)\b/,or={provideFoldingRanges(N){return ar(N)}},sr={provideFoldingRanges(N){return lr(N)}};function ar(N){const C=[],c=N.getLineCount(),E=[];for(let _=1;_<=c;_++){const d=rr.exec(N.getLineContent(_));d&&E.push({line:_,level:d[1].length})}for(let _=0;_<E.length;_++){const{line:d,level:w}=E[_];let l=c;for(let t=_+1;t<E.length;t++)if(E[t].level<=w){l=E[t].line-1;break}l=on(N,d,l),l>d&&C.push({start:d,end:l})}return C}function lr(N){const C=[],c=[],E=N.getLineCount();for(let _=1;_<=E;_++){const d=ir.exec(N.getLineContent(_));if(!d)continue;const w=d[1];if(w==="if"){c.push({kind:"if",branchStarts:[_],startLine:_});continue}if(w==="for"){c.push({kind:"for",branchStarts:[_],startLine:_});continue}if(w==="elif"||w==="elseif"||w==="else"){const l=cr(c,"if");if(!l)continue;wt(C,N,l.branchStarts.at(-1)??l.startLine,_-1),l.branchStarts.push(_);continue}if(w==="endif"){const l=$t(c,"if");if(!l)continue;wt(C,N,l.branchStarts.at(-1)??l.startLine,_-1);continue}if(w==="endfor"){const l=$t(c,"for");if(!l)continue;wt(C,N,l.startLine,_-1)}}for(const _ of c){const d=_.kind==="if"?_.branchStarts.at(-1)??_.startLine:_.startLine;wt(C,N,d,E)}return C}function cr(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N[c];return null}function $t(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N.splice(c,1)[0];return null}function wt(N,C,c,E){const _=on(C,c,E);_>c&&N.push({start:c,end:_})}function on(N,C,c){let E=c;for(;E>C&&N.getLineContent(E).trim()==="";)E-=1;return E}const ur=/\{%[-\s]*(if|elif|elseif|else|endif|for|endfor)\b/,fr={provideDocumentHighlights(N,C){const c=hr(N),E=C.lineNumber,_=C.column;for(const d of c)for(const w of d)if(w.line===E&&_>=w.startColumn&&_<=w.endColumn)return d.map(l=>({range:{startLineNumber:l.line,startColumn:l.startColumn,endLineNumber:l.line,endColumn:l.endColumn},kind:1}));return[]}};function pr(N,C){const c=N.getLineContent(C),E=ur.exec(c);if(!E)return null;const _=E[1],d=E.index+E[0].length-_.length;return{line:C,startColumn:d+1,endColumn:d+_.length+1,keyword:_}}function hr(N){const C=[],c=N.getLineCount(),E=[];for(let _=1;_<=c;_++){const d=pr(N,_);if(!d)continue;const w=d.keyword;if(w==="if"){E.push({kind:"if",tags:[d]});continue}if(w==="for"){E.push({kind:"for",tags:[d]});continue}if(w==="elif"||w==="elseif"||w==="else"){const l=dr(E,"if");l&&l.tags.push(d);continue}if(w==="endif"){const l=Wt(E,"if");l&&(l.tags.push(d),C.push(l.tags));continue}if(w==="endfor"){const l=Wt(E,"for");l&&(l.tags.push(d),C.push(l.tags))}}return C}function dr(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N[c];return null}function Wt(N,C){for(let c=N.length-1;c>=0;c--)if(N[c].kind===C)return N.splice(c,1)[0];return null}var sn={exports:{}};/*! Browser bundle of nunjucks 3.2.4 */(function(N,C){(function(E,_){N.exports=_()})(typeof self<"u"?self:Wn,function(){return function(c){var E={};function _(d){if(E[d])return E[d].exports;var w=E[d]={i:d,l:!1,exports:{}};return c[d].call(w.exports,w,w.exports,_),w.l=!0,w.exports}return _.m=c,_.c=E,_.d=function(d,w,l){_.o(d,w)||Object.defineProperty(d,w,{configurable:!1,enumerable:!0,get:l})},_.n=function(d){var w=d&&d.__esModule?function(){return d.default}:function(){return d};return _.d(w,"a",w),w},_.o=function(d,w){return Object.prototype.hasOwnProperty.call(d,w)},_.p="",_(_.s=11)}([function(c,y,_){var d=Array.prototype,w=Object.prototype,l={"&":"&amp;",'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","\\":"&#92;"},t=/[&"'<>\\]/g,y=c.exports={};function O(p,k){return w.hasOwnProperty.call(p,k)}y.hasOwnProp=O;function V(p){return l[p]}function D(p,k,B){if(B.Update||(B=new y.TemplateError(B)),B.Update(p),!k){var P=B;B=new Error(P.message),B.name=P.name}return B}y._prettifyError=D;function K(p,k,B){var P,W;p instanceof Error&&(W=p,p=W.name+": "+W.message),Object.setPrototypeOf?(P=new Error(p),Object.setPrototypeOf(P,K.prototype)):(P=this,Object.defineProperty(P,"message",{enumerable:!1,writable:!0,value:p})),Object.defineProperty(P,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(P,this.constructor);var oe;if(W){var X=Object.getOwnPropertyDescriptor(W,"stack");oe=X&&(X.get||function(){return X.value}),oe||(oe=function(){return W.stack})}else{var fe=new Error(p).stack;oe=function(){return fe}}return Object.defineProperty(P,"stack",{get:function(){return oe.call(P)}}),Object.defineProperty(P,"cause",{value:W}),P.lineno=k,P.colno=B,P.firstUpdate=!0,P.Update=function(J){var ee="("+(J||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?ee+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(ee+=" [Line "+this.lineno+"]")),ee+=`
3
3
  `,this.firstUpdate&&(ee+=" "),this.message=ee+(this.message||""),this.firstUpdate=!1,this},P}Object.setPrototypeOf?Object.setPrototypeOf(K.prototype,Error.prototype):K.prototype=Object.create(Error.prototype,{constructor:{value:K}}),y.TemplateError=K;function S(p){return p.replace(t,V)}y.escape=S;function R(p){return w.toString.call(p)==="[object Function]"}y.isFunction=R;function e(p){return w.toString.call(p)==="[object Array]"}y.isArray=e;function r(p){return w.toString.call(p)==="[object String]"}y.isString=r;function i(p){return w.toString.call(p)==="[object Object]"}y.isObject=i;function m(p){return p?typeof p=="string"?p.split("."):[p]:[]}function f(p){var k=m(p);return function(P){for(var W=P,oe=0;oe<k.length;oe++){var X=k[oe];if(O(W,X))W=W[X];else return}return W}}y.getAttrGetter=f;function g(p,k,B){for(var P={},W=R(k)?k:f(k),oe=0;oe<p.length;oe++){var X=p[oe],fe=W(X,oe);if(fe===void 0&&B===!0)throw new TypeError('groupby: attribute "'+k+'" resolved to undefined');(P[fe]||(P[fe]=[])).push(X)}return P}y.groupBy=g;function n(p){return Array.prototype.slice.call(p)}y.toArray=n;function a(p){var k=[];if(!p)return k;for(var B=p.length,P=n(arguments).slice(1),W=-1;++W<B;)T(P,p[W])===-1&&k.push(p[W]);return k}y.without=a;function u(p,k){for(var B="",P=0;P<k;P++)B+=p;return B}y.repeat=u;function o(p,k,B){if(p!=null){if(d.forEach&&p.forEach===d.forEach)p.forEach(k,B);else if(p.length===+p.length)for(var P=0,W=p.length;P<W;P++)k.call(B,p[P],P,p)}}y.each=o;function s(p,k){var B=[];if(p==null)return B;if(d.map&&p.map===d.map)return p.map(k);for(var P=0;P<p.length;P++)B[B.length]=k(p[P],P);return p.length===+p.length&&(B.length=p.length),B}y.map=s;function h(p,k,B){var P=-1;function W(){P++,P<p.length?k(p[P],P,W,B):B()}W()}y.asyncIter=h;function v(p,k,B){var P=F(p||{}),W=P.length,oe=-1;function X(){oe++;var fe=P[oe];oe<W?k(fe,p[fe],oe,W,X):B()}X()}y.asyncFor=v;function T(p,k,B){return Array.prototype.indexOf.call(p||[],k,B)}y.indexOf=T;function F(p){var k=[];for(var B in p)O(p,B)&&k.push(B);return k}y.keys=F;function I(p){return F(p).map(function(k){return[k,p[k]]})}y._entries=I;function M(p){return F(p).map(function(k){return p[k]})}y._values=M;function U(p,k){return p=p||{},F(k).forEach(function(B){p[B]=k[B]}),p}y._assign=y.extend=U;function x(p,k){if(e(k)||r(k))return k.indexOf(p)!==-1;if(i(k))return p in k;throw new Error('Cannot use "in" operator to search for "'+p+'" in unexpected types.')}y.inOperator=x},function(c,E,_){function d(r,i){for(var m=0;m<i.length;m++){var f=i[m];f.enumerable=f.enumerable||!1,f.configurable=!0,"value"in f&&(f.writable=!0),Object.defineProperty(r,l(f.key),f)}}function w(r,i,m){return i&&d(r.prototype,i),Object.defineProperty(r,"prototype",{writable:!1}),r}function l(r){var i=t(r,"string");return typeof i=="symbol"?i:String(i)}function t(r,i){if(typeof r!="object"||r===null)return r;var m=r[Symbol.toPrimitive];if(m!==void 0){var f=m.call(r,i);if(typeof f!="object")return f;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}function y(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,O(r,i)}function O(r,i){return O=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(f,g){return f.__proto__=g,f},O(r,i)}var V=_(16),D=_(0);function K(r,i){return typeof r!="function"||typeof i!="function"?i:function(){var f=this.parent;this.parent=r;var g=i.apply(this,arguments);return this.parent=f,g}}function S(r,i,m){m=m||{},D.keys(m).forEach(function(g){m[g]=K(r.prototype[g],m[g])});var f=function(g){y(n,g);function n(){return g.apply(this,arguments)||this}return w(n,[{key:"typename",get:function(){return i}}]),n}(r);return D._assign(f.prototype,m),f}var R=function(){function r(){this.init.apply(this,arguments)}var i=r.prototype;return i.init=function(){},r.extend=function(f,g){return typeof f=="object"&&(g=f,f="anonymous"),S(this,f,g)},w(r,[{key:"typename",get:function(){return this.constructor.name}}]),r}(),e=function(r){y(i,r);function i(){var f,g;return g=r.call(this)||this,(f=g).init.apply(f,arguments),g}var m=i.prototype;return m.init=function(){},i.extend=function(g,n){return typeof g=="object"&&(n=g,g="anonymous"),S(this,g,n)},w(i,[{key:"typename",get:function(){return this.constructor.name}}]),i}(V);c.exports={Obj:R,EmitterObj:e}},function(c,E,_){var d=_(0),w=Array.from,l=typeof Symbol=="function"&&Symbol.iterator&&typeof w=="function",t=function(){function s(v,T){this.variables=Object.create(null),this.parent=v,this.topLevel=!1,this.isolateWrites=T}var h=s.prototype;return h.set=function(T,F,I){var M=T.split("."),U=this.variables,x=this;if(I&&(x=this.resolve(M[0],!0))){x.set(T,F);return}for(var p=0;p<M.length-1;p++){var k=M[p];U[k]||(U[k]={}),U=U[k]}U[M[M.length-1]]=F},h.get=function(T){var F=this.variables[T];return F!==void 0?F:null},h.lookup=function(T){var F=this.parent,I=this.variables[T];return I!==void 0?I:F&&F.lookup(T)},h.resolve=function(T,F){var I=F&&this.isolateWrites?void 0:this.parent,M=this.variables[T];return M!==void 0?this:I&&I.resolve(T)},h.push=function(T){return new s(this,T)},h.pop=function(){return this.parent},s}();function y(s,h,v){return function(){for(var F=arguments.length,I=new Array(F),M=0;M<F;M++)I[M]=arguments[M];var U=K(I),x,p=D(I);if(U>s.length)x=I.slice(0,s.length),I.slice(x.length,U).forEach(function(P,W){W<h.length&&(p[h[W]]=P)}),x.push(p);else if(U<s.length){x=I.slice(0,U);for(var k=U;k<s.length;k++){var B=s[k];x.push(p[B]),delete p[B]}x.push(p)}else x=I;return v.apply(this,x)}}function O(s){return s.__keywords=!0,s}function V(s){return s&&Object.prototype.hasOwnProperty.call(s,"__keywords")}function D(s){var h=s.length;if(h){var v=s[h-1];if(V(v))return v}return{}}function K(s){var h=s.length;if(h===0)return 0;var v=s[h-1];return V(v)?h-1:h}function S(s){if(typeof s!="string")return s;this.val=s,this.length=s.length}S.prototype=Object.create(String.prototype,{length:{writable:!0,configurable:!0,value:0}}),S.prototype.valueOf=function(){return this.val},S.prototype.toString=function(){return this.val};function R(s,h){return s instanceof S?new S(h):h.toString()}function e(s){var h=typeof s;return h==="string"?new S(s):h!=="function"?s:function(T){var F=s.apply(this,arguments);return typeof F=="string"?new S(F):F}}function r(s,h){return s=s??"",h&&!(s instanceof S)&&(s=d.escape(s.toString())),s}function i(s,h,v){if(s==null)throw new d.TemplateError("attempted to output null or undefined value",h+1,v+1);return s}function m(s,h){if(s!=null)return typeof s[h]=="function"?function(){for(var v=arguments.length,T=new Array(v),F=0;F<v;F++)T[F]=arguments[F];return s[h].apply(s,T)}:s[h]}function f(s,h,v,T){if(s){if(typeof s!="function")throw new Error("Unable to call `"+h+"`, which is not a function")}else throw new Error("Unable to call `"+h+"`, which is undefined or falsey");return s.apply(v,T)}function g(s,h,v){var T=h.lookup(v);return T!==void 0?T:s.lookup(v)}function n(s,h,v){return s.lineno?s:new d.TemplateError(s,h,v)}function a(s,h,v,T){if(d.isArray(s)){var F=s.length;d.asyncIter(s,function(M,U,x){switch(h){case 1:v(M,U,F,x);break;case 2:v(M[0],M[1],U,F,x);break;case 3:v(M[0],M[1],M[2],U,F,x);break;default:M.push(U,F,x),v.apply(this,M)}},T)}else d.asyncFor(s,function(M,U,x,p,k){v(M,U,x,p,k)},T)}function u(s,h,v,T){var F=0,I,M;function U(W,oe){F++,M[W]=oe,F===I&&T(null,M.join(""))}if(d.isArray(s))if(I=s.length,M=new Array(I),I===0)T(null,"");else for(var x=0;x<s.length;x++){var p=s[x];switch(h){case 1:v(p,x,I,U);break;case 2:v(p[0],p[1],x,I,U);break;case 3:v(p[0],p[1],p[2],x,I,U);break;default:p.push(x,I,U),v.apply(this,p)}}else{var k=d.keys(s||{});if(I=k.length,M=new Array(I),I===0)T(null,"");else for(var B=0;B<k.length;B++){var P=k[B];v(P,s[P],B,I,U)}}}function o(s){return typeof s!="object"||s===null||d.isArray(s)?s:l&&Symbol.iterator in s?w(s):s}c.exports={Frame:t,makeMacro:y,makeKeywordArgs:O,numArgs:K,suppressValue:r,ensureDefined:i,memberLookup:m,contextOrFrameLookup:g,callWrap:f,handleError:n,isArray:d.isArray,keys:d.keys,SafeString:S,copySafeness:R,markSafe:e,asyncEach:a,asyncAll:u,inOperator:d.inOperator,fromIterator:o}},function(c,E,_){function d(te,se){for(var ge=0;ge<se.length;ge++){var he=se[ge];he.enumerable=he.enumerable||!1,he.configurable=!0,"value"in he&&(he.writable=!0),Object.defineProperty(te,l(he.key),he)}}function w(te,se,ge){return se&&d(te.prototype,se),Object.defineProperty(te,"prototype",{writable:!1}),te}function l(te){var se=t(te,"string");return typeof se=="symbol"?se:String(se)}function t(te,se){if(typeof te!="object"||te===null)return te;var ge=te[Symbol.toPrimitive];if(ge!==void 0){var he=ge.call(te,se);if(typeof he!="object")return he;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(te)}function y(te,se){te.prototype=Object.create(se.prototype),te.prototype.constructor=te,O(te,se)}function O(te,se){return O=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(he,_e){return he.__proto__=_e,he},O(te,se)}var V=_(1),D=V.Obj;function K(te,se,ge){te instanceof se&&ge.push(te),te instanceof S&&te.findAll(se,ge)}var S=function(te){y(se,te);function se(){return te.apply(this,arguments)||this}var ge=se.prototype;return ge.init=function(_e,Le){for(var Me=arguments,Qe=this,Ze=arguments.length,ut=new Array(Ze>2?Ze-2:0),tt=2;tt<Ze;tt++)ut[tt-2]=arguments[tt];this.lineno=_e,this.colno=Le,this.fields.forEach(function(_t,Ot){var at=Me[Ot+2];at===void 0&&(at=null),Qe[_t]=at})},ge.findAll=function(_e,Le){var Me=this;return Le=Le||[],this instanceof e?this.children.forEach(function(Qe){return K(Qe,_e,Le)}):this.fields.forEach(function(Qe){return K(Me[Qe],_e,Le)}),Le},ge.iterFields=function(_e){var Le=this;this.fields.forEach(function(Me){_e(Le[Me],Me)})},se}(D),R=function(te){y(se,te);function se(){return te.apply(this,arguments)||this}return w(se,[{key:"typename",get:function(){return"Value"}},{key:"fields",get:function(){return["value"]}}]),se}(S),e=function(te){y(se,te);function se(){return te.apply(this,arguments)||this}var ge=se.prototype;return ge.init=function(_e,Le,Me){te.prototype.init.call(this,_e,Le,Me||[])},ge.addChild=function(_e){this.children.push(_e)},w(se,[{key:"typename",get:function(){return"NodeList"}},{key:"fields",get:function(){return["children"]}}]),se}(S),r=e.extend("Root"),i=R.extend("Literal"),m=R.extend("Symbol"),f=e.extend("Group"),g=e.extend("Array"),n=S.extend("Pair",{fields:["key","value"]}),a=e.extend("Dict"),u=S.extend("LookupVal",{fields:["target","val"]}),o=S.extend("If",{fields:["cond","body","else_"]}),s=o.extend("IfAsync"),h=S.extend("InlineIf",{fields:["cond","body","else_"]}),v=S.extend("For",{fields:["arr","name","body","else_"]}),T=v.extend("AsyncEach"),F=v.extend("AsyncAll"),I=S.extend("Macro",{fields:["name","args","body"]}),M=I.extend("Caller"),U=S.extend("Import",{fields:["template","target","withContext"]}),x=function(te){y(se,te);function se(){return te.apply(this,arguments)||this}var ge=se.prototype;return ge.init=function(_e,Le,Me,Qe,Ze){te.prototype.init.call(this,_e,Le,Me,Qe||new e,Ze)},w(se,[{key:"typename",get:function(){return"FromImport"}},{key:"fields",get:function(){return["template","names","withContext"]}}]),se}(S),p=S.extend("FunCall",{fields:["name","args"]}),k=p.extend("Filter"),B=k.extend("FilterAsync",{fields:["name","args","symbol"]}),P=a.extend("KeywordArgs"),W=S.extend("Block",{fields:["name","body"]}),oe=S.extend("Super",{fields:["blockName","symbol"]}),X=S.extend("TemplateRef",{fields:["template"]}),fe=X.extend("Extends"),ye=S.extend("Include",{fields:["template","ignoreMissing"]}),J=S.extend("Set",{fields:["targets","value"]}),ee=S.extend("Switch",{fields:["expr","cases","default"]}),H=S.extend("Case",{fields:["cond","body"]}),Q=e.extend("Output"),Y=S.extend("Capture",{fields:["body"]}),ce=i.extend("TemplateData"),Oe=S.extend("UnaryOp",{fields:["target"]}),we=S.extend("BinOp",{fields:["left","right"]}),Ce=we.extend("In"),b=we.extend("Is"),j=we.extend("Or"),z=we.extend("And"),G=Oe.extend("Not"),Z=we.extend("Add"),le=we.extend("Concat"),xe=we.extend("Sub"),ue=we.extend("Mul"),Ee=we.extend("Div"),Ue=we.extend("FloorDiv"),$e=we.extend("Mod"),We=we.extend("Pow"),Et=Oe.extend("Neg"),kt=Oe.extend("Pos"),St=S.extend("Compare",{fields:["expr","ops"]}),gt=S.extend("CompareOperand",{fields:["expr","type"]}),nt=S.extend("CallExtension",{init:function(se,ge,he,_e){this.parent(),this.extName=se.__name||se,this.prop=ge,this.args=he||new e,this.contentArgs=_e||[],this.autoescape=se.autoescape},fields:["extName","prop","args","contentArgs"]}),yt=nt.extend("CallExtensionAsync");function Je(te,se,ge){var he=te.split(`
4
4
  `);he.forEach(function(_e,Le){_e&&(ge&&Le>0||!ge)&&process.stdout.write(" ".repeat(se));var Me=Le===he.length-1?"":`
5
5
  `;process.stdout.write(""+_e+Me)})}function Xe(te,se){if(se=se||0,Je(te.typename+": ",se),te instanceof e)Je(`
@@ -1 +1 @@
1
- import{d as zt,b as F,a as v,t as k,f as b,c as Rt}from"../chunks/Ca197UDq.js";import{o as Bt}from"../chunks/C39ai1md.js";import{p as Ot,w as d,x as me,d as qt,t as P,j as t,a as Gt,e as Qt,f as _e,s as l,c as n,y as s,n as C,$ as Vt,o as T,r as o}from"../chunks/CxLomzuE.js";import{s as g}from"../chunks/DJriQKD9.js";import{i as Q}from"../chunks/Buo-57fF.js";import{e as Ve,i as We}from"../chunks/BJTwdUYr.js";import{s as Wt}from"../chunks/BDl2QuyN.js";import{h as Ht}from"../chunks/iAhzu4tv.js";import{b as He,c as Je}from"../chunks/D-B5X35l.js";import{s as Jt}from"../chunks/CAjPRvNs.js";import{p as Kt}from"../chunks/CPXdAKdv.js";import{g as y}from"../chunks/BVxLHCs8.js";import{p as f}from"../chunks/ChVBNPUb.js";import{B as V}from"../chunks/CVlsAO8k.js";import{I as Xt}from"../chunks/07xNIa59.js";import{I as Yt}from"../chunks/nYD9wsyN.js";import{m as Zt}from"../chunks/ddC1NP9R.js";import{p as Ke,T as er,g as tr}from"../chunks/JcG4w2gF.js";import{T as rr,a as Xe}from"../chunks/BsDZe4N6.js";import{A as ar}from"../chunks/C7he4XPB.js";import{g as sr}from"../chunks/Cql_e8Of.js";import{t as or}from"../chunks/E9rdsnHb.js";var nr=b("<!> <!>",1),Ye=b("<option> </option>"),ir=b('<button type="button" aria-label="Clear search" class="absolute right-2 top-1/2 flex -translate-y-1/2 items-center justify-center rounded p-1 text-rc-gray-200 hover:bg-rc-gray-600 hover:text-rc-gray-100 focus:outline-none"><!></button>'),lr=b('<p class="py-8 text-center text-rc-gray-200">Loading...</p>'),cr=b('<p class="py-8 text-center text-rc-gray-300">No conversations found</p>'),dr=b('<span class="text-rc-gray-200">, Agent Id:</span> <span class="text-rc-green-200"> </span>',1),vr=b('<li><div class="flex w-full flex-col gap-2"><div class="flex w-full items-center justify-between"><div class="text-gray-300"> </div> <div class="flex items-center gap-2"><span class="text-xs text-rc-gray-300"> </span> <span class="font-semibold text-rc-gray-100"> </span></div></div> <div class="flex items-center justify-between gap-4"><div class="text-sm"><span class="text-rc-gray-200">Conversation Id:</span> <span class="text-rc-green-200"> </span> <!></div> <p class="text-sm text-gray-400"> </p></div></div></li>'),ur=b('<ul class="space-y-2"></ul>'),pr=b('<div class="flex h-screen"><!> <div class="flex h-full min-w-0 flex-1 flex-col bg-rc-gray-980 pb-3 pr-4 pt-2"><nav class="flex flex-none flex-col bg-rc-gray-980"><div class="flex items-center justify-center"><!></div> <div class="flex flex-wrap items-center gap-4"><div class="flex-1"><label class="block"><div class="flex gap-2"><select class="select svelte-1uk1thp" aria-label="Telescope source"><!></select> <div class="relative"><!><!></div> <!></div></label></div> <div class="hidden items-center gap-2"><div class="text-rc-gray-200">Sort:</div> <!></div> <div class="hidden items-center gap-2"><div class="text-rc-gray-200">Page size:</div> <select class="rounded-sm border border-rc-gray-300 bg-rc-gray-700 p-2 pr-8 text-rc-gray-100"><option>5</option><option>10</option><option>20</option><option>50</option></select></div> <div class="flex items-center gap-3"><div class="flex items-center gap-2"><!> <!> <div class="text-sm text-rc-gray-200"> </div></div></div> <div class="ml-auto whitespace-nowrap text-sm"><span class="text-gray-400">API Mode:</span> <span class="font-semibold text-rc-green-200"> </span></div></div></nav> <main class="flex flex-1 overflow-hidden"><div class="flex h-full w-1/3 flex-col"><div class="flex-none border-b border-rc-gray-300/40 p-4"><h2 class="text-lg font-semibold text-rc-gray-100">Conversations</h2></div> <div class="rc-scroll min-h-0 flex-1 overflow-scroll px-3 py-4"><!></div></div> <div class="flex h-full w-2/3 flex-col bg-rc-gray-980"><!></div></main></div></div>');function Fr(Ze,W){Ot(W,!0);const j=new er(fetch);let he=d(me([])),_=d(void 0),h=d(null);const p=C(()=>(f.url.searchParams.get("agent")??"").trim()),H=C(()=>(f.url.searchParams.get("region")??"").trim());let L=d(""),J=d(20),M=d("20"),z=d(!0),x=d(me([])),$=d(null),R=d(!1),K=d(null),xe=d(0),w=d(me([])),N=d(""),B=d(!1),X=d(null),ye=d(!1),Y=d(null),be=Kt(W,"useMock",3,!1);const{onError:we}=sr();function et(e){return new Date(e).toLocaleString()}function tt(e){const r=Math.floor(e/60),a=e%60;return`${r}:${String(a).padStart(2,"0")}`}function $e(e=t(p),r=e===t(p)?t(H):""){const a=new URLSearchParams;e&&a.set("agent",e),e&&r&&a.set("region",r);const i=a.toString();return i?`?${i}`:""}function D(e=t(p)){return`${t(Ae)}/conversations${$e(e)}`}const rt=C(()=>f.url.pathname.split("/").at(-1)==="latency"?"latency":"traces");function at(e,r=t(rt),a=t(p)){return`${t(Ae)}/conversations/${encodeURIComponent(e)}/${r}${$e(a)}`}async function st(e,r=t(J),a,i){return be()?Zt.fetchConversations(r,e,a??void 0):j.getConversations({phoneNumber:e,agentId:i,limit:Number(r),lastConversationId:a??void 0})}async function E(){s(x,[],!0),s($,null),await Z()}async function ot(){s(B,!0),s(X,null);try{const e=await fetch("/traces/api/sources");if(!e.ok)throw new Error(`Failed to load sources (${e.status})`);const r=await e.json(),a=Array.isArray(r)?r:[];if(s(w,a.filter(c=>c&&typeof c.id=="string"&&typeof c.label=="string"),!0),!t(w).length)throw new Error("No sources returned");const i=tr(),u=i&&t(w).some(c=>c.id===i)?i:t(w)[0].id;s(N,u,!0),Ke(u),j.setSourceId(u)}catch(e){console.error("Failed to load Telescope sources:",e),s(X,(e==null?void 0:e.message)??"Failed to load Telescope sources",!0),s(w,[],!0),s(N,""),j.setSourceId(void 0)}finally{s(B,!1)}}async function nt(e){const r=e.target.value;s(N,r,!0),Ke(r),j.setSourceId(r),s(h,null),await y(D()),await E()}async function it(){try{s(he,await or.agents.catalog.query(),!0)}catch(e){const r=e instanceof Error?e.message:e?String(e):"Unknown error";console.error("Failed to load agents:",e),we(`Failed to load agents: ${r}`)}}async function Z(){s(R,!0),s(K,null);try{const e=await st(t(L)||void 0,t(J),t($)??void 0,t(p)||void 0);let r=Array.isArray(e.items)?e.items.slice():[];r=r.filter(a=>!!(a!=null&&a.phoneNumber)),s(_,{limit:e.limit,items:r,lastConversationId:e.lastConversationId},!0),s(xe,r.length,!0),s($,e.lastConversationId??null,!0),s(R,!1)}catch(e){s(R,!1),s(K,e.message||"Unknown error",!0),we(`Error loading conversations: ${t(K)}`),console.error("Load page error:",e)}}async function lt(){var e;(e=t(_))!=null&&e.lastConversationId&&(t(x).push(t(_).lastConversationId),s($,t(_).lastConversationId,!0),await Z())}async function ct(){t(x).length&&(t(x).pop(),s($,t(x).length?t(x)[t(x).length-1]:null,!0),await Z())}function dt(){var e;s(z,!t(z)),(e=t(_))!=null&&e.items&&t(_).items.sort((r,a)=>t(z)?a.createdAt-r.createdAt:r.createdAt-a.createdAt)}async function vt(e,r){var i;if(r==null||r.stopPropagation(),f.params.conversationId&&f.params.conversationId===e.conversationId||!f.params.conversationId&&((i=t(h))==null?void 0:i.conversationId)===e.conversationId){s(h,null),await y(D());return}s(h,e,!0),await y(at(e.conversationId))}function ut(e){const r=e.target.value;s(M,r,!0),s(J,parseInt(t(M),10)||20,!0)}async function Ie(){await E()}async function pt(e){e==null||e.preventDefault(),e==null||e.stopPropagation(),s(L,""),s(x,[],!0),s($,null),await E()}const Se=C(()=>{const e=f.url.pathname.split("/")[1];return e==="traces"?"view":e}),Ae=C(()=>f.url.pathname.startsWith("/view")?"/view":"/traces");function ft({value:e}){if(e!==t(Se)){if(e==="edit"){if(!t(p))return y("/edit");const r=new URLSearchParams;t(H)&&r.set("region",t(H));const a=r.toString();return y(`/edit/${encodeURIComponent(t(p))}/roleplay${a?`?${a}`:""}`)}if(e==="view")return y(D());y("/"+e)}}async function gt(e,r){r==null||r.stopPropagation(),e!==t(p)&&(s(h,null),await y(D(e)))}async function mt(e){e==null||e.stopPropagation(),t(p)&&(s(h,null),await y(D("")))}qt(()=>{const e=t(p);t(ye)&&e!==t(Y)&&(s(Y,e,!0),s(h,null),E())}),Bt(()=>{(async()=>(await Promise.all([it(),ot()]),await E(),s(Y,t(p),!0),s(ye,!0)))()});var ee=pr();Ht("1uk1thp",e=>{Qt(()=>{Vt.title="Bosun: Telescope"})});var Ce=n(ee);ar(Ce,{get agents(){return t(he)},get currentAgent(){return t(p)},onAgentClick:gt,showAllAgentsOption:!0,onAllAgentsClick:mt,className:"flex-none"});var ke=l(Ce,2),te=n(ke),re=n(te),_t=n(re);rr(_t,{get value(){return t(Se)},ariaLabel:"Top tabs",onChange:ft,children:(e,r)=>{var a=nr(),i=_e(a);Xe(i,{value:"edit",children:(c,S)=>{T();var m=k("Edit");v(c,m)},$$slots:{default:!0}});var u=l(i,2);Xe(u,{value:"view",children:(c,S)=>{T();var m=k("View");v(c,m)},$$slots:{default:!0}}),v(e,a)},$$slots:{default:!0}}),o(re);var Pe=l(re,2),ae=n(Pe),Te=n(ae),Le=n(Te),I=n(Le),ht=n(I);{var xt=e=>{var r=Rt(),a=_e(r);Ve(a,17,()=>t(w),We,(i,u)=>{var c=Ye(),S=n(c,!0);o(c);var m={};P(()=>{g(S,t(u).label),m!==(m=t(u).id)&&(c.value=(c.__value=t(u).id)??"")}),v(i,c)}),v(e,r)},yt=e=>{var r=Ye(),a=n(r,!0);o(r),r.value=r.__value="",P(()=>g(a,t(B)?"Loading…":"No sources")),v(e,r)};Q(ht,e=>{t(w).length?e(xt):e(yt,-1)})}o(I);var se=l(I,2),Ne=n(se);Yt(Ne,{class:"w-56 rounded-r-none !border !border-rc-gray-500 !p-2 !pr-8 hover:border-rc-gray-400",placeholder:"Search by phone...",onkeydown:e=>{e.key==="Enter"&&(e.preventDefault(),e.stopPropagation(),Ie())},get value(){return t(L)},set value(e){s(L,e,!0)}});var bt=l(Ne);{var wt=e=>{var r=ir(),a=n(r);Xt(a,{name:"close",width:18,height:18}),o(r),F("click",r,pt),v(e,r)};Q(bt,e=>{t(L)&&e(wt)})}o(se);var $t=l(se,2);V($t,{onclick:Ie,children:(e,r)=>{T();var a=k("Search");v(e,a)},$$slots:{default:!0}}),o(Le),o(Te),o(ae);var oe=l(ae,2),It=l(n(oe),2);V(It,{onclick:dt,children:(e,r)=>{T();var a=k();P(()=>g(a,t(z)?"Newest first":"Oldest first")),v(e,a)},$$slots:{default:!0}}),o(oe);var ne=l(oe,2),O=l(n(ne),2),ie=n(O);ie.value=ie.__value="5";var le=l(ie);le.value=le.__value="10";var ce=l(le);ce.value=ce.__value="20";var De=l(ce);De.value=De.__value="50",o(O),o(ne);var de=l(ne,2),Ee=n(de),Ue=n(Ee);{let e=C(()=>t(x).length===0&&!t($));V(Ue,{onclick:ct,get disabled(){return t(e)},children:(r,a)=>{T();var i=k("Prev");v(r,i)},$$slots:{default:!0}})}var Fe=l(Ue,2);{let e=C(()=>{var r;return!((r=t(_))!=null&&r.items.length)});V(Fe,{onclick:lt,get disabled(){return t(e)},children:(r,a)=>{T();var i=k("Next");v(r,i)},$$slots:{default:!0}})}var je=l(Fe,2),St=n(je);o(je),o(Ee),o(de);var Me=l(de,2),ze=l(n(Me),2),At=n(ze,!0);o(ze),o(Me),o(Pe),o(te);var Re=l(te,2),ve=n(Re),Be=l(n(ve),2),Ct=n(Be);{var kt=e=>{var r=lr();v(e,r)},Pt=e=>{var r=cr();v(e,r)},Tt=e=>{var r=ur();Ve(r,21,()=>t(_).items,We,(a,i)=>{var u=vr(),c=n(u),S=n(c),m=n(S),Nt=n(m,!0);o(m);var Oe=l(m,2),pe=n(Oe),Dt=n(pe,!0);o(pe);var qe=l(pe,2),Et=n(qe,!0);o(qe),o(Oe),o(S);var Ge=l(S,2),fe=n(Ge),ge=l(n(fe),2),Ut=n(ge,!0);o(ge);var Ft=l(ge,2);{var jt=A=>{var q=dr(),U=l(_e(q),2),G=n(U,!0);o(U),P(()=>g(G,t(i).agentId)),v(A,q)};Q(Ft,A=>{!t(p)&&t(i).agentId&&A(jt)})}o(fe);var Qe=l(fe,2),Mt=n(Qe);o(Qe),o(Ge),o(c),o(u),P((A,q)=>{var U,G;Jt(u,1,`cursor-pointer rounded-lg p-3 transition-colors ${(f.params.conversationId?t(i).conversationId===f.params.conversationId:t(i).conversationId===((U=t(h))==null?void 0:U.conversationId))?"bg-rc-gray-600":"bg-rc-gray-700 hover:bg-rc-gray-650"}`,"svelte-1uk1thp"),Je(u,"aria-selected",f.params.conversationId?t(i).conversationId===f.params.conversationId:t(i).conversationId===((G=t(h))==null?void 0:G.conversationId)),g(Nt,A),g(Dt,t(i).medium),g(Et,t(i).phoneNumber),g(Ut,t(i).conversationId),g(Mt,`Duration: ${q??""}`)},[()=>et(t(i).createdAt),()=>tt(t(i).duration??0)]),F("click",u,A=>vt(t(i),A)),v(a,u)}),o(r),v(e,r)};Q(Ct,e=>{var r,a;t(R)?e(kt):(a=(r=t(_))==null?void 0:r.items)!=null&&a.length?e(Tt,-1):e(Pt,1)})}o(Be),o(ve);var ue=l(ve,2),Lt=n(ue);Wt(Lt,()=>W.children),o(ue),o(Re),o(ke),o(ee),P(()=>{I.disabled=t(B)||!t(w).length,Je(I,"title",t(X)??"Telescope source"),g(St,`Items: ${t(xe)??""}`),g(At,be()?"Mock (local)":"Live")}),F("change",I,nt),He(I,()=>t(N),e=>s(N,e)),F("change",O,ut),He(O,()=>t(M),e=>s(M,e)),F("click",ue,e=>e.stopPropagation()),v(Ze,ee),Gt()}zt(["change","click"]);export{Fr as component};
1
+ import{d as zt,b as F,a as v,t as k,f as b,c as Rt}from"../chunks/Ca197UDq.js";import{o as Bt}from"../chunks/C39ai1md.js";import{p as Ot,w as d,x as me,d as qt,t as P,j as t,a as Gt,e as Qt,f as _e,s as l,c as n,y as s,n as C,$ as Vt,o as T,r as o}from"../chunks/CxLomzuE.js";import{s as g}from"../chunks/DJriQKD9.js";import{i as Q}from"../chunks/Buo-57fF.js";import{e as Ve,i as We}from"../chunks/BJTwdUYr.js";import{s as Wt}from"../chunks/BDl2QuyN.js";import{h as Ht}from"../chunks/iAhzu4tv.js";import{b as He,c as Je}from"../chunks/D-B5X35l.js";import{s as Jt}from"../chunks/CAjPRvNs.js";import{p as Kt}from"../chunks/CPXdAKdv.js";import{g as y}from"../chunks/BD9x_mnu.js";import{p as f}from"../chunks/CXESoUel.js";import{B as V}from"../chunks/CVlsAO8k.js";import{I as Xt}from"../chunks/07xNIa59.js";import{I as Yt}from"../chunks/nYD9wsyN.js";import{m as Zt}from"../chunks/ddC1NP9R.js";import{p as Ke,T as er,g as tr}from"../chunks/JcG4w2gF.js";import{T as rr,a as Xe}from"../chunks/BsDZe4N6.js";import{A as ar}from"../chunks/C7he4XPB.js";import{g as sr}from"../chunks/Cql_e8Of.js";import{t as or}from"../chunks/DCuEIs0S.js";var nr=b("<!> <!>",1),Ye=b("<option> </option>"),ir=b('<button type="button" aria-label="Clear search" class="absolute right-2 top-1/2 flex -translate-y-1/2 items-center justify-center rounded p-1 text-rc-gray-200 hover:bg-rc-gray-600 hover:text-rc-gray-100 focus:outline-none"><!></button>'),lr=b('<p class="py-8 text-center text-rc-gray-200">Loading...</p>'),cr=b('<p class="py-8 text-center text-rc-gray-300">No conversations found</p>'),dr=b('<span class="text-rc-gray-200">, Agent Id:</span> <span class="text-rc-green-200"> </span>',1),vr=b('<li><div class="flex w-full flex-col gap-2"><div class="flex w-full items-center justify-between"><div class="text-gray-300"> </div> <div class="flex items-center gap-2"><span class="text-xs text-rc-gray-300"> </span> <span class="font-semibold text-rc-gray-100"> </span></div></div> <div class="flex items-center justify-between gap-4"><div class="text-sm"><span class="text-rc-gray-200">Conversation Id:</span> <span class="text-rc-green-200"> </span> <!></div> <p class="text-sm text-gray-400"> </p></div></div></li>'),ur=b('<ul class="space-y-2"></ul>'),pr=b('<div class="flex h-screen"><!> <div class="flex h-full min-w-0 flex-1 flex-col bg-rc-gray-980 pb-3 pr-4 pt-2"><nav class="flex flex-none flex-col bg-rc-gray-980"><div class="flex items-center justify-center"><!></div> <div class="flex flex-wrap items-center gap-4"><div class="flex-1"><label class="block"><div class="flex gap-2"><select class="select svelte-1uk1thp" aria-label="Telescope source"><!></select> <div class="relative"><!><!></div> <!></div></label></div> <div class="hidden items-center gap-2"><div class="text-rc-gray-200">Sort:</div> <!></div> <div class="hidden items-center gap-2"><div class="text-rc-gray-200">Page size:</div> <select class="rounded-sm border border-rc-gray-300 bg-rc-gray-700 p-2 pr-8 text-rc-gray-100"><option>5</option><option>10</option><option>20</option><option>50</option></select></div> <div class="flex items-center gap-3"><div class="flex items-center gap-2"><!> <!> <div class="text-sm text-rc-gray-200"> </div></div></div> <div class="ml-auto whitespace-nowrap text-sm"><span class="text-gray-400">API Mode:</span> <span class="font-semibold text-rc-green-200"> </span></div></div></nav> <main class="flex flex-1 overflow-hidden"><div class="flex h-full w-1/3 flex-col"><div class="flex-none border-b border-rc-gray-300/40 p-4"><h2 class="text-lg font-semibold text-rc-gray-100">Conversations</h2></div> <div class="rc-scroll min-h-0 flex-1 overflow-scroll px-3 py-4"><!></div></div> <div class="flex h-full w-2/3 flex-col bg-rc-gray-980"><!></div></main></div></div>');function Fr(Ze,W){Ot(W,!0);const j=new er(fetch);let he=d(me([])),_=d(void 0),h=d(null);const p=C(()=>(f.url.searchParams.get("agent")??"").trim()),H=C(()=>(f.url.searchParams.get("region")??"").trim());let L=d(""),J=d(20),M=d("20"),z=d(!0),x=d(me([])),$=d(null),R=d(!1),K=d(null),xe=d(0),w=d(me([])),N=d(""),B=d(!1),X=d(null),ye=d(!1),Y=d(null),be=Kt(W,"useMock",3,!1);const{onError:we}=sr();function et(e){return new Date(e).toLocaleString()}function tt(e){const r=Math.floor(e/60),a=e%60;return`${r}:${String(a).padStart(2,"0")}`}function $e(e=t(p),r=e===t(p)?t(H):""){const a=new URLSearchParams;e&&a.set("agent",e),e&&r&&a.set("region",r);const i=a.toString();return i?`?${i}`:""}function D(e=t(p)){return`${t(Ae)}/conversations${$e(e)}`}const rt=C(()=>f.url.pathname.split("/").at(-1)==="latency"?"latency":"traces");function at(e,r=t(rt),a=t(p)){return`${t(Ae)}/conversations/${encodeURIComponent(e)}/${r}${$e(a)}`}async function st(e,r=t(J),a,i){return be()?Zt.fetchConversations(r,e,a??void 0):j.getConversations({phoneNumber:e,agentId:i,limit:Number(r),lastConversationId:a??void 0})}async function E(){s(x,[],!0),s($,null),await Z()}async function ot(){s(B,!0),s(X,null);try{const e=await fetch("/traces/api/sources");if(!e.ok)throw new Error(`Failed to load sources (${e.status})`);const r=await e.json(),a=Array.isArray(r)?r:[];if(s(w,a.filter(c=>c&&typeof c.id=="string"&&typeof c.label=="string"),!0),!t(w).length)throw new Error("No sources returned");const i=tr(),u=i&&t(w).some(c=>c.id===i)?i:t(w)[0].id;s(N,u,!0),Ke(u),j.setSourceId(u)}catch(e){console.error("Failed to load Telescope sources:",e),s(X,(e==null?void 0:e.message)??"Failed to load Telescope sources",!0),s(w,[],!0),s(N,""),j.setSourceId(void 0)}finally{s(B,!1)}}async function nt(e){const r=e.target.value;s(N,r,!0),Ke(r),j.setSourceId(r),s(h,null),await y(D()),await E()}async function it(){try{s(he,await or.agents.catalog.query(),!0)}catch(e){const r=e instanceof Error?e.message:e?String(e):"Unknown error";console.error("Failed to load agents:",e),we(`Failed to load agents: ${r}`)}}async function Z(){s(R,!0),s(K,null);try{const e=await st(t(L)||void 0,t(J),t($)??void 0,t(p)||void 0);let r=Array.isArray(e.items)?e.items.slice():[];r=r.filter(a=>!!(a!=null&&a.phoneNumber)),s(_,{limit:e.limit,items:r,lastConversationId:e.lastConversationId},!0),s(xe,r.length,!0),s($,e.lastConversationId??null,!0),s(R,!1)}catch(e){s(R,!1),s(K,e.message||"Unknown error",!0),we(`Error loading conversations: ${t(K)}`),console.error("Load page error:",e)}}async function lt(){var e;(e=t(_))!=null&&e.lastConversationId&&(t(x).push(t(_).lastConversationId),s($,t(_).lastConversationId,!0),await Z())}async function ct(){t(x).length&&(t(x).pop(),s($,t(x).length?t(x)[t(x).length-1]:null,!0),await Z())}function dt(){var e;s(z,!t(z)),(e=t(_))!=null&&e.items&&t(_).items.sort((r,a)=>t(z)?a.createdAt-r.createdAt:r.createdAt-a.createdAt)}async function vt(e,r){var i;if(r==null||r.stopPropagation(),f.params.conversationId&&f.params.conversationId===e.conversationId||!f.params.conversationId&&((i=t(h))==null?void 0:i.conversationId)===e.conversationId){s(h,null),await y(D());return}s(h,e,!0),await y(at(e.conversationId))}function ut(e){const r=e.target.value;s(M,r,!0),s(J,parseInt(t(M),10)||20,!0)}async function Ie(){await E()}async function pt(e){e==null||e.preventDefault(),e==null||e.stopPropagation(),s(L,""),s(x,[],!0),s($,null),await E()}const Se=C(()=>{const e=f.url.pathname.split("/")[1];return e==="traces"?"view":e}),Ae=C(()=>f.url.pathname.startsWith("/view")?"/view":"/traces");function ft({value:e}){if(e!==t(Se)){if(e==="edit"){if(!t(p))return y("/edit");const r=new URLSearchParams;t(H)&&r.set("region",t(H));const a=r.toString();return y(`/edit/${encodeURIComponent(t(p))}/roleplay${a?`?${a}`:""}`)}if(e==="view")return y(D());y("/"+e)}}async function gt(e,r){r==null||r.stopPropagation(),e!==t(p)&&(s(h,null),await y(D(e)))}async function mt(e){e==null||e.stopPropagation(),t(p)&&(s(h,null),await y(D("")))}qt(()=>{const e=t(p);t(ye)&&e!==t(Y)&&(s(Y,e,!0),s(h,null),E())}),Bt(()=>{(async()=>(await Promise.all([it(),ot()]),await E(),s(Y,t(p),!0),s(ye,!0)))()});var ee=pr();Ht("1uk1thp",e=>{Qt(()=>{Vt.title="Bosun: Telescope"})});var Ce=n(ee);ar(Ce,{get agents(){return t(he)},get currentAgent(){return t(p)},onAgentClick:gt,showAllAgentsOption:!0,onAllAgentsClick:mt,className:"flex-none"});var ke=l(Ce,2),te=n(ke),re=n(te),_t=n(re);rr(_t,{get value(){return t(Se)},ariaLabel:"Top tabs",onChange:ft,children:(e,r)=>{var a=nr(),i=_e(a);Xe(i,{value:"edit",children:(c,S)=>{T();var m=k("Edit");v(c,m)},$$slots:{default:!0}});var u=l(i,2);Xe(u,{value:"view",children:(c,S)=>{T();var m=k("View");v(c,m)},$$slots:{default:!0}}),v(e,a)},$$slots:{default:!0}}),o(re);var Pe=l(re,2),ae=n(Pe),Te=n(ae),Le=n(Te),I=n(Le),ht=n(I);{var xt=e=>{var r=Rt(),a=_e(r);Ve(a,17,()=>t(w),We,(i,u)=>{var c=Ye(),S=n(c,!0);o(c);var m={};P(()=>{g(S,t(u).label),m!==(m=t(u).id)&&(c.value=(c.__value=t(u).id)??"")}),v(i,c)}),v(e,r)},yt=e=>{var r=Ye(),a=n(r,!0);o(r),r.value=r.__value="",P(()=>g(a,t(B)?"Loading…":"No sources")),v(e,r)};Q(ht,e=>{t(w).length?e(xt):e(yt,-1)})}o(I);var se=l(I,2),Ne=n(se);Yt(Ne,{class:"w-56 rounded-r-none !border !border-rc-gray-500 !p-2 !pr-8 hover:border-rc-gray-400",placeholder:"Search by phone...",onkeydown:e=>{e.key==="Enter"&&(e.preventDefault(),e.stopPropagation(),Ie())},get value(){return t(L)},set value(e){s(L,e,!0)}});var bt=l(Ne);{var wt=e=>{var r=ir(),a=n(r);Xt(a,{name:"close",width:18,height:18}),o(r),F("click",r,pt),v(e,r)};Q(bt,e=>{t(L)&&e(wt)})}o(se);var $t=l(se,2);V($t,{onclick:Ie,children:(e,r)=>{T();var a=k("Search");v(e,a)},$$slots:{default:!0}}),o(Le),o(Te),o(ae);var oe=l(ae,2),It=l(n(oe),2);V(It,{onclick:dt,children:(e,r)=>{T();var a=k();P(()=>g(a,t(z)?"Newest first":"Oldest first")),v(e,a)},$$slots:{default:!0}}),o(oe);var ne=l(oe,2),O=l(n(ne),2),ie=n(O);ie.value=ie.__value="5";var le=l(ie);le.value=le.__value="10";var ce=l(le);ce.value=ce.__value="20";var De=l(ce);De.value=De.__value="50",o(O),o(ne);var de=l(ne,2),Ee=n(de),Ue=n(Ee);{let e=C(()=>t(x).length===0&&!t($));V(Ue,{onclick:ct,get disabled(){return t(e)},children:(r,a)=>{T();var i=k("Prev");v(r,i)},$$slots:{default:!0}})}var Fe=l(Ue,2);{let e=C(()=>{var r;return!((r=t(_))!=null&&r.items.length)});V(Fe,{onclick:lt,get disabled(){return t(e)},children:(r,a)=>{T();var i=k("Next");v(r,i)},$$slots:{default:!0}})}var je=l(Fe,2),St=n(je);o(je),o(Ee),o(de);var Me=l(de,2),ze=l(n(Me),2),At=n(ze,!0);o(ze),o(Me),o(Pe),o(te);var Re=l(te,2),ve=n(Re),Be=l(n(ve),2),Ct=n(Be);{var kt=e=>{var r=lr();v(e,r)},Pt=e=>{var r=cr();v(e,r)},Tt=e=>{var r=ur();Ve(r,21,()=>t(_).items,We,(a,i)=>{var u=vr(),c=n(u),S=n(c),m=n(S),Nt=n(m,!0);o(m);var Oe=l(m,2),pe=n(Oe),Dt=n(pe,!0);o(pe);var qe=l(pe,2),Et=n(qe,!0);o(qe),o(Oe),o(S);var Ge=l(S,2),fe=n(Ge),ge=l(n(fe),2),Ut=n(ge,!0);o(ge);var Ft=l(ge,2);{var jt=A=>{var q=dr(),U=l(_e(q),2),G=n(U,!0);o(U),P(()=>g(G,t(i).agentId)),v(A,q)};Q(Ft,A=>{!t(p)&&t(i).agentId&&A(jt)})}o(fe);var Qe=l(fe,2),Mt=n(Qe);o(Qe),o(Ge),o(c),o(u),P((A,q)=>{var U,G;Jt(u,1,`cursor-pointer rounded-lg p-3 transition-colors ${(f.params.conversationId?t(i).conversationId===f.params.conversationId:t(i).conversationId===((U=t(h))==null?void 0:U.conversationId))?"bg-rc-gray-600":"bg-rc-gray-700 hover:bg-rc-gray-650"}`,"svelte-1uk1thp"),Je(u,"aria-selected",f.params.conversationId?t(i).conversationId===f.params.conversationId:t(i).conversationId===((G=t(h))==null?void 0:G.conversationId)),g(Nt,A),g(Dt,t(i).medium),g(Et,t(i).phoneNumber),g(Ut,t(i).conversationId),g(Mt,`Duration: ${q??""}`)},[()=>et(t(i).createdAt),()=>tt(t(i).duration??0)]),F("click",u,A=>vt(t(i),A)),v(a,u)}),o(r),v(e,r)};Q(Ct,e=>{var r,a;t(R)?e(kt):(a=(r=t(_))==null?void 0:r.items)!=null&&a.length?e(Tt,-1):e(Pt,1)})}o(Be),o(ve);var ue=l(ve,2),Lt=n(ue);Wt(Lt,()=>W.children),o(ue),o(Re),o(ke),o(ee),P(()=>{I.disabled=t(B)||!t(w).length,Je(I,"title",t(X)??"Telescope source"),g(St,`Items: ${t(xe)??""}`),g(At,be()?"Mock (local)":"Live")}),F("change",I,nt),He(I,()=>t(N),e=>s(N,e)),F("change",O,ut),He(O,()=>t(M),e=>s(M,e)),F("click",ue,e=>e.stopPropagation()),v(Ze,ee),Gt()}zt(["change","click"]);export{Fr as component};
@@ -1 +1 @@
1
- import{d as L,b as U,a as t,t as h,f as x}from"../chunks/Ca197UDq.js";import{p as j,a as B,f as M,j as l,s as g,n as $,c,o as b,r as d}from"../chunks/CxLomzuE.js";import{s as R}from"../chunks/BDl2QuyN.js";import{g as W}from"../chunks/BVxLHCs8.js";import{p as o}from"../chunks/ChVBNPUb.js";import{T as q,a as _}from"../chunks/BsDZe4N6.js";import{p as z}from"../chunks/CaHl3dME.js";var A=x("<!> <!>",1),D=x('<div class="flex h-full min-h-0 flex-col bg-rc-gray-980"><div class="flex-none border-b border-rc-gray-300/40 px-4 pt-3"><!></div> <div class="min-h-0 flex-1"><!></div></div>');function O(y,v){j(v,!0),z();const p=$(()=>o.url.pathname.split("/").at(-1)==="latency"?"latency":"traces"),w=$(()=>o.url.pathname.startsWith("/view")?"/view":"/traces");function T(a){const m=o.params.conversationId??"",r=o.url.search;return`${l(w)}/conversations/${encodeURIComponent(m)}/${a}${r}`}function C({value:a}){a!=="traces"&&a!=="latency"||a!==l(p)&&W(T(a))}var e=D(),s=c(e),P=c(s);q(P,{get value(){return l(p)},ariaLabel:"View conversation tabs",onChange:C,children:(a,m)=>{var r=A(),u=M(r);_(u,{value:"traces",children:(n,k)=>{b();var i=h("Traces");t(n,i)},$$slots:{default:!0}});var I=g(u,2);_(I,{value:"latency",children:(n,k)=>{b();var i=h("Latency");t(n,i)},$$slots:{default:!0}}),t(a,r)},$$slots:{default:!0}}),d(s);var f=g(s,2),V=c(f);R(V,()=>v.children),d(f),d(e),U("click",e,a=>a.stopPropagation()),t(y,e),B()}L(["click"]);export{O as component};
1
+ import{d as L,b as U,a as t,t as h,f as x}from"../chunks/Ca197UDq.js";import{p as j,a as B,f as M,j as l,s as g,n as $,c,o as b,r as d}from"../chunks/CxLomzuE.js";import{s as R}from"../chunks/BDl2QuyN.js";import{g as W}from"../chunks/BD9x_mnu.js";import{p as o}from"../chunks/CXESoUel.js";import{T as q,a as _}from"../chunks/BsDZe4N6.js";import{p as z}from"../chunks/CaHl3dME.js";var A=x("<!> <!>",1),D=x('<div class="flex h-full min-h-0 flex-col bg-rc-gray-980"><div class="flex-none border-b border-rc-gray-300/40 px-4 pt-3"><!></div> <div class="min-h-0 flex-1"><!></div></div>');function O(y,v){j(v,!0),z();const p=$(()=>o.url.pathname.split("/").at(-1)==="latency"?"latency":"traces"),w=$(()=>o.url.pathname.startsWith("/view")?"/view":"/traces");function T(a){const m=o.params.conversationId??"",r=o.url.search;return`${l(w)}/conversations/${encodeURIComponent(m)}/${a}${r}`}function C({value:a}){a!=="traces"&&a!=="latency"||a!==l(p)&&W(T(a))}var e=D(),s=c(e),P=c(s);q(P,{get value(){return l(p)},ariaLabel:"View conversation tabs",onChange:C,children:(a,m)=>{var r=A(),u=M(r);_(u,{value:"traces",children:(n,k)=>{b();var i=h("Traces");t(n,i)},$$slots:{default:!0}});var I=g(u,2);_(I,{value:"latency",children:(n,k)=>{b();var i=h("Latency");t(n,i)},$$slots:{default:!0}}),t(a,r)},$$slots:{default:!0}}),d(s);var f=g(s,2),V=c(f);R(V,()=>v.children),d(f),d(e),U("click",e,a=>a.stopPropagation()),t(y,e),B()}L(["click"]);export{O as component};