@recombine-ai/platform 0.8.0-test.2 → 0.8.1
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.
- package/build/agent/experiment.d.ts +21 -0
- package/build/agent/experiment.d.ts.map +1 -0
- package/build/agent/experiment.js +29 -0
- package/build/agent/index.d.ts +2 -0
- package/build/agent/index.d.ts.map +1 -1
- package/build/agent/index.js +1 -0
- package/build/bosun/index.d.ts +1 -0
- package/build/bosun/index.d.ts.map +1 -1
- package/build/bosun/interfaces/agent.d.ts +1 -0
- package/build/bosun/interfaces/agent.d.ts.map +1 -1
- package/build/bosun/interfaces/project.d.ts +25 -0
- package/build/bosun/interfaces/project.d.ts.map +1 -0
- package/build/bosun/interfaces/project.js +1 -0
- package/build/bosun-app/backend/server.js +252 -60
- package/build/bosun-app/backend/server.js.map +2 -2
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{CR5IRTqC.js → AmpxVxY6.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/AmpxVxY6.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/AmpxVxY6.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{DjDpMqch.js → B-5g3xS8.js} +20 -20
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B-5g3xS8.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B-5g3xS8.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{BBk8_Xpk.js → B1MxGo6p.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B1MxGo6p.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B1MxGo6p.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BTw6JswM.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BTw6JswM.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BTw6JswM.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{joiJcRPz.js → BqH4VDQz.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BqH4VDQz.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BqH4VDQz.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CBW06aCF.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CBW06aCF.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CBW06aCF.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{C0rPkxmP.js → CVZT6n14.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CVZT6n14.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CVZT6n14.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{Diqx_kju.js → CXS28GEZ.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CXS28GEZ.js.br +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CXS28GEZ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{ouMvMh56.js → CkstLsmI.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CkstLsmI.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CkstLsmI.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{C3cROXCy.js → CuwQtXBl.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CuwQtXBl.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CuwQtXBl.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{BEdAvgYp.js → D9YsE4-8.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D9YsE4-8.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D9YsE4-8.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DzqCKWaI.js +3 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DzqCKWaI.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DzqCKWaI.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Xf8YUGwh.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Xf8YUGwh.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Xf8YUGwh.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{DJnDF3d9.js → dL_jwANm.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/dL_jwANm.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/dL_jwANm.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/{app.DYrvpbQq.js → app.DaDBScXg.js} +2 -2
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.DaDBScXg.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.DaDBScXg.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CWqX8UwM.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CWqX8UwM.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CWqX8UwM.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{0.DXIuJQso.js → 0._S0yln6w.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0._S0yln6w.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0._S0yln6w.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{1.CsX5iplT.js → 1.BSNKOkyF.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.BSNKOkyF.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.BSNKOkyF.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.NIQt0c21.js +35 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.NIQt0c21.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.NIQt0c21.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{17.BIO8m3DR.js → 17.Bn1yI4kt.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.Bn1yI4kt.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.Bn1yI4kt.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.DAa7yKtf.js +11 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.DAa7yKtf.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.DAa7yKtf.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.DTjCxUv0.js +35 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.DTjCxUv0.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.DTjCxUv0.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CzgpFcXZ.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CzgpFcXZ.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CzgpFcXZ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{4.BzhaMuo5.js → 4.3i9fJNn9.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.3i9fJNn9.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.3i9fJNn9.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{5.BG8ylHWg.js → 5.C2R3wdz0.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.C2R3wdz0.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.C2R3wdz0.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{6.DkDEANSN.js → 6.CarWVMPM.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.CarWVMPM.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.CarWVMPM.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{8.3fEbISY6.js → 8.joumIYrl.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.joumIYrl.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.joumIYrl.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.BGKMyDx1.js +2 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.BGKMyDx1.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.BGKMyDx1.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/version.json +1 -1
- package/build/bosun-app/frontend/client/_app/version.json.br +0 -0
- package/build/bosun-app/frontend/client/_app/version.json.gz +0 -0
- package/build/bosun-app/frontend/handler.js +4 -4
- package/build/bosun-app/frontend/index.js +4 -4
- package/build/bosun-app/frontend/server/chunks/chunks/{ChatStepTrace.js-VTtwaKGp.js → ChatStepTrace.js-BY0y3Vbb.js} +3 -1
- package/build/bosun-app/frontend/server/chunks/chunks/ChatStepTrace.js-BY0y3Vbb.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-B7oaNMJQ.js → internal.js-ChM9druZ.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-B7oaNMJQ.js.map → internal.js-ChM9druZ.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/chunks/{source-selection.js-D5B8gfq2.js → source-selection.js-DFpObbhz.js} +3 -1
- package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-DFpObbhz.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/{_layout.svelte.js-B2wHKJV7.js → _layout.svelte.js-b9Q5TFEZ.js} +134 -24
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_layout.svelte.js-b9Q5TFEZ.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/{_page.svelte.js-DDcIjgZD.js → _page.svelte.js-Chv8ybaj.js} +10 -4
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/_page.svelte.js-Chv8ybaj.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/{_page.svelte.js-UVUg89-t.js → _page.svelte.js-Dkst1C_3.js} +3 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/_page.svelte.js-Dkst1C_3.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/{_page.svelte.js-SjAtxtA0.js → _page.svelte.js-DFZznMhQ.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/{_page.svelte.js-SjAtxtA0.js.map → _page.svelte.js-DFZznMhQ.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/{_page.svelte.js-DiZKDT2v.js → _page.svelte.js-Bxdn8vG5.js} +7 -3
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-Bxdn8vG5.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/{_layout.svelte.js-CfkCQ2Th.js → _layout.svelte.js-UAHBCAaS.js} +62 -10
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-UAHBCAaS.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/{handler-D9QLNo8w.js → handler-KSixAuP8.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/{handler-D9QLNo8w.js.map → handler-KSixAuP8.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/{index.js-B0gyG8Jr.js → index.js-xzEg77OG.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/{index.js-B0gyG8Jr.js.map → index.js-xzEg77OG.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/{manifest.js-BJwjpIJ3.js → manifest.js-BW4X3pHs.js} +14 -14
- package/build/bosun-app/frontend/server/chunks/{manifest.js-BJwjpIJ3.js.map → manifest.js-BW4X3pHs.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{0.js-CzIAnGix.js → 0.js-B1rx1DOM.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/nodes/{0.js-CzIAnGix.js.map → 0.js-B1rx1DOM.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{1.js-dcMNeOrp.js → 1.js-h7GlMehw.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/nodes/{1.js-dcMNeOrp.js.map → 1.js-h7GlMehw.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{10.js-BJiZIzMv.js → 10.js-C6xRYZtL.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/nodes/{10.js-BJiZIzMv.js.map → 10.js-C6xRYZtL.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{17.js-D2Tp888g.js → 17.js-CavP10f9.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/nodes/{17.js-D2Tp888g.js.map → 17.js-CavP10f9.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{18.js-u_njdfH1.js → 18.js-DC7Bv1j_.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/nodes/{18.js-u_njdfH1.js.map → 18.js-DC7Bv1j_.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{2.js-CmkWii-m.js → 2.js-BhiMP7Sz.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/nodes/{2.js-CmkWii-m.js.map → 2.js-BhiMP7Sz.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{3.js-CEcqDZwI.js → 3.js-C7zctWo-.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/nodes/{3.js-CEcqDZwI.js.map → 3.js-C7zctWo-.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{4.js-DoWmHMTv.js → 4.js-5G8VLxJe.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/nodes/{4.js-DoWmHMTv.js.map → 4.js-5G8VLxJe.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{5.js-hFh1mvzS.js → 5.js-HO1CExm6.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/nodes/{5.js-hFh1mvzS.js.map → 5.js-HO1CExm6.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{6.js-C9qNqJg2.js → 6.js-CDW8tRHL.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/nodes/{6.js-C9qNqJg2.js.map → 6.js-CDW8tRHL.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{8.js-Btfm0qj5.js → 8.js-BjO10Jpo.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/nodes/{8.js-Btfm0qj5.js.map → 8.js-BjO10Jpo.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/{9.js-Ca7GzK3u.js → 9.js-Csa_leV9.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/nodes/{9.js-Ca7GzK3u.js.map → 9.js-Csa_leV9.js.map} +1 -1
- package/build/call-control/call-control.d.ts.map +1 -1
- package/build/call-control/call-control.js +0 -2
- package/build/call-control/index.d.ts +0 -1
- package/build/call-control/index.d.ts.map +1 -1
- package/build/call-control/index.js +0 -1
- package/build/call-control/schemas.generated.d.ts +2 -1
- package/build/call-control/schemas.generated.d.ts.map +1 -1
- package/build/call-control/schemas.generated.js +4 -4
- package/build/call-control/types.d.ts +156 -3
- package/build/call-control/types.d.ts.map +1 -1
- package/build/call-control/types.js +3 -3
- package/build/engine/interfaces/other.d.ts +1 -1
- package/build/engine/interfaces/other.d.ts.map +1 -1
- package/build/telescope/api.d.ts.map +1 -1
- package/build/telescope/api.js +8 -2
- package/build/telescope/index.d.ts +1 -1
- package/build/telescope/index.d.ts.map +1 -1
- package/build/telescope/interfaces/conversation.d.ts +8 -0
- package/build/telescope/interfaces/conversation.d.ts.map +1 -1
- package/build/telescope/interfaces/event-tracer.d.ts +8 -0
- package/build/telescope/interfaces/event-tracer.d.ts.map +1 -1
- package/build/telescope/interfaces/storage.d.ts +2 -2
- package/build/telescope/interfaces/storage.d.ts.map +1 -1
- package/build/telescope/interfaces/telescope.d.ts +1 -0
- package/build/telescope/interfaces/telescope.d.ts.map +1 -1
- package/build/telescope/stub-storage.d.ts +2 -2
- package/build/telescope/stub-storage.d.ts.map +1 -1
- package/build/telescope/stub-storage.js +3 -8
- package/build/telescope/tracers/event-tracer.d.ts.map +1 -1
- package/build/telescope/tracers/event-tracer.js +5 -0
- package/build/text-agent-handlers/incoming-message.js +1 -1
- package/build/text-agent-handlers/index.d.ts +1 -0
- package/build/text-agent-handlers/index.d.ts.map +1 -1
- package/build/text-agent-handlers/index.js +1 -0
- package/build/text-agent-handlers/instrument.d.ts +1 -0
- package/build/text-agent-handlers/instrument.d.ts.map +1 -1
- package/build/text-agent-handlers/instrument.js +6 -2
- package/build/text-agent-handlers/jobs-handler.js +1 -1
- package/build/text-agent-handlers/jobs.d.ts +1 -0
- package/build/text-agent-handlers/jobs.d.ts.map +1 -1
- package/build/text-agent-handlers/message-acceptor.d.ts +4 -0
- package/build/text-agent-handlers/message-acceptor.d.ts.map +1 -1
- package/build/text-agent-handlers/message-acceptor.js +8 -2
- package/build/text-agent-handlers/ports.d.ts +2 -1
- package/build/text-agent-handlers/ports.d.ts.map +1 -1
- package/build/text-agent-handlers/ports.js +6 -5
- package/build/text-agent-handlers/variant-scheduler.d.ts +3 -0
- package/build/text-agent-handlers/variant-scheduler.d.ts.map +1 -0
- package/build/text-agent-handlers/variant-scheduler.js +9 -0
- package/build/voice-agent-api/index.d.ts +2 -0
- package/build/voice-agent-api/index.d.ts.map +1 -1
- package/build/voice-agent-api/index.js +1 -0
- package/build/voice-agent-api/route-resolver.d.ts +19 -0
- package/build/voice-agent-api/route-resolver.d.ts.map +1 -0
- package/build/voice-agent-api/route-resolver.js +57 -0
- package/build/voice-agent-api/voice-http.d.ts +8 -4
- package/build/voice-agent-api/voice-http.d.ts.map +1 -1
- package/build/voice-agent-api/voice-http.js +31 -32
- package/package.json +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B3N9vN4_.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B3N9vN4_.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B3N9vN4_.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BaP19BGR.js +0 -3
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BaP19BGR.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BaP19BGR.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Bwiy-Sk7.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Bwiy-Sk7.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Bwiy-Sk7.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D89azUgT.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D89azUgT.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D89azUgT.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Diqx_kju.js.br +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Diqx_kju.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DjDpMqch.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DjDpMqch.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.DYrvpbQq.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.DYrvpbQq.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.ZRGJFDNa.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.ZRGJFDNa.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.ZRGJFDNa.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0.DXIuJQso.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0.DXIuJQso.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.CsX5iplT.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.CsX5iplT.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D6gFo5CY.js +0 -35
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D6gFo5CY.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D6gFo5CY.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.BIO8m3DR.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.BIO8m3DR.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.D4L67K6t.js +0 -11
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.D4L67K6t.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.D4L67K6t.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.6RK8LtTD.js +0 -35
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.6RK8LtTD.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.6RK8LtTD.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CbcbRLFb.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CbcbRLFb.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CbcbRLFb.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.BzhaMuo5.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.BzhaMuo5.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BG8ylHWg.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BG8ylHWg.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.DkDEANSN.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.DkDEANSN.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.3fEbISY6.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.3fEbISY6.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.CoX3jzbC.js +0 -2
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.CoX3jzbC.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.CoX3jzbC.js.gz +0 -0
- package/build/bosun-app/frontend/server/chunks/chunks/ChatStepTrace.js-VTtwaKGp.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-D5B8gfq2.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_layout.svelte.js-B2wHKJV7.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/_page.svelte.js-DDcIjgZD.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/_page.svelte.js-UVUg89-t.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-DiZKDT2v.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-CfkCQ2Th.js.map +0 -1
- package/build/call-control/voice-agent-config.d.ts +0 -155
- package/build/call-control/voice-agent-config.d.ts.map +0 -1
- package/build/call-control/voice-agent-config.js +0 -53
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
import{c as _n,a as p,h as Pa,f as I,d as Ds,b as Oe,t as Xe}from"../chunks/CCYriF4C.js";import{a as kn,o as $a}from"../chunks/DnMQeiTY.js";import{p as Sn,f as $e,j as e,a as Tn,n as w,w as $,bq as La,r as d,y as i,d as Rr,t as V,x as Lt,c as v,s as g,o as je,T as Ea}from"../chunks/CR-uVjxM.js";import{s as F}from"../chunks/B0nqNj93.js";import{i as O}from"../chunks/BQIf5msi.js";import{M as Wr,R as Ra,k as us}from"../chunks/CuwQtXBl.js";import{e as cr,i as ds}from"../chunks/DuQdgMax.js";import{h as Aa}from"../chunks/DjujL8K1.js";import{a as fs,s as qn,c as Ut,r as lr,e as gn,b as ja}from"../chunks/AmpxVxY6.js";import{s as Ae,c as Br}from"../chunks/C9yBjdYI.js";import{b as Nn,a as Oa}from"../chunks/B9pMb6OP.js";import{g as Na,P as Ma}from"../chunks/CHCMKZAC.js";import{B as ct}from"../chunks/BqH4VDQz.js";import{P as Da,C as vs}from"../chunks/BW6P0Ecp.js";import{I as mn}from"../chunks/dL_jwANm.js";import{T as Fs,a as Xr}from"../chunks/D9YsE4-8.js";import{h as Fa,I as Bt}from"../chunks/B1MxGo6p.js";import{r as qa,p as er}from"../chunks/BcbX6huO.js";import{p as ps}from"../chunks/CXS28GEZ.js";import{_ as gs}from"../chunks/C1FmrZbK.js";import{b as za}from"../chunks/ClLUwVGq.js";import{e as Ja,a as Va}from"../chunks/BU7aeYn4.js";import{t as De}from"../chunks/CBW06aCF.js";import{R as Gr}from"../chunks/sKHuRf4Z.js";import{i as kr}from"../chunks/DgGeUDDh.js";const qs=/^[a-z0-9]+(-[a-z0-9]+)*$/,In=(t,r,s,o="")=>{const n=t.split(":");if(t.slice(0,1)==="@"){if(n.length<2||n.length>3)return null;o=n.shift().slice(1)}if(n.length>3||!n.length)return null;if(n.length>1){const b=n.pop(),S=n.pop(),T={provider:n.length>0?n[0]:o,prefix:S,name:b};return r&&!bn(T)?null:T}const l=n[0],c=l.split("-");if(c.length>1){const b={provider:o,prefix:c.shift(),name:c.join("-")};return r&&!bn(b)?null:b}if(s&&o===""){const b={provider:o,prefix:"",name:l};return r&&!bn(b,s)?null:b}return null},bn=(t,r)=>t?!!((r&&t.prefix===""||t.prefix)&&t.name):!1;function Ha(t,r){const s=t.icons,o=t.aliases||Object.create(null),n=Object.create(null);function l(c){if(s[c])return n[c]=[];if(!(c in n)){n[c]=null;const b=o[c]&&o[c].parent,S=b&&l(b);S&&(n[c]=[b].concat(S))}return n[c]}return Object.keys(s).concat(Object.keys(o)).forEach(l),n}const zs=Object.freeze({left:0,top:0,width:16,height:16}),wn=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),Cn=Object.freeze({...zs,...wn}),zn=Object.freeze({...Cn,body:"",hidden:!1});function Ua(t,r){const s={};!t.hFlip!=!r.hFlip&&(s.hFlip=!0),!t.vFlip!=!r.vFlip&&(s.vFlip=!0);const o=((t.rotate||0)+(r.rotate||0))%4;return o&&(s.rotate=o),s}function ms(t,r){const s=Ua(t,r);for(const o in zn)o in wn?o in t&&!(o in s)&&(s[o]=wn[o]):o in r?s[o]=r[o]:o in t&&(s[o]=t[o]);return s}function Ba(t,r,s){const o=t.icons,n=t.aliases||Object.create(null);let l={};function c(b){l=ms(o[b]||n[b],l)}return c(r),s.forEach(c),ms(t,l)}function Js(t,r){const s=[];if(typeof t!="object"||typeof t.icons!="object")return s;t.not_found instanceof Array&&t.not_found.forEach(n=>{r(n,null),s.push(n)});const o=Ha(t);for(const n in o){const l=o[n];l&&(r(n,Ba(t,n,l)),s.push(n))}return s}const Ga={provider:"",aliases:{},not_found:{},...zs};function Mn(t,r){for(const s in r)if(s in t&&typeof t[s]!=typeof r[s])return!1;return!0}function Vs(t){if(typeof t!="object"||t===null)return null;const r=t;if(typeof r.prefix!="string"||!t.icons||typeof t.icons!="object"||!Mn(t,Ga))return null;const s=r.icons;for(const n in s){const l=s[n];if(!n||typeof l.body!="string"||!Mn(l,zn))return null}const o=r.aliases||Object.create(null);for(const n in o){const l=o[n],c=l.parent;if(!n||typeof c!="string"||!s[c]&&!o[c]||!Mn(l,zn))return null}return r}const hs=Object.create(null);function Ka(t,r){return{provider:t,prefix:r,icons:Object.create(null),missing:new Set}}function Ar(t,r){const s=hs[t]||(hs[t]=Object.create(null));return s[r]||(s[r]=Ka(t,r))}function Hs(t,r){return Vs(r)?Js(r,(s,o)=>{o?t.icons[s]=o:t.missing.add(s)}):[]}function Qa(t,r,s){try{if(typeof s.body=="string")return t.icons[r]={...s},!0}catch{}return!1}let Yr=!1;function Us(t){return typeof t=="boolean"&&(Yr=t),Yr}function Wa(t){const r=typeof t=="string"?In(t,!0,Yr):t;if(r){const s=Ar(r.provider,r.prefix),o=r.name;return s.icons[o]||(s.missing.has(o)?null:void 0)}}function Xa(t,r){const s=In(t,!0,Yr);if(!s)return!1;const o=Ar(s.provider,s.prefix);return r?Qa(o,s.name,r):(o.missing.add(s.name),!0)}function Ya(t,r){if(typeof t!="object")return!1;if(typeof r!="string"&&(r=t.provider||""),Yr&&!r&&!t.prefix){let o=!1;return Vs(t)&&(t.prefix="",Js(t,(n,l)=>{Xa(n,l)&&(o=!0)})),o}const s=t.prefix;return bn({prefix:s,name:"a"})?!!Hs(Ar(r,s),t):!1}const Bs=Object.freeze({width:null,height:null}),Gs=Object.freeze({...Bs,...wn}),Za=/(-?[0-9.]*[0-9]+[0-9.]*)/g,eo=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function xs(t,r,s){if(r===1)return t;if(s=s||100,typeof t=="number")return Math.ceil(t*r*s)/s;if(typeof t!="string")return t;const o=t.split(Za);if(o===null||!o.length)return t;const n=[];let l=o.shift(),c=eo.test(l);for(;;){if(c){const b=parseFloat(l);isNaN(b)?n.push(l):n.push(Math.ceil(b*r*s)/s)}else n.push(l);if(l=o.shift(),l===void 0)return n.join("");c=!c}}function to(t,r="defs"){let s="";const o=t.indexOf("<"+r);for(;o>=0;){const n=t.indexOf(">",o),l=t.indexOf("</"+r);if(n===-1||l===-1)break;const c=t.indexOf(">",l);if(c===-1)break;s+=t.slice(n+1,l).trim(),t=t.slice(0,o).trim()+t.slice(c+1)}return{defs:s,content:t}}function ro(t,r){return t?"<defs>"+t+"</defs>"+r:r}function no(t,r,s){const o=to(t);return ro(o.defs,r+o.content+s)}const so=t=>t==="unset"||t==="undefined"||t==="none";function ao(t,r){const s={...Cn,...t},o={...Gs,...r},n={left:s.left,top:s.top,width:s.width,height:s.height};let l=s.body;[s,o].forEach(q=>{const L=[],C=q.hFlip,M=q.vFlip;let B=q.rotate;C?M?B+=2:(L.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),L.push("scale(-1 1)"),n.top=n.left=0):M&&(L.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),L.push("scale(1 -1)"),n.top=n.left=0);let H;switch(B<0&&(B-=Math.floor(B/4)*4),B=B%4,B){case 1:H=n.height/2+n.top,L.unshift("rotate(90 "+H.toString()+" "+H.toString()+")");break;case 2:L.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:H=n.width/2+n.left,L.unshift("rotate(-90 "+H.toString()+" "+H.toString()+")");break}B%2===1&&(n.left!==n.top&&(H=n.left,n.left=n.top,n.top=H),n.width!==n.height&&(H=n.width,n.width=n.height,n.height=H)),L.length&&(l=no(l,'<g transform="'+L.join(" ")+'">',"</g>"))});const c=o.width,b=o.height,S=n.width,T=n.height;let R,P;c===null?(P=b===null?"1em":b==="auto"?T:b,R=xs(P,S/T)):(R=c==="auto"?S:c,P=b===null?xs(R,T/S):b==="auto"?T:b);const A={},W=(q,L)=>{so(L)||(A[q]=L.toString())};W("width",R),W("height",P);const ne=[n.left,n.top,S,T];return A.viewBox=ne.join(" "),{attributes:A,viewBox:ne,body:l}}const oo=/\sid="(\S+)"/g,bs=new Map;function io(t){t=t.replace(/[0-9]+$/,"")||"a";const r=bs.get(t)||0;return bs.set(t,r+1),r?`${t}${r}`:t}function lo(t){const r=[];let s;for(;s=oo.exec(t);)r.push(s[1]);if(!r.length)return t;const o="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(n=>{const l=io(n),c=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+c+')([")]|\\.[a-z])',"g"),"$1"+l+o+"$3")}),t=t.replace(new RegExp(o,"g"),""),t}const Jn=Object.create(null);function co(t,r){Jn[t]=r}function Vn(t){return Jn[t]||Jn[""]}function Un(t){let r;if(typeof t.resources=="string")r=[t.resources];else if(r=t.resources,!(r instanceof Array)||!r.length)return null;return{resources:r,path:t.path||"/",maxURL:t.maxURL||500,rotate:t.rotate||750,timeout:t.timeout||5e3,random:t.random===!0,index:t.index||0,dataAfterTimeout:t.dataAfterTimeout!==!1}}const Bn=Object.create(null),Kr=["https://api.simplesvg.com","https://api.unisvg.com"],yn=[];for(;Kr.length>0;)Kr.length===1||Math.random()>.5?yn.push(Kr.shift()):yn.push(Kr.pop());Bn[""]=Un({resources:["https://api.iconify.design"].concat(yn)});function uo(t,r){const s=Un(r);return s===null?!1:(Bn[t]=s,!0)}function Gn(t){return Bn[t]}const fo=()=>{let t;try{if(t=fetch,typeof t=="function")return t}catch{}};let ys=fo();function vo(t,r){const s=Gn(t);if(!s)return 0;let o;if(!s.maxURL)o=0;else{let n=0;s.resources.forEach(c=>{n=Math.max(n,c.length)});const l=r+".json?icons=";o=s.maxURL-n-s.path.length-l.length}return o}function po(t){return t===404}const go=(t,r,s)=>{const o=[],n=vo(t,r),l="icons";let c={type:l,provider:t,prefix:r,icons:[]},b=0;return s.forEach((S,T)=>{b+=S.length+1,b>=n&&T>0&&(o.push(c),c={type:l,provider:t,prefix:r,icons:[]},b=S.length),c.icons.push(S)}),o.push(c),o};function mo(t){if(typeof t=="string"){const r=Gn(t);if(r)return r.path}return"/"}const ho=(t,r,s)=>{if(!ys){s("abort",424);return}let o=mo(r.provider);switch(r.type){case"icons":{const l=r.prefix,c=r.icons.join(","),b=new URLSearchParams({icons:c});o+=l+".json?"+b.toString();break}case"custom":{const l=r.uri;o+=l.slice(0,1)==="/"?l.slice(1):l;break}default:s("abort",400);return}let n=503;ys(t+o).then(l=>{const c=l.status;if(c!==200){setTimeout(()=>{s(po(c)?"abort":"next",c)});return}return n=501,l.json()}).then(l=>{if(typeof l!="object"||l===null){setTimeout(()=>{l===404?s("abort",l):s("next",n)});return}setTimeout(()=>{s("success",l)})}).catch(()=>{s("next",n)})},xo={prepare:go,send:ho};function Ks(t,r){t.forEach(s=>{const o=s.loaderCallbacks;o&&(s.loaderCallbacks=o.filter(n=>n.id!==r))})}function bo(t){t.pendingCallbacksFlag||(t.pendingCallbacksFlag=!0,setTimeout(()=>{t.pendingCallbacksFlag=!1;const r=t.loaderCallbacks?t.loaderCallbacks.slice(0):[];if(!r.length)return;let s=!1;const o=t.provider,n=t.prefix;r.forEach(l=>{const c=l.icons,b=c.pending.length;c.pending=c.pending.filter(S=>{if(S.prefix!==n)return!0;const T=S.name;if(t.icons[T])c.loaded.push({provider:o,prefix:n,name:T});else if(t.missing.has(T))c.missing.push({provider:o,prefix:n,name:T});else return s=!0,!0;return!1}),c.pending.length!==b&&(s||Ks([t],l.id),l.callback(c.loaded.slice(0),c.missing.slice(0),c.pending.slice(0),l.abort))})}))}let yo=0;function _o(t,r,s){const o=yo++,n=Ks.bind(null,s,o);if(!r.pending.length)return n;const l={id:o,icons:r,callback:t,abort:n};return s.forEach(c=>{(c.loaderCallbacks||(c.loaderCallbacks=[])).push(l)}),n}function wo(t){const r={loaded:[],missing:[],pending:[]},s=Object.create(null);t.sort((n,l)=>n.provider!==l.provider?n.provider.localeCompare(l.provider):n.prefix!==l.prefix?n.prefix.localeCompare(l.prefix):n.name.localeCompare(l.name));let o={provider:"",prefix:"",name:""};return t.forEach(n=>{if(o.name===n.name&&o.prefix===n.prefix&&o.provider===n.provider)return;o=n;const l=n.provider,c=n.prefix,b=n.name,S=s[l]||(s[l]=Object.create(null)),T=S[c]||(S[c]=Ar(l,c));let R;b in T.icons?R=r.loaded:c===""||T.missing.has(b)?R=r.missing:R=r.pending;const P={provider:l,prefix:c,name:b};R.push(P)}),r}function ko(t,r=!0,s=!1){const o=[];return t.forEach(n=>{const l=typeof n=="string"?In(n,r,s):n;l&&o.push(l)}),o}const So={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function To(t,r,s,o){const n=t.resources.length,l=t.random?Math.floor(Math.random()*n):t.index;let c;if(t.random){let E=t.resources.slice(0);for(c=[];E.length>1;){const X=Math.floor(Math.random()*E.length);c.push(E[X]),E=E.slice(0,X).concat(E.slice(X+1))}c=c.concat(E)}else c=t.resources.slice(l).concat(t.resources.slice(0,l));const b=Date.now();let S="pending",T=0,R,P=null,A=[],W=[];typeof o=="function"&&W.push(o);function ne(){P&&(clearTimeout(P),P=null)}function q(){S==="pending"&&(S="aborted"),ne(),A.forEach(E=>{E.status==="pending"&&(E.status="aborted")}),A=[]}function L(E,X){X&&(W=[]),typeof E=="function"&&W.push(E)}function C(){return{startTime:b,payload:r,status:S,queriesSent:T,queriesPending:A.length,subscribe:L,abort:q}}function M(){S="failed",W.forEach(E=>{E(void 0,R)})}function B(){A.forEach(E=>{E.status==="pending"&&(E.status="aborted")}),A=[]}function H(E,X,Ve){const xe=X!=="success";switch(A=A.filter(me=>me!==E),S){case"pending":break;case"failed":if(xe||!t.dataAfterTimeout)return;break;default:return}if(X==="abort"){R=Ve,M();return}if(xe){R=Ve,A.length||(c.length?de():M());return}if(ne(),B(),!t.random){const me=t.resources.indexOf(E.resource);me!==-1&&me!==t.index&&(t.index=me)}S="completed",W.forEach(me=>{me(Ve)})}function de(){if(S!=="pending")return;ne();const E=c.shift();if(E===void 0){if(A.length){P=setTimeout(()=>{ne(),S==="pending"&&(B(),M())},t.timeout);return}M();return}const X={status:"pending",resource:E,callback:(Ve,xe)=>{H(X,Ve,xe)}};A.push(X),T++,P=setTimeout(de,t.rotate),s(E,r,X.callback)}return setTimeout(de),C}function Qs(t){const r={...So,...t};let s=[];function o(){s=s.filter(c=>c().status==="pending")}function n(c,b,S){const T=To(r,c,b,(R,P)=>{o(),S&&S(R,P)});return s.push(T),T}function l(c){return s.find(b=>c(b))||null}return{query:n,find:l,setIndex:c=>{r.index=c},getIndex:()=>r.index,cleanup:o}}function _s(){}const Dn=Object.create(null);function Io(t){if(!Dn[t]){const r=Gn(t);if(!r)return;Dn[t]={config:r,redundancy:Qs(r)}}return Dn[t]}function Co(t,r,s){let o,n;if(typeof t=="string"){const l=Vn(t);if(!l)return s(void 0,424),_s;n=l.send;const c=Io(t);c&&(o=c.redundancy)}else{const l=Un(t);if(l){o=Qs(l);const c=Vn(t.resources?t.resources[0]:"");c&&(n=c.send)}}return!o||!n?(s(void 0,424),_s):o.query(r,n,s)().abort}function ws(){}function Po(t){t.iconsLoaderFlag||(t.iconsLoaderFlag=!0,setTimeout(()=>{t.iconsLoaderFlag=!1,bo(t)}))}function $o(t){const r=[],s=[];return t.forEach(o=>{(o.match(qs)?r:s).push(o)}),{valid:r,invalid:s}}function Qr(t,r,s){function o(){const n=t.pendingIcons;r.forEach(l=>{n&&n.delete(l),t.icons[l]||t.missing.add(l)})}if(s&&typeof s=="object")try{if(!Hs(t,s).length){o();return}}catch(n){console.error(n)}o(),Po(t)}function ks(t,r){t instanceof Promise?t.then(s=>{r(s)}).catch(()=>{r(null)}):r(t)}function Lo(t,r){t.iconsToLoad?t.iconsToLoad=t.iconsToLoad.concat(r).sort():t.iconsToLoad=r,t.iconsQueueFlag||(t.iconsQueueFlag=!0,setTimeout(()=>{t.iconsQueueFlag=!1;const{provider:s,prefix:o}=t,n=t.iconsToLoad;if(delete t.iconsToLoad,!n||!n.length)return;const l=t.loadIcon;if(t.loadIcons&&(n.length>1||!l)){ks(t.loadIcons(n,o,s),T=>{Qr(t,n,T)});return}if(l){n.forEach(T=>{ks(l(T,o,s),R=>{Qr(t,[T],R?{prefix:o,icons:{[T]:R}}:null)})});return}const{valid:c,invalid:b}=$o(n);if(b.length&&Qr(t,b,null),!c.length)return;const S=o.match(qs)?Vn(s):null;if(!S){Qr(t,c,null);return}S.prepare(s,o,c).forEach(T=>{Co(s,T,R=>{Qr(t,T.icons,R)})})}))}const Eo=(t,r)=>{const s=wo(ko(t,!0,Us()));if(!s.pending.length){let b=!0;return r&&setTimeout(()=>{b&&r(s.loaded,s.missing,s.pending,ws)}),()=>{b=!1}}const o=Object.create(null),n=[];let l,c;return s.pending.forEach(b=>{const{provider:S,prefix:T}=b;if(T===c&&S===l)return;l=S,c=T,n.push(Ar(S,T));const R=o[S]||(o[S]=Object.create(null));R[T]||(R[T]=[])}),s.pending.forEach(b=>{const{provider:S,prefix:T,name:R}=b,P=Ar(S,T),A=P.pendingIcons||(P.pendingIcons=new Set);A.has(R)||(A.add(R),o[S][T].push(R))}),n.forEach(b=>{const S=o[b.provider][b.prefix];S.length&&Lo(b,S)}),r?_o(r,s,n):ws};function Ro(t,r){const s={...t};for(const o in r){const n=r[o],l=typeof n;o in Bs?(n===null||n&&(l==="string"||l==="number"))&&(s[o]=n):l===typeof s[o]&&(s[o]=o==="rotate"?n%4:n)}return s}const Ao=/[\s,]+/;function jo(t,r){r.split(Ao).forEach(s=>{switch(s.trim()){case"horizontal":t.hFlip=!0;break;case"vertical":t.vFlip=!0;break}})}function Oo(t,r=0){const s=t.replace(/^-?[0-9.]*/,"");function o(n){for(;n<0;)n+=4;return n%4}if(s===""){const n=parseInt(t);return isNaN(n)?0:o(n)}else if(s!==t){let n=0;switch(s){case"%":n=25;break;case"deg":n=90}if(n){let l=parseFloat(t.slice(0,t.length-s.length));return isNaN(l)?0:(l=l/n,l%1===0?o(l):0)}}return r}function No(t,r){let s=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const o in r)s+=" "+o+'="'+r[o]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+s+">"+t+"</svg>"}function Mo(t){return t.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/\s+/g," ")}function Do(t){return"data:image/svg+xml,"+Mo(t)}function Fo(t){return'url("'+Do(t)+'")'}const Ss={...Gs,inline:!1},qo={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","aria-hidden":!0,role:"img"},zo={display:"inline-block"},Hn={"background-color":"currentColor"},Ws={"background-color":"transparent"},Ts={image:"var(--svg)",repeat:"no-repeat",size:"100% 100%"},Is={"-webkit-mask":Hn,mask:Hn,background:Ws};for(const t in Is){const r=Is[t];for(const s in Ts)r[t+"-"+s]=Ts[s]}function Jo(t){return t+(t.match(/^[-0-9.]+$/)?"px":"")}function Vo(t,r){const s=Ro(Ss,r),o=r.mode||"svg",n=o==="svg"?{...qo}:{};t.body.indexOf("xlink:")===-1&&delete n["xmlns:xlink"];let l=typeof r.style=="string"?r.style:"";for(let C in r){const M=r[C];if(M!==void 0)switch(C){case"icon":case"style":case"onLoad":case"mode":case"ssr":break;case"inline":case"hFlip":case"vFlip":s[C]=M===!0||M==="true"||M===1;break;case"flip":typeof M=="string"&&jo(s,M);break;case"color":l=l+(l.length>0&&l.trim().slice(-1)!==";"?";":"")+"color: "+M+"; ";break;case"rotate":typeof M=="string"?s[C]=Oo(M):typeof M=="number"&&(s[C]=M);break;case"ariaHidden":case"aria-hidden":M!==!0&&M!=="true"&&delete n["aria-hidden"];break;default:if(C.slice(0,3)==="on:")break;Ss[C]===void 0&&(n[C]=M)}}const c=ao(t,s),b=c.attributes;if(s.inline&&(l="vertical-align: -0.125em; "+l),o==="svg")return Object.assign(n,b),l!==""&&(n.style=l),{svg:!0,attributes:n,body:lo(c.body)};const{body:S,width:T,height:R}=t,P=o==="mask"||(o==="bg"?!1:S.indexOf("currentColor")!==-1),A=No(S,{...b,width:T+"",height:R+""}),ne={"--svg":Fo(A)},q=C=>{const M=b[C];M&&(ne[C]=Jo(M))};q("width"),q("height"),Object.assign(ne,zo,P?Hn:Ws);let L="";for(const C in ne)L+=C+": "+ne[C]+";";return n.style=L+l,{svg:!1,attributes:n}}Us(!0);co("",xo);if(typeof document<"u"&&typeof window<"u"){const t=window;if(t.IconifyPreload!==void 0){const r=t.IconifyPreload,s="Invalid IconifyPreload syntax.";typeof r=="object"&&r!==null&&(r instanceof Array?r:[r]).forEach(o=>{try{(typeof o!="object"||o===null||o instanceof Array||typeof o.icons!="object"||typeof o.prefix!="string"||!Ya(o))&&console.error(s)}catch{console.error(s)}})}if(t.IconifyProviders!==void 0){const r=t.IconifyProviders;if(typeof r=="object"&&r!==null)for(let s in r){const o="IconifyProviders["+s+"] is invalid.";try{const n=r[s];if(typeof n!="object"||!n||n.resources===void 0)continue;uo(s,n)||console.error(o)}catch{console.error(o)}}}}function Ho(){try{return typeof window!="object"}catch{return!0}}function Uo(t,r,s,o){function n(){r.loading&&(r.loading.abort(),r.loading=null)}if(typeof t=="object"&&t!==null&&typeof t.body=="string")return r.name="",n(),{data:{...Cn,...t}};let l;if(typeof t!="string"||(l=In(t,!1,!0))===null)return n(),null;const c=Wa(l);if(!c)return!Ho()&&(!r.loading||r.loading.name!==t)&&(n(),r.name="",r.loading={name:t,abort:Eo([l],s)}),null;n(),r.name!==t&&(r.name=t,o&&!r.destroyed&&setTimeout(()=>{o(t)}));const b=["iconify"];return l.prefix!==""&&b.push("iconify--"+l.prefix),l.provider!==""&&b.push("iconify--"+l.provider),{data:c,classes:b}}function Bo(t,r){return t?Vo({...Cn,...t},r):null}var Go=new Set(["$$slots","$$events","$$legacy"]),Ko=Pa("<svg></svg>"),Qo=I("<span></span>");function Gt(t,r){Sn(r,!0);const s={name:"",loading:null,destroyed:!1},o=qa(r,Go);let n=$(0),l=w(()=>(e(n),Uo(r.icon,s,b,r.onload))),c=w(()=>{const P=e(l)?Bo(e(l).data,o):null;return P&&e(l).classes&&o.class===void 0&&(P.attributes.class=(typeof o.class=="string"?o.class+" ":"")+e(l).classes.join(" ")),P});function b(){La(n)}kn(()=>{s.destroyed=!0,s.loading&&(s.loading.abort(),s.loading=null)});var S=_n(),T=$e(S);{var R=P=>{var A=_n(),W=$e(A);{var ne=L=>{var C=Ko();fs(C,()=>({...e(c).attributes})),Fa(C,()=>e(c).body,!0),d(C),p(L,C)},q=L=>{var C=Qo();fs(C,()=>({...e(c).attributes})),p(L,C)};O(W,L=>{e(c).svg?L(ne):L(q,-1)})}p(P,A)};O(T,P=>{e(c)&&P(R)})}p(t,S),Tn()}var Wo=I('<div class="w-full"></div>');function Cs(t,r){Sn(r,!0);let s=$(null),o=null,n=[],l=null,c=!1,b,S=er(r,"language",3,"plaintext"),T=er(r,"height",3,120),R=er(r,"readOnly",3,!1),P=[],A=$(!1);function W(q){e(A)||q.stopPropagation()}$a(async()=>{var H,de;if(!b)return;b.addEventListener("wheel",W,{capture:!0,passive:!0}),Ja();const q=await gs(()=>import("../chunks/DLQqXQ6R.js").then(E=>E.e),__vite__mapDeps([0,1,2]),import.meta.url);if(c)return;l=q,Va(q);const L=S()==="json"?"json":S()==="markdown"?"markdown":"plaintext";i(s,q.editor.create(b,{value:r.value??"",language:L,theme:"bosun-dark",lineNumbers:"off",fontSize:14,fontFamily:'ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',automaticLayout:!0,minimap:{enabled:!1},wordBasedSuggestions:"off",wordWrap:"bounded",wordWrapColumn:75,wrappingStrategy:"advanced",scrollbar:{vertical:"hidden",horizontal:"hidden"},overviewRulerLanes:0,renderLineHighlight:"none",folding:!1,renderWhitespace:"none",padding:{top:4,bottom:4},readOnly:R(),domReadOnly:R(),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);const C=e(s);if(!C)return;o=C.getModel(),n.push(C.onDidFocusEditorText(()=>{i(A,!0)})),n.push(C.onDidChangeModelContent(()=>{var E;try{const X=C.getValue();if(X===r.value)return;(E=r.onChange)==null||E.call(r,X)}catch(X){console.error("MiniEditor change error",X)}})),n.push(C.onDidBlurEditorText(()=>{var E;i(A,!1);try{(E=r.onBlur)==null||E.call(r,C.getValue())}catch{}}));const M=(H=C.onDidFocusEditorWidget)==null?void 0:H.call(C,()=>{i(A,!0)});M&&n.push(M);const B=(de=C.onDidBlurEditorWidget)==null?void 0:de.call(C,()=>{var E;i(A,!1);try{(E=r.onBlur)==null||E.call(r,C.getValue())}catch{}});B&&n.push(B)}),kn(()=>{c=!0;try{b.removeEventListener("wheel",W,{capture:!0})}catch{}for(const L of n)try{L.dispose()}catch{}n=[];const q=o;o=null;try{if(e(s)){try{e(s).setModel(null)}catch{}e(s).dispose()}}finally{i(s,null)}try{q==null||q.dispose()}catch{}l=null}),Rr(()=>{if(!e(s))return;const q=S()==="json"?"json":S()==="markdown"?"markdown":"plaintext",L=e(s).getModel();if(!L||L.getLanguageId()===q)return;let C=!1;return(l?Promise.resolve(l):gs(()=>import("../chunks/DLQqXQ6R.js").then(B=>B.e),__vite__mapDeps([0,1,2]),import.meta.url)).then(B=>{if(!C)try{B.editor.setModelLanguage(L,q)}catch{}}),()=>{C=!0}}),Rr(()=>{e(s)&&r.value!==e(s).getValue()&&e(s).setValue(r.value??"")}),Rr(()=>{var q;(q=e(s))==null||q.updateOptions({readOnly:R(),domReadOnly:R()})}),Rr(()=>{const q=r.highlights;if(!e(s)||!o||!l)return;const L=l,C=o.getLineCount(),M=[];for(const B of q??[]){const H=Math.max(1,Math.min(C,Number(B.startLine)||1)),de=Math.max(H,Math.min(C,Number(B.endLine)||H)),E=o.getLineMaxColumn(de);if(M.push({range:new L.Range(H,1,de,E),options:{inlineClassName:B.className}}),B.className==="test-expected-output")for(let X=H;X<=de;X++){const Ve=o.getLineContent(X),xe=/<\/?[A-Za-z][^>]*?>/g;let me;for(;me=xe.exec(Ve);){const ut=(me.index??0)+1,_t=Math.min(o.getLineMaxColumn(X),ut+String(me[0]??"").length);_t<=ut||M.push({range:new L.Range(X,ut,X,_t),options:{inlineClassName:"test-expected-output-tag"}})}}}P=e(s).deltaDecorations(P,M)});var ne=Wo();za(ne,q=>b=q,()=>b),V(()=>qn(ne,`height:${T()}px`)),p(t,ne),Tn()}var Xo=I('<button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-rc-gray-400">Fix</button>'),Yo=I('<button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-rc-gray-400">Analyze</button>'),Zo=I('<div><div class="mb-1 text-xs text-rc-gray-300"> </div> <div class="whitespace-pre-wrap break-words text-rc-gray-100"> </div></div>'),ei=I('<div class="flex flex-col gap-3"></div>'),Ps=I('<div class="p-2 text-rc-gray-300">Loading…</div>'),$s=I('<div class="p-2 text-red-400"> </div>'),ti=I('<div class="flex h-full flex-col gap-2"><div class="grid grid-cols-2 gap-2"><div class="flex items-center justify-start"><!></div> <div class="flex items-center justify-end"><!></div></div> <!></div>'),ri=I('<div class="h-[55vh]"><!></div>'),ni=I("<!> <!> <!>",1),si=I('<!> <div class="mt-2 h-[55vh]"><!></div>',1),ai=I('<div class="mt-1 flex flex-wrap items-center gap-x-2 gap-y-1"><!> <button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-rc-gray-400"> </button> <!> <button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none">See variants</button> <button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none">Prompt</button> <button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none">Conversation</button> <button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none">Context</button> <button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none">Debug</button></div> <!> <!> <!>',1);function Ls(t,r){Sn(r,!0);let s=er(r,"actionsDisabled",3,!1),o=er(r,"actionsInert",3,!1),n=er(r,"addTestDisabled",3,!1),l=er(r,"showAnalyze",3,!0),c=er(r,"analyzeDisabled",3,!1),b=er(r,"fixDisabled",3,!1),S=$(!1),T=$(!1),R=$(!1),P=$("errors"),A=$("prompt"),W=$(null),ne=$(null),q=$(null),L=$(null),C=$(null),M=$(null),B=$(null),H=$(Lt({prompt:!1,conversation:!1,context:!1,errors:!1,traces:!1,logs:!1})),de=$(Lt({prompt:null,conversation:null,context:null,errors:null,traces:null,logs:null})),E=0,X=$(null),Ve=null,xe=$("idle"),me=null;function ut(k){try{return{raw:k,formatted:JSON.stringify(JSON.parse(k),null,2)}}catch{return{raw:k,formatted:k}}}async function _t(k){const se=await De.tests.resultEntry.query({agent:k.agent,region:r.region,variant:r.variant,testId:k.id,resultKey:k.key,timestamp:k.timestamp,index:k.run});return ut(se)}function Nt(k){return k==="prompt"?e(ne)!==null&&e(W)!==null:k==="conversation"?e(q)!==null:k==="context"?e(L)!==null:k==="errors"?e(C)!==null:k==="traces"?e(M)!==null:e(B)!==null}async function Fe(k){if(Nt(k)||e(H)[k])return;const se=E;i(H,{...e(H),[k]:!0},!0),i(de,{...e(de),[k]:null},!0);try{if(k==="prompt"){const[Te,K]=await Promise.all([_t(r.links.renderedPrompt),_t(r.links.receivedPrompt)]);if(se!==E)return;i(W,Te,!0),i(ne,K,!0)}else{const Te=k==="conversation"?r.links.conversation:k==="context"?r.links.context:k==="errors"?r.links.errors:k==="traces"?r.links.traces:r.links.logs,K=await _t(Te);if(se!==E)return;k==="conversation"?i(q,K,!0):k==="context"?i(L,K,!0):k==="errors"?i(C,K,!0):k==="traces"?i(M,K,!0):i(B,K,!0)}}catch(Te){if(se!==E)return;console.error(Te),i(de,{...e(de),[k]:"Failed to load content"},!0)}finally{se===E&&i(H,{...e(H),[k]:!1},!0)}}function Kt(){i(W,null),i(ne,null),i(q,null),i(L,null),i(C,null),i(M,null),i(B,null),i(H,{prompt:!1,conversation:!1,context:!1,errors:!1,traces:!1,logs:!1},!0),i(de,{prompt:null,conversation:null,context:null,errors:null,traces:null,logs:null},!0)}function tr(){E+=1,i(P,"errors"),Kt(),i(S,!0),Fe("errors")}function Mt(k){E+=1,i(A,k,!0),Kt(),i(T,!0),Fe(k)}function wt(k){return k==="prompt"?"Prompt":k==="conversation"?"Conversation":"Context"}function ur(k){i(P,k,!0),Fe(k)}async function rr(){if(e(xe)!=="adding"){i(xe,"adding");try{await r.onAddTest(),i(xe,"added")}catch(k){console.error("Failed to add test",k),i(xe,"failed")}me&&clearTimeout(me),me=window.setTimeout(()=>{i(xe,"idle"),me=null},2500)}}async function tt(k){if(!(!e(ne)||!e(W)))try{const se=k==="raw"?e(ne).raw:e(W).raw;await navigator.clipboard.writeText(se),i(X,k,!0),Ve&&clearTimeout(Ve),Ve=window.setTimeout(()=>{i(X,null),Ve=null},2e3)}catch(se){console.error("Failed to copy prompt",se)}}kn(()=>{E+=1,Ve&&clearTimeout(Ve),me&&clearTimeout(me)});var Zr=ai(),jr=$e(Zr),en=v(jr);{var Or=k=>{var se=Xo();V(()=>{se.inert=o(),se.disabled=s()||b()}),Oe("click",se,function(...Te){var K;(K=r.onFix)==null||K.apply(this,Te)}),p(k,se)};O(en,k=>{r.onFix&&k(Or)})}var Et=g(en,2),tn=v(Et,!0);d(Et);var nr=g(Et,2);{var rn=k=>{var se=Yo();V(()=>se.disabled=c()),Oe("click",se,function(...Te){var K;(K=r.onAnalyze)==null||K.apply(this,Te)}),p(k,se)};O(nr,k=>{l()&&k(rn)})}var Nr=g(nr,2),Mr=g(Nr,2),ie=g(Mr,2),dr=g(ie,2),He=g(dr,2);d(jr);var nn=g(jr,2);{var Pn=k=>{{const se=K=>{var qe=ei();cr(qe,21,()=>r.variants,Qe=>Qe.index,(Qe,rt,Sr,Tr)=>{var kt=Zo(),fe=v(kt),G=v(fe);d(fe);var be=g(fe,2),Y=v(be,!0);d(be),d(kt),V(()=>{Ae(kt,1,`rounded-lg border p-3 ${e(rt).index===r.runIndex?"border-rc-green-450":"border-rc-gray-650"} ${e(rt).success?"bg-rc-green-700/80":"bg-rc-gray-900/60"}`),F(G,`Run ${e(rt).index??""}${e(rt).index===r.runIndex?" • selected":""}`),F(Y,e(rt).text||e(rt).errors||"—")}),p(Qe,kt)}),d(qe),p(K,qe)};let Te=w(()=>`Variants — ${r.scenario||"Test"}`);Wr(k,{get title(){return e(Te)},class:"!w-[80vw] !max-w-4xl",get open(){return e(R)},set open(K){i(R,K,!0)},children:se,$$slots:{default:!0}})}};O(nn,k=>{e(R)&&k(Pn)})}var Dr=g(nn,2);{var ge=k=>{{const se=K=>{var qe=ri(),Qe=v(qe);{var rt=G=>{var be=Ps();p(G,be)},Sr=G=>{var be=$s(),Y=v(be,!0);d(be),V(()=>F(Y,e(de)[e(A)])),p(G,be)},Tr=G=>{var be=ti(),Y=v(be),ye=v(Y),Ne=v(ye);{let nt=w(()=>!e(ne).raw.trim());ct(Ne,{variant:"secondary",size:"small",get disabled(){return e(nt)},onclick:()=>tt("raw"),children:(Qt,vt)=>{je();var ar=Xe();V(()=>F(ar,e(X)==="raw"?"Copied raw prompt":"Copy raw prompt")),p(Qt,ar)},$$slots:{default:!0}})}d(ye);var St=g(ye,2),dt=v(St);{let nt=w(()=>!e(W).raw.trim());ct(dt,{variant:"secondary",size:"small",get disabled(){return e(nt)},onclick:()=>tt("rendered"),children:(Qt,vt)=>{je();var ar=Xe();V(()=>F(ar,e(X)==="rendered"?"Copied rendered prompt":"Copy rendered prompt")),p(Qt,ar)},$$slots:{default:!0}})}d(St),d(Y);var ft=g(Y,2);Ra(ft,{get original(){return e(ne).formatted},get modified(){return e(W).formatted},language:"markdown",class:"min-h-0 flex-1"}),d(be),p(G,be)},kt=G=>{{let be=w(()=>e(q).formatted||"—");Gr(G,{get value(){return e(be)},language:"text",class:"h-full"})}},fe=G=>{{let be=w(()=>e(L).formatted||"—");Gr(G,{get value(){return e(be)},language:"json",class:"h-full"})}};O(Qe,G=>{e(H)[e(A)]?G(rt):e(de)[e(A)]?G(Sr,1):e(A)==="prompt"&&e(ne)&&e(W)?G(Tr,2):e(A)==="conversation"&&e(q)?G(kt,3):e(A)==="context"&&e(L)&&G(fe,4)})}d(qe),p(K,qe)};let Te=w(()=>`${wt(e(A))} — ${r.scenario||"Test"} (run ${r.runIndex})`);Wr(k,{get title(){return e(Te)},class:"!w-[85vw] !max-w-5xl",get open(){return e(T)},set open(K){i(T,K,!0)},children:se,$$slots:{default:!0}})}};O(Dr,k=>{e(T)&&k(ge)})}var sr=g(Dr,2);{var fr=k=>{{const se=K=>{var qe=si(),Qe=$e(qe);Fs(Qe,{get value(){return e(P)},ariaLabel:"Test run debug tabs",onChange:({value:Y})=>ur(Y),children:(Y,ye)=>{var Ne=ni(),St=$e(Ne);Xr(St,{value:"errors",class:"px-3",children:(nt,Qt)=>{je();var vt=Xe("Errors");p(nt,vt)},$$slots:{default:!0}});var dt=g(St,2);Xr(dt,{value:"traces",class:"px-3",children:(nt,Qt)=>{je();var vt=Xe("Traces");p(nt,vt)},$$slots:{default:!0}});var ft=g(dt,2);Xr(ft,{value:"logs",class:"px-3",children:(nt,Qt)=>{je();var vt=Xe("Logs");p(nt,vt)},$$slots:{default:!0}}),p(Y,Ne)},$$slots:{default:!0}});var rt=g(Qe,2),Sr=v(rt);{var Tr=Y=>{var ye=Ps();p(Y,ye)},kt=Y=>{var ye=$s(),Ne=v(ye,!0);d(ye),V(()=>F(Ne,e(de)[e(P)])),p(Y,ye)},fe=Y=>{{let ye=w(()=>e(C).formatted||"—");Gr(Y,{get value(){return e(ye)},language:"text",class:"h-full"})}},G=Y=>{{let ye=w(()=>e(M).formatted||"—");Gr(Y,{get value(){return e(ye)},language:"json",class:"h-full"})}},be=Y=>{{let ye=w(()=>e(B).formatted||"—");Gr(Y,{get value(){return e(ye)},language:"text",class:"h-full"})}};O(Sr,Y=>{e(H)[e(P)]?Y(Tr):e(de)[e(P)]?Y(kt,1):e(P)==="errors"&&e(C)?Y(fe,2):e(P)==="traces"&&e(M)?Y(G,3):e(P)==="logs"&&e(B)&&Y(be,4)})}d(rt),p(K,qe)};let Te=w(()=>`Debug — ${r.scenario||"Test"} (run ${r.runIndex})`);Wr(k,{get title(){return e(Te)},class:"!w-[85vw] !max-w-5xl",get open(){return e(S)},set open(K){i(S,K,!0)},children:se,$$slots:{default:!0}})}};O(sr,k=>{e(S)&&k(fr)})}V(()=>{Et.inert=o(),Et.disabled=s()||n()||e(xe)==="adding",F(tn,e(xe)==="adding"?"Adding…":e(xe)==="added"?"Added":e(xe)==="failed"?"Failed":"Add test")}),Oe("click",Et,rr),Oe("click",Nr,()=>i(R,!0)),Oe("click",Mr,()=>Mt("prompt")),Oe("click",ie,()=>Mt("conversation")),Oe("click",dr,()=>Mt("context")),Oe("click",He,tr),p(t,Zr),Tn()}Ds(["click"]);function oi(t,r){return[t.trim()==="LLM"?"":t.trim(),r.trim()].filter(Boolean).join(" ")}function ii(t){const r=oi(t.assertionLabel,t.assertionValue);return`You will be given the context, the conversation and the desired output and assertion about it. Change the prompt minimally so this will work. Try to provide as general solution as possible.
|
|
3
|
+
|
|
4
|
+
Context:
|
|
5
|
+
${t.context.trim()}
|
|
6
|
+
|
|
7
|
+
Conversation:
|
|
8
|
+
${t.conversation.trim()}
|
|
9
|
+
|
|
10
|
+
Desired outcome:
|
|
11
|
+
${t.expectedOutput.trim()}
|
|
12
|
+
|
|
13
|
+
Assertion about outcome:
|
|
14
|
+
${r}
|
|
15
|
+
|
|
16
|
+
Current incorrect outcome:
|
|
17
|
+
${t.currentIncorrectOutcome.trim()}`}function li(t){const r=t<0?-1:1,s=Math.abs(t),o=.254829592,n=-.284496736,l=1.421413741,c=-1.453152027,b=1.061405429,T=1/(1+.3275911*s),R=1-((((b*T+c)*T+l)*T+n)*T+o)*T*Math.exp(-s*s);return r*R}function ci(t){return .5*(1+li(t/Math.SQRT2))}function Xs(t,r,s,o){if(!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(s)||!Number.isFinite(o)||r<=0||o<=0)return null;const n=t/r,l=s/o,c=(t+s)/(r+o),b=Math.sqrt(c*(1-c)*(1/r+1/o));if(!Number.isFinite(b)||b<=0)return null;const S=(l-n)/b,T=2*(1-ci(Math.abs(S)));return Math.max(0,Math.min(1,T))}function Ys(t){return t==="higher"?"significantly better":"significantly worse"}function hn(t,r){if(!t||t.isOld)return null;const s=t.total_runs;if(s<=0)return null;const o=t.previous,n=o&&o.total_runs>0?o.success_count/o.total_runs:null,l=t.successes/s,c=n===null||l>=n?"higher":"lower",b=(()=>{if(s<5||!o||o.total_runs<=0)return!1;const W=Xs(o.success_count,o.total_runs,t.successes,s);return W!==null&&W<.05})(),S=n===1&&l<1,T=n!==null&&n<1&&l===1,R=b?Ys(c):S?"Not 100% anymore":T?"100% now":void 0,P=Number.isFinite(r)&&r>0&&s<r;if(!P&&!R)return null;const A=P?Math.round(l*r):void 0;return{showExpected:P,expectedSuccesses:A,expectedRuns:r,significant:b,direction:c,comparisonLabel:R}}var ui=I('<link rel="preload" href="/ui/arrow_tests.svg" as="image"/>'),Es=I('<div class="p-2 text-gray-300">Loading…</div>'),Rs=I('<div class="p-2 text-rc-red-600"> </div>'),di=I('<div class="p-2 text-gray-400">No previous runs</div>'),fi=I('<div class="border-rc-red-700 rounded border bg-rc-gray-900 px-3 py-2 text-sm text-rc-red-600"> </div>'),vi=I('<button type="button"><div class="flex items-baseline justify-between gap-2"><span class="font-semibold text-rc-gray-100"> </span> <span class="text-sm text-rc-gray-400"> </span></div> <div class="mt-1 text-sm text-rc-gray-400"> </div> <div class="mt-2 flex items-center justify-between gap-2 text-sm"><span> </span> <span class="text-rc-gray-300"> </span></div></button>'),pi=I('<div class="flex flex-col gap-2"><!> <!></div>'),As=I('<div class="p-3 text-gray-400">—</div>'),xn=I('<span class="ml-2 text-rc-gray-400"> </span>'),gi=I("<span> </span> <!>",1),js=I('<span class="text-rc-gray-500">—</span>'),Os=I('<div class="mt-1 px-1 text-sm font-semibold text-rc-gray-300"><!></div>'),mi=I('<div class="flex items-center gap-2"><input class="rc-input w-44 svelte-rdft55" type="text" readonly=""/> <input class="rc-input min-w-0 flex-1 svelte-rdft55" type="text" placeholder="Assertion value" readonly=""/></div>'),Ns=I('<div class="flex flex-col gap-2"><div> </div> <div><div class="flex items-center gap-0"><!> <span> </span></div> <!></div></div>'),hi=I('<div class="flex flex-wrap items-center gap-3"><div class="text-lg font-extrabold"><span> </span> <!></div></div> <div class="mt-3 flex flex-col gap-4"></div>',1),xi=I('<div class="flex flex-col gap-2 p-2"><input class="card-input-subtle pointer-events-none svelte-rdft55" type="text" placeholder="Author" readonly=""/> <!> <div class="flex flex-wrap items-center gap-3"><!> <!></div> <!></div> <div class="rounded-b border-t border-rc-gray-700 bg-rc-gray-980 p-2"><!></div>',1),bi=I('<div class="border-b border-rc-gray-700 p-2"><div class="grid grid-cols-[2.25rem,1fr] gap-2"><div class="flex flex-col items-center gap-1 pt-1"><!></div> <div class="min-w-0"><div><div><div class="grid grid-cols-[1fr,2.25rem] items-center gap-2"><input class="card-input-title pointer-events-none svelte-rdft55" type="text" placeholder="Scenario" readonly=""/> <button class="icon-btn justify-self-end text-gray-300 hover:text-gray-100 svelte-rdft55"><!></button></div> <!></div> <!></div></div></div></div>'),Ms=I('<div class="flex flex-col space-y-5"></div>'),yi=I('<div class="flex flex-col gap-3"><div class="flex flex-wrap items-center justify-between gap-3 border-b border-rc-gray-700 pb-3"><div class="flex flex-wrap items-center gap-3"><div class="flex items-center gap-2"><label class="text-rc-gray-300">Repeats</label> <!></div> <div class="flex items-center gap-2"><label class="text-rc-gray-300">Concurrency</label> <!></div> <span class="text-rc-gray-400"> </span></div></div> <div class="grid grid-cols-[2.25rem,1fr] items-center gap-2 border-b border-rc-gray-700 p-2"><div></div> <div class="flex flex-wrap items-center gap-x-4 gap-y-1 text-left text-rc-gray-300"><span> </span> <span> </span></div></div> <!></div>'),_i=I('<div class="grid min-h-[68vh] grid-cols-[18rem,minmax(0,1fr)] gap-4"><aside class="rc-scroll min-h-0 overflow-auto border-r border-rc-gray-700 pr-3"><!></aside> <section class="rc-scroll min-h-0 overflow-auto"><!></section></div>'),wi=I('<pre class="whitespace-pre-wrap font-mono text-gray-200"> </pre>'),ki=I(`<p class="mt-2 text-red-200">Bosun found an old JSON/JSONL test suite. This version only supports one YAML
|
|
18
|
+
file per test and will not read, modify, or replace the legacy files.</p> <a target="_blank" rel="noreferrer" class="mt-4 inline-flex rounded bg-red-200 px-3 py-2 font-semibold text-red-950 hover:bg-red-100">Open migration guide</a>`,1),Si=I('<p class="mt-2 break-words text-red-200"> </p> <!>',1),Ti=I('<div class="flex h-full items-start justify-center overflow-auto p-8"><div role="alert" class="w-full max-w-2xl rounded border border-red-500 bg-red-950/30 p-5 text-red-100"><h2 class="text-xl font-semibold"> </h2> <!></div></div>'),Ii=I("<li> </li>"),Ci=I('<div class="mx-2 mt-2 rounded border border-red-500 bg-red-950/30 px-3 py-2 text-sm text-red-200"><div class="font-semibold">Orphaned tests</div> <ul class="mt-1 list-disc pl-5"></ul></div>'),Pi=I('<div class="mr-3 flex items-center gap-3"><span class="animate-pulse rounded bg-rc-green-200 px-3 py-1 text-white"> </span> <!></div>'),$i=I("<!> New test",1),Li=I('<div class="pointer-events-none absolute -left-28 top-full mt-4 inline-flex -translate-x-1/2 flex-col items-center"><div class="relative w-50vw max-w-2xl"><img src="/ui/arrow_tests.svg" alt="Arrow" class="block h-auto w-full object-contain"/> <span class="absolute inset-0 mt-48 flex items-center justify-center text-center text-4xl font-extrabold text-rc-gray-200">No tests yet.<br/>Add the first one</span></div></div>'),Ei=I("<!> History",1),Ri=I("<!> Collapse all",1),Ai=I("<div></div>"),ji=I('<button aria-label="Pin/unpin all" title="Pin/unpin all"><!></button>'),Fn=I('<span><!><span class="ml-1"> </span></span>'),Oi=I('<div class="translate-y-[5px]"><!></div>'),Ni=I('<button><!></button> <button title="Duplicate" class="icon-btn text-gray-300 hover:text-gray-100 disabled:cursor-not-allowed disabled:opacity-50 svelte-rdft55"><!></button> <button title="Delete" class="icon-btn text-gray-300 hover:text-gray-100 disabled:cursor-not-allowed disabled:opacity-50 svelte-rdft55"><!></button>',1),Mi=I("<span> </span> <!> <!>",1),Di=I('<div class="rounded bg-rc-gray-930 px-2 py-2 text-sm text-rc-red-600"> </div>'),Fi=I("<option> </option>"),qi=I('<div class="flex items-center gap-2"><select class="rc-scroll rc-input w-36 svelte-rdft55" aria-label="Assertion Type"></select> <input class="rc-input min-w-0 flex-1 svelte-rdft55" type="text" placeholder="Assertion value"/></div>'),zi=I('<label class="inline-flex items-center gap-2 text-sm text-rc-gray-200"><input type="checkbox" class="checkbox"/> <span>Case-sensitive</span></label>'),Ji=I('<div class="text-lg font-extrabold"><span> </span> <!> <!></div>'),Vi=I('<div class="mt-3 flex flex-col gap-4"></div>'),Hi=I('<div class="flex flex-col gap-2 p-2"><!> <input class="card-input-subtle svelte-rdft55" type="text" placeholder="Author"/> <!> <div class="flex flex-wrap items-center gap-3"><!> <!></div> <!></div> <div class="rounded-b border-t border-rc-gray-700 bg-rc-gray-980 p-2"><div class="flex flex-wrap items-center gap-3"><!> <!></div> <!></div>',1),Ui=I('<div class="border-b border-rc-gray-700 p-2"><div class="grid grid-cols-[2.25rem,1fr] gap-2"><div class="flex flex-col items-center gap-1"><!></div> <div class="min-w-0"><div><div><div class="grid grid-cols-[1fr,2.25rem] items-center gap-2"><input class="card-input-title svelte-rdft55" type="text" placeholder="Scenario"/> <button class="icon-btn justify-self-end text-gray-300 hover:text-gray-100 disabled:cursor-not-allowed disabled:opacity-50 svelte-rdft55"><!></button></div> <!></div> <!></div></div></div></div>'),Bi=I("<!> <!>",1),Gi=I('<div class="flex min-h-0 flex-1 flex-col overflow-hidden p-3"><!> <div class="mt-3 min-h-0 flex-1 overflow-hidden"><!></div></div>'),Ki=I('<div class="rc-scroll min-h-0 flex-1 overflow-auto"><div class="grid grid-cols-[2.25rem,1fr] items-center gap-2 border-b border-rc-gray-700 p-2"><!> <div class="flex flex-wrap items-center gap-x-4 gap-y-1 text-left text-rc-gray-300"><span> </span> <span> </span> <span> </span> <!></div></div> <!></div> <!>',1),Qi=I('<div class="flex h-full min-h-0 flex-col"><!> <div class="flex flex-none items-center justify-between gap-3 p-2"><div class="flex flex-wrap items-center gap-3 pl-11"><div class="flex items-center gap-2"><label class="text-rc-gray-300">Repeats</label> <!></div> <div class="flex items-center gap-2"><label class="text-rc-gray-300">Concurrency</label> <!></div></div> <div class="flex flex-wrap items-center gap-3"><!> <div class="relative inline-flex items-center"><!> <!></div> <!></div></div> <div class="flex flex-none items-center justify-between gap-3 px-2 pb-2"><!> <!></div> <div class="min-h-0 flex-1 overflow-hidden"><!></div></div>'),Wi=I("<!> <!> <!>",1);function wl(t,r){Sn(r,!0);const{state:s,actions:o}=Na(),n=w(()=>s.agentId),l=w(()=>s.region),c=w(()=>s.variant),b="BOSUN_LEGACY_TEST_SUITE:",S="https://github.com/recombine-ai/bosun/blob/main/TESTS_MIGRATION.md";function T(a){try{return structuredClone(a)}catch{try{return JSON.parse(JSON.stringify(a))}catch{return a}}}function R(a,u,f){return Math.max(u,Math.min(f,a))}let P=$(1),A=$(75),W=$(null);function ne(a){if(typeof localStorage>"u")return{repeats:1,concurrency:75,expandedTestIds:[]};try{const u=JSON.parse(localStorage.getItem(a)||"{}");return{repeats:R(Number(u.repeats)||1,1,500),concurrency:R(Number(u.concurrency)||75,1,75),expandedTestIds:Array.isArray(u.expandedTestIds)?u.expandedTestIds.filter(f=>typeof f=="string"):[]}}catch{return{repeats:1,concurrency:75,expandedTestIds:[]}}}function q(){!e(W)||typeof localStorage>"u"||localStorage.setItem(e(W),JSON.stringify({repeats:e(P),concurrency:e(A),expandedTestIds:e(ft)}))}let L=$(null),C=$("context"),M=$(Lt({})),B=$(Lt({})),H=$(!1),de=$(!1),E=$(!1),X=$(""),Ve=$(null),xe=$(!1),me=$(null),ut=$(Lt([])),_t=$(!1),Nt=$(null),Fe=$(null),Kt=$(Lt({})),tr=$(!1),Mt=$(null),wt=$(Lt([])),ur=0,rr=0;const tt=w(()=>e(Fe)?e(Kt)[e(Fe)]??null:null),Zr=w(()=>e(_t)&&e(ut).length===0&&!e(Nt)),jr=w(()=>e(tr)&&!e(tt)),en=w(()=>new Set(e(wt))),Or=w(()=>e(tt)?e(tt).rows.map(a=>aa(e(tt).timestamp,a)):[]),Et=w(()=>oa(e(Or)));function tn(a,u){i(X,a,!0),i(Ve,JSON.stringify(u??{},null,2),!0),i(E,!0)}let nr=$(!1);async function rn(a,u,f){var y;if(e(nr))return;i(nr,!0);const m=o.openPopover("analyze"),h=`Analysis — ${a} (run ${u})`;try{const _=await De.tests.analyzeRun.mutate({agent:f.agent,region:e(l),variant:e(c),testId:f.id,index:f.run,timestamp:f.timestamp});if(((y=s.edit.popover)==null?void 0:y.requestId)!==m)return;o.setHighlightQuotes(_.quotes);let j=null;try{j=JSON.stringify(_.raw,null,2)}catch{j=null}o.setPopoverReady(m,{title:h,quotes:_.quotes,rationales:_.rationales,parallelCalls:_.parallelCalls,raw:j})}catch(_){console.error(_);const j=typeof(_==null?void 0:_.message)=="string"?_.message:(()=>{try{return JSON.stringify(_)}catch{return String(_)}})();o.setPopoverError(m,j||"Failed to analyze this response",{raw:j})}finally{i(nr,!1)}}const Nr=[{value:"llm-rubric",label:"LLM"},{value:"answer-relevance",label:"Answer Relevance (LLM)"},{value:"context-faithfulness",label:"Context Faithfulness (LLM)"},{value:"context-recall",label:"Context Recall (LLM)"},{value:"context-relevance",label:"Context Relevance (LLM)"},{value:"model-graded-closedqa",label:"Model-Graded Closed QA"},{value:"model-graded-factuality",label:"Model-Graded Factuality"},{value:"moderation",label:"Moderation"},{value:"classifier",label:"Classifier"},{value:"g-eval",label:"G-Eval"},{value:"factuality",label:"Factuality"},{value:"conversation-relevance",label:"Conversation Relevance"},{value:"equals",label:"Equals"},{value:"contains",label:"Contains"},{value:"icontains",label:"Contains (case-insensitive)"},{value:"contains-all",label:"Contains All"},{value:"contains-any",label:"Contains Any"},{value:"icontains-all",label:"Contains All (iCase)"},{value:"icontains-any",label:"Contains Any (iCase)"},{value:"starts-with",label:"Starts With"},{value:"regex",label:"Regex"},{value:"levenshtein",label:"Levenshtein Distance"},{value:"is-refusal",label:"Is Refusal"},{value:"is-html",label:"Is HTML"},{value:"contains-html",label:"Contains HTML"},{value:"is-json",label:"Is JSON"},{value:"contains-json",label:"Contains JSON"},{value:"is-xml",label:"Is XML"},{value:"contains-xml",label:"Contains XML"},{value:"is-sql",label:"Is SQL"},{value:"contains-sql",label:"Contains SQL"},{value:"similar",label:"Semantic Similarity"},{value:"rouge-n",label:"ROUGE-N"},{value:"bleu",label:"BLEU"},{value:"gleu",label:"GLEU"},{value:"meteor",label:"METEOR"},{value:"perplexity",label:"Perplexity"},{value:"perplexity-score",label:"Perplexity Score"},{value:"latency",label:"Latency"},{value:"cost",label:"Cost"},{value:"finish-reason",label:"Finish Reason"},{value:"trace-error-spans",label:"Trace Error Spans"},{value:"trace-span-count",label:"Trace Span Count"},{value:"trace-span-duration",label:"Trace Span Duration"},{value:"is-valid-function-call",label:"Is Valid Function Call"},{value:"is-valid-openai-function-call",label:"Is Valid OpenAI Function Call"},{value:"is-valid-openai-tools-call",label:"Is Valid OpenAI Tools Call"},{value:"guardrails",label:"Guardrails"},{value:"javascript",label:"JavaScript (custom)"},{value:"python",label:"Python (custom)"},{value:"webhook",label:"Webhook (custom)"},{value:"pi",label:"Pi Scorer"}],Mr=[...Nr,...Nr.map(a=>({value:`not-${a.value}`,label:`Not ${a.label}`}))];let ie=$(Lt([]));const dr=w(()=>{var a;return((a=s.currentStep)==null?void 0:a.name)||"main"}),He=w(()=>e(ie).filter(a=>a.step===e(dr)||kr(a.step)&&kr(e(dr)))),nn=w(()=>new Set(s.steps.map(a=>a.name))),Pn=w(()=>s.steps.some(a=>kr(a.name))),Dr=w(()=>{if(!s.steps.length)return[];const a=new Map;for(const u of e(ie))e(nn).has(u.step)||e(Pn)&&kr(u.step)||a.set(u.step,(a.get(u.step)??0)+1);return[...a.entries()].map(([u,f])=>({step:u,count:f})).sort((u,f)=>u.step.localeCompare(f.step))});let ge=$(!1),sr=$(null),fr=$(null),k=$(0),se=$(0),Te=$(1),K=$(Lt([])),qe=$(Lt([])),Qe=$(Lt([]));const rt=w(()=>new Set(e(K))),Sr=w(()=>new Set(e(qe))),Tr=w(()=>new Set(e(Qe)));let kt=!1,fe=null,G=0,be=Promise.resolve();const Y=new Set;let ye=$(0);const Ne=w(()=>e(ye)>0);let St=$(!1),dt=$(null),ft=$(Lt([]));const nt=w(()=>new Set(e(ft))),Qt=w(()=>e(He).some(a=>e(nt).has(a.id)));function vt(a){return Y.add(a),i(ye,e(ye)+1),a.finally(()=>{Y.delete(a),i(ye,e(ye)-1)}),a}function ar(a,u,f){const m=Array.isArray(f.results)?f.results:[],h=m.reduce((y,_)=>y+(_!=null&&_.success?1:0),0);return{success_rate:f.success_rate,successes:h,total_runs:m.length,isOld:!!f.is_old,previous:f.previous&&typeof f.previous=="object"?{success_count:Number(f.previous.success_count??0),total_runs:Number(f.previous.total_runs??0),report_timestamp:String(f.previous.report_timestamp??"")}:void 0,runs:m.map((y,_)=>{const j=f.report_timestamp,N={agent:a,id:u,timestamp:j,run:_};return{index:_+1,success:!!y.success,text:String(y.result||""),evaluation:String(y.evaluation||""),errors:String(y.errors||""),links:{renderedPrompt:{...N,key:"rendered_prompt"},receivedPrompt:{...N,key:"received_prompt"},conversation:{...N,key:"stringified_conversation"},context:{...N,key:"received_context"},logs:{...N,key:"logs"},errors:{...N,key:"errors"},traces:{...N,key:"traces"}}}}).reverse()}}async function vr(){const a=(e(n)??"").trim();if(a){i(dt,null);try{const[{rows:u,settingsKey:f},m]=await Promise.all([De.tests.list.query({agent:a,region:e(l),variant:e(c)}),De.tests.latestResult.query({agent:a,region:e(l),variant:e(c)})]);if((e(n)??"").trim()!==a)return;i(W,f,!0);const h=ne(f);i(P,h.repeats,!0),i(A,h.concurrency,!0),i(ft,h.expandedTestIds,!0),i(ie,u.map(y=>{const _=y.id,j=m[_];return{id:_,pinned:String(y.pinned).toUpperCase()==="TRUE",scenario:y.scenario||"",step:String(y.step||"main"),evaluation_mode:y.evaluation_mode==="json-deep-equal"?"json-deep-equal":"assertion",case_sensitive:y.case_sensitive===!0,context_mode:y.context_mode==="replace"?"replace":"merge",author:y.author||"",assertion_type:y.assertion_type||"llm-rubric",assertion_value:y.assertion_value||"",conversation:y.conversation||"",expected_output:y.expected_output||"",conversation_ui:ln(y.conversation||"",y.expected_output||"",String(y.step??"main"),y.evaluation_mode==="json-deep-equal"),timeout:Number(y.timeout??0),similarity_threshold:Number(y.similarity_threshold??50),context:JSON.stringify(y.context),mocks:JSON.stringify(y.mocks||{}),hasMocks:typeof y.mocks<"u",result:j?ar(a,_,j):void 0}}),!0)}catch(u){if(console.error(u),(e(n)??"").trim()!==a)return;const f=u instanceof Error?u.message:String(u);i(dt,{kind:f.includes(b)?"legacy":"other",message:f},!0),i(ie,[],!0),i(P,1),i(A,75),i(ft,[],!0)}finally{(e(n)??"").trim()===a&&i(St,!0)}}}async function sn(a){const u=(e(n)??"").trim();if(u&&!kt){kt=!0;try{const[f,m]=await Promise.all([De.tests.latestResult.query({agent:u,region:e(l),variant:e(c)}),De.tests.runProgress.query({agent:u,region:e(l),variant:e(c)})]);if(a!==G)return;m&&(i(K,m.plannedTestIds,!0),i(qe,m.runningTestIds,!0),i(Qe,m.completedTestIds,!0));const h=e(ie).map(N=>{const Q=f[N.id];return{...N,result:Q?ar(u,N.id,Q):void 0}});i(ie,h,!0);const y=e(sr),_=Math.max(1,Number(e(Te))||1),j=h.reduce((N,Q)=>e(rt).has(Q.id)&&Q.result&&!Q.result.isOld&&Q.result.total_runs>=_?N+1:N,0);i(k,j,!0)}catch(f){console.error(f)}finally{kt=!1}}}async function Zs(a){if(e(ge))return;i(ge,!0),i(sr,a,!0),i(fr,null),i(se,a==="all"?e(He).length:e(He).filter(f=>f.pinned).length,!0),i(k,0),i(Te,Math.max(1,Number(e(P))||1),!0),i(K,e(He).filter(f=>a==="all"||f.pinned).map(f=>f.id),!0),i(qe,[],!0),i(Qe,[],!0),G+=1;const u=G;if(await Promise.all([be,...Y]),u===G){fe&&clearInterval(fe),fe=setInterval(()=>sn(u),250),sn(u);try{await De.tests.runTests.mutate({agent:e(n),region:e(l),variant:e(c),step:e(dr),scope:a,promptOverrides:o.getPromptOverrides(),repeats:e(P),concurrency:e(A)})}catch(f){u===G&&console.error(f)}finally{if(u!==G)return;fe&&clearInterval(fe),fe=null;try{await vr()}finally{if(u!==G)return;i(ge,!1),i(sr,null),i(fr,null),i(K,[],!0),i(qe,[],!0),i(Qe,[],!0)}}}}async function ea(a){if(!e(n)||e(ge))return;i(ge,!0),i(sr,"single"),i(fr,a,!0),i(se,1),i(k,0),i(Te,Math.max(1,Number(e(P))||1),!0),i(K,[a],!0),i(qe,[],!0),i(Qe,[],!0),G+=1;const u=G;if(await Promise.all([be,...Y]),u===G){fe&&clearInterval(fe),fe=setInterval(()=>sn(u),250),sn(u);try{await De.tests.runTests.mutate({agent:e(n),region:e(l),variant:e(c),testId:a,promptOverrides:o.getPromptOverrides(),repeats:e(P),concurrency:e(A)})}catch(f){u===G&&console.error(f)}finally{if(u!==G)return;fe&&clearInterval(fe),fe=null;try{await vr()}finally{if(u!==G)return;i(ge,!1),i(sr,null),i(fr,null),i(K,[],!0),i(qe,[],!0),i(Qe,[],!0)}}}}function ta(){e(ge)&&(G+=1,fe&&clearInterval(fe),fe=null,i(ge,!1),i(sr,null),i(fr,null),i(K,[],!0),i(qe,[],!0),i(Qe,[],!0),be=De.tests.cancelRun.mutate({agent:e(n),region:e(l),variant:e(c)}).then(()=>{},()=>{}))}async function ra(a){const u=a?"TRUE":"FALSE",f=e(He).filter(h=>h.pinned!==a).map(h=>h.id);if(f.length===0)return;const m=new Set(f);i(ie,e(ie).map(h=>m.has(h.id)?{...h,pinned:a}:h),!0);try{await vt(De.tests.patchTestsBatch.mutate({agent:e(n),region:e(l),variant:e(c),updates:f.map(h=>({id:h,patch:{pinned:u}}))}))}catch(h){console.error(h),await vr()}}let $n=null,Kn=null;Rr(()=>{const a=(e(n)??"").trim(),u=(e(l)??"").trim(),f=s.availableRegions,m=Array.isArray(f)&&f.length>0;if(!a){$n=null,i(W,null),i(dt,null),i(ie,[],!0),i(ft,[],!0),i(St,!1);return}if(m&&!u)return;const h=`${a}::${u}::${e(c)??""}`;$n!==h&&($n=h,i(W,null),i(dt,null),i(ie,[],!0),i(ft,[],!0),i(St,!1),vr())}),Rr(()=>{const a=(ps.url.searchParams.get("test")||"").trim(),u=(ps.url.searchParams.get("step")||"").trim(),f=e(ie).some(m=>m.id===a&&(!u||m.step===u));!a||!f||Kn===a||(Kn=a,(async()=>{var m;e(nt).has(a)||await Ir(a,!0),await Ea(),(m=document.querySelector(`[data-id="${CSS.escape(a)}"]`))==null||m.scrollIntoView({block:"start"})})().catch(console.error))});const an=w(()=>e(He).filter(a=>a.pinned).length),Fr=w(()=>e(an)>0),na=w(()=>e(He).length>0&&e(an)===e(He).length),pt=w(()=>{let a=0,u=0,f=0,m=0,h=0,y=0,_=0,j=0;for(const Q of e(He)){const ae=Q.result;!ae||ae.isOld||ae.total_runs<=0||(u+=1,f+=ae.successes,m+=ae.total_runs,ae.successes===ae.total_runs&&(a+=1),ae.previous&&ae.previous.total_runs>0&&(h+=ae.previous.success_count,y+=ae.previous.total_runs,_+=ae.successes,j+=ae.total_runs))}const N=(()=>{if(j<5||y<=0)return null;const Q=Xs(h,y,_,j);if(Q===null||Q>=.05)return null;const ae=h/y;return{direction:_/j>=ae?"higher":"lower",previousAttemptsPassing:h,previousAttemptsTotal:y,currentAttemptsPassing:_,currentAttemptsTotal:j,pValue:Q}})();return{casesPassing:a,casesTotal:u,attemptsPassing:f,attemptsTotal:m,trend:N}});async function sa(){var m,h;const a=(h=(m=s.currentStep)==null?void 0:m.schema)!=null&&h.trim()?"json-deep-equal":"assertion",u=await De.tests.addTest.mutate({agent:e(n),region:e(l),variant:e(c),seed:{step:e(dr),evaluation_mode:a,...a==="json-deep-equal"?{expected_output:"{}",case_sensitive:!1}:{}}}),f=Ln(u);i(ie,[f,...e(ie)],!0),Ir(f.id,!0).catch(console.error)}function Ln(a){return{...a,step:String(a.step||"main"),evaluation_mode:a.evaluation_mode==="json-deep-equal"?"json-deep-equal":"assertion",case_sensitive:a.case_sensitive===!0,context_mode:a.context_mode==="replace"?"replace":"merge",pinned:a.pinned==="TRUE",timeout:Number(a.timeout),similarity_threshold:Number(a.similarity_threshold),context:JSON.stringify(a.context),mocks:JSON.stringify(a.mocks||{}),hasMocks:typeof a.mocks<"u",conversation_ui:ln(a.conversation||"",a.expected_output||"",String(a.step||"main"),a.evaluation_mode==="json-deep-equal")}}function aa(a,u){const f=u.test,m=f.id,h=u.results,y=h.reduce((_,j)=>_+(j.success?1:0),0);return{id:m,pinned:f.pinned==="TRUE",scenario:f.scenario,step:f.step||"main",evaluation_mode:f.evaluation_mode==="json-deep-equal"?"json-deep-equal":"assertion",case_sensitive:f.case_sensitive===!0,context_mode:f.context_mode==="replace"?"replace":"merge",author:f.author||"",assertion_type:f.assertion_type,assertion_value:f.assertion_value,conversation:f.conversation,expected_output:f.expected_output,conversation_ui:ln(f.conversation||"",f.expected_output||"",f.step||"main",f.evaluation_mode==="json-deep-equal"),timeout:Number(f.timeout),similarity_threshold:Number(f.similarity_threshold),context:JSON.stringify(f.context),mocks:JSON.stringify(f.mocks||{}),hasMocks:typeof f.mocks<"u",result:{success_rate:u.success_rate,successes:y,total_runs:h.length,isOld:!1,runs:h.map((_,j)=>{const N={agent:e(n),id:m,timestamp:a,run:j};return{index:j+1,success:_.success,text:_.result||"",evaluation:_.evaluation||"",errors:_.errors||"",links:{renderedPrompt:{...N,key:"rendered_prompt"},receivedPrompt:{...N,key:"received_prompt"},conversation:{...N,key:"stringified_conversation"},context:{...N,key:"received_context"},logs:{...N,key:"logs"},errors:{...N,key:"errors"},traces:{...N,key:"traces"}}}}).reverse()}}}function oa(a){let u=0,f=0,m=0,h=0;for(const y of a){const _=y.result;!_||_.total_runs<=0||(f+=1,m+=_.successes,h+=_.total_runs,_.successes===_.total_runs&&(u+=1))}return{casesPassing:u,casesTotal:f,attemptsPassing:m,attemptsTotal:h}}function Qn(a){var u;return((u=Mr.find(f=>f.value===a))==null?void 0:u.label)??a}function Wn(a,u){i(xe,!1),o.openAiEdit(ii({context:a.context,conversation:a.conversation,expectedOutput:a.expected_output,assertionLabel:a.evaluation_mode==="json-deep-equal"?"":Qn(a.assertion_type),assertionValue:a.evaluation_mode==="json-deep-equal"?"":a.assertion_value,currentIncorrectOutcome:u}))}function ia(a){const u=new Date(a);return Number.isNaN(u.getTime())?a:u.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function la(a){const u=new Date(a);return Number.isNaN(u.getTime())?"":u.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})}function Xn(a){return a==="all"?"All tests":"Pinned tests"}function ca(a){const u=new Set(e(wt));u.has(a)?u.delete(a):u.add(a),i(wt,Array.from(u),!0)}function En(a,u){return`${a.trim()}::${String(u??"").trim()}::${e(c)??""}`}function pr(){const a=(e(n)??"").trim();return a?En(a,e(l)):null}function Yn(a){return a.rows.length===1?a.rows.map(u=>u.test.id):[]}function ua(){ur+=1,rr+=1,i(me,null),i(ut,[],!0),i(_t,!1),i(Nt,null),i(Fe,null),i(Kt,{},!0),i(tr,!1),i(Mt,null),i(wt,[],!0)}async function da(){const a=pr();a&&(e(me)!==a&&(ua(),i(_t,!0)),i(xe,!0),await fa({preserveCachedDetail:!0}))}async function fa(a={}){var _;const u=(e(n)??"").trim();if(!u)return;const f=e(l),m=e(c),h=En(u,f),y=++ur;i(_t,!0),i(Nt,null);try{const j=await De.tests.historyList.query({agent:u,region:f,variant:m});if(y!==ur||pr()!==h)return;i(ut,j,!0),i(me,h,!0);const N=e(Fe)&&j.some(Q=>Q.timestamp===e(Fe))?e(Fe):((_=j[0])==null?void 0:_.timestamp)??null;N?await Zn(N,{preserveCachedDetail:a.preserveCachedDetail,requestKey:h}):(i(Fe,null),i(Mt,null),i(tr,!1),i(wt,[],!0))}catch(j){if(console.error(j),y!==ur||pr()!==h)return;i(Nt,"Failed to load test history"),e(me)!==h&&(i(ut,[],!0),i(Fe,null),i(Kt,{},!0),i(wt,[],!0))}finally{y===ur&&pr()===h&&i(_t,!1)}}async function Zn(a,u={}){const f=(e(n)??"").trim();if(!f)return;const m=e(l),h=e(c),y=u.requestKey??En(f,m),_=e(Fe)===a;i(Fe,a,!0),i(tr,!0),i(Mt,null);const j=e(Kt)[a];if(j&&u.preserveCachedDetail){rr+=1,i(tr,!1),_||i(wt,Yn(j),!0);return}const N=++rr;j||i(wt,[],!0);try{const Q=await De.tests.historyRun.query({agent:f,region:m,variant:h,timestamp:a});if(N!==rr||e(Fe)!==a||pr()!==y)return;i(Kt,{...e(Kt),[a]:Q},!0),i(wt,Yn(Q),!0)}catch(Q){if(console.error(Q),N!==rr||e(Fe)!==a||pr()!==y)return;i(Mt,"Failed to load this test run"),i(wt,[],!0)}finally{N===rr&&e(Fe)===a&&pr()===y&&i(tr,!1)}}function es(a){const{conversation_ui:u,hasMocks:f,mocks:m,result:h,...y}=a,_={...y,pinned:a.pinned?"TRUE":"FALSE",timeout:String(a.timeout??0),similarity_threshold:String(a.similarity_threshold??50),context:JSON.parse(a.context)};return f&&(_.mocks=JSON.parse(m)),_}async function va(a,u){const f=es(a),m=await De.tests.addTest.mutate({agent:e(n),region:e(l),variant:e(c),seed:f}),h=Ln(m),y=e(ie).slice(),_=e(ie).findIndex(j=>j.id===a.id);y.splice(_<0?u:_,0,h),i(ie,y,!0),Ir(h.id,!0).catch(console.error),await De.tests.reorder.mutate({agent:e(n),region:e(l),variant:e(c),order:e(ie).map(j=>j.id)})}async function ts(a,u,f=0){const m=es(a);m.expected_output=u;const h=await De.tests.addTest.mutate({agent:e(n),region:e(l),variant:e(c),seed:m}),y=Ln(h),_=e(ie).slice();_.splice(f,0,y),i(ie,_,!0),Ir(y.id,!0).catch(console.error),await De.tests.reorder.mutate({agent:e(n),region:e(l),variant:e(c),order:e(ie).map(j=>j.id)})}function rs(a){if(!a)return"";try{return a.replace(/^\s*\d+\s*[:.)-]?\s*(?:[❌✖️✔✅✗xX])?\s*/u,"")}catch{return a}}function on(a){try{return a&&a.trim()?JSON.parse(a):{}}catch{return{}}}const ns=a=>a.match(/^\s*(agent|assistant|user|system|step)\s*:\s*(.*)$/i);function ss(a){return kr(a)?"agent":"step"}function as(a){try{const u=JSON.parse(a),f=JSON.stringify(u,null,2);return typeof u!="object"||u===null||Array.isArray(u)?f:f.split(`
|
|
19
|
+
`).slice(1,-1).map(m=>m.startsWith(" ")?m.slice(2):m).join(`
|
|
20
|
+
`)}catch{return a}}function os(a,u,f){const m=String(a||u||"—");return f?as(m):m}function pa(a,u,f){let m=String(a??"").trimEnd();if(!m)return"";f&&(m=as(m));const h=ss(u)==="agent"?"Agent":"Step";return f?m?`${h}:
|
|
21
|
+
${m}`:`${h}:`:`${h}: ${m}`}function ln(a,u,f,m){const h=String(a??"").trimEnd(),y=pa(u,f,m);return y?h?`${h}
|
|
22
|
+
${y}`:y:h}function Rn(a,u){const f=String(a??""),m=f.split(/\r?\n/),h=[];let y=null;for(let _e=0;_e<m.length;_e++){const Ye=ns(m[_e]);if(!Ye)continue;y&&h.push({...y,endLine:_e});const Rt=String(Ye[1]??"").toLowerCase();y={role:Rt==="assistant"?"agent":Rt,startLine:_e+1}}y&&h.push({...y,endLine:m.length});const _=h.at(-1),j=ss(u.step);if(!((_==null?void 0:_.role)===j)||!_)return{valid:!1,expected:"",conversation:f.trimEnd()};const Q=m.slice(_.startLine-1,_.endLine),ae=Q[0]??"",Dt=ns(ae),Tt=[Dt?Dt[2]??"":"",...Q.slice(1)].join(`
|
|
23
|
+
`).trimEnd();let Wt=Tt,ee=!0;if(u.evaluation_mode==="json-deep-equal"){const _e=/^\s*[\[{]/.test(Tt)?Tt:`{
|
|
24
|
+
${Tt}
|
|
25
|
+
}`;try{const Ye=JSON.parse(_e);ee=typeof Ye=="object"&&Ye!==null,Wt=ee?JSON.stringify(Ye,null,2):_e}catch{ee=!1,Wt=_e}}const ve=m.slice(0,_.startLine-1).join(`
|
|
26
|
+
`).trimEnd();return{valid:ee,expected:Wt,conversation:ve,highlight:{startLine:u.evaluation_mode==="json-deep-equal"?Math.min(_.endLine,_.startLine+1):_.startLine,endLine:_.endLine}}}function cn(a){return a.total_runs>0&&a.successes<a.total_runs?"text-rc-red-600":"text-rc-gray-200"}async function or(a,u){await De.tests.patchTest.mutate({agent:e(n),region:e(l),variant:e(c),id:a,patch:u})}async function ga(a){await De.tests.deleteTest.mutate({agent:e(n),region:e(l),variant:e(c),id:a});try{await Ir(a,!1)}catch(u){console.error(u)}await vr()}function Ir(a,u){if(!(e(n)??"").trim())return Promise.resolve();const m=String(a??"").trim();if(!m)return Promise.resolve();const h=new Set(e(ft)),y=h.has(m);if(u===y)return Promise.resolve();u?h.add(m):h.delete(m);const _=Array.from(h);return i(ft,_,!0),q(),Promise.resolve()}function ma(a){Ir(a,!e(nt).has(a)).catch(console.error)}function ha(){return!(e(n)??"").trim()||!e(Qt)||(i(ft,[],!0),q()),Promise.resolve()}function xa(a){e(n)&&(i(L,a.id,!0),i(C,"context"),i(M,T(on(a.context)),!0),i(B,T(on(a.mocks)),!0),i(H,!1),i(de,a.hasMocks,!0))}async function ba(){const a=e(L);if(!a||!e(n)){i(L,null),i(C,"context"),i(H,!1),i(de,!1);return}const u=T(e(M)),f=T(e(B)),m=e(de)||e(H);i(L,null),i(C,"context"),i(H,!1),i(de,!1),i(ie,e(ie).map(h=>{if(h.id!==a)return h;const y={...h,context:JSON.stringify(u)};return m&&(y.mocks=JSON.stringify(f),y.hasMocks=!0),y}),!0);try{const h={context:u};m&&(h.mocks=f),await vt(or(a,h))}catch(h){console.error(h),await vr()}}kn(()=>{fe&&clearInterval(fe)});var is=Wi();Aa("rdft55",a=>{var u=ui();p(a,u)});var ls=$e(is);Wr(ls,{title:"Test history",class:"!w-[95vw] !max-w-[90rem]",get open(){return e(xe)},set open(f){i(xe,f,!0)},children:f=>{var m=_i(),h=v(m),y=v(h);{var _=ee=>{var ve=Es();p(ee,ve)},j=ee=>{var ve=Rs(),_e=v(ve,!0);d(ve),V(()=>F(_e,e(Nt))),p(ee,ve)},N=ee=>{var ve=di();p(ee,ve)},Q=ee=>{var ve=pi(),_e=v(ve);{var Ye=It=>{var Ie=fi(),gr=v(Ie,!0);d(Ie),V(()=>F(gr,e(Nt))),p(It,Ie)};O(_e,It=>{e(Nt)&&It(Ye)})}var Rt=g(_e,2);cr(Rt,17,()=>e(ut),It=>It.timestamp,(It,Ie,gr,qr)=>{var U=vi(),ce=v(U),Ce=v(ce),he=v(Ce,!0);d(Ce);var Le=g(Ce,2),Ze=v(Le,!0);d(Le),d(ce);var Ft=g(ce,2),mr=v(Ft);d(Ft);var hr=g(Ft,2),qt=v(hr),Ct=v(qt,!0);d(qt);var Pt=g(qt,2),xr=v(Pt);d(Pt),d(hr),d(U),V((z,ir,zt)=>{Ae(U,1,`w-full rounded border px-3 py-2 text-left transition-colors ${e(Fe)===e(Ie).timestamp?"border-rc-green-200 bg-rc-gray-930 text-rc-gray-100":"border-rc-gray-700 bg-rc-gray-900 text-rc-gray-300 hover:border-rc-gray-500 hover:bg-rc-gray-800"}`,"svelte-rdft55"),F(he,z),F(Ze,ir),F(mr,`${e(Ie).testCount??""}
|
|
27
|
+
${e(Ie).testCount===1?"test":"tests"} · ${zt??""}`),Ae(qt,1,Br(e(Ie).passed?"text-rc-green-200":"text-rc-red-600")),F(Ct,e(Ie).passed?"Success":"Failure"),F(xr,`${e(Ie).successRatePercent??""}% (${e(Ie).successRate??""})`)},[()=>ia(e(Ie).timestamp),()=>la(e(Ie).timestamp),()=>Xn(e(Ie).runScope)]),Oe("click",U,()=>void Zn(e(Ie).timestamp,{preserveCachedDetail:!0})),p(It,U)}),d(ve),p(ee,ve)};O(y,ee=>{e(Zr)?ee(_):e(Nt)&&e(ut).length===0?ee(j,1):e(ut).length===0?ee(N,2):ee(Q,-1)})}d(h);var ae=g(h,2),Dt=v(ae);{var Cr=ee=>{var ve=Es();p(ee,ve)},Tt=ee=>{var ve=Rs(),_e=v(ve,!0);d(ve),V(()=>F(_e,e(Mt))),p(ee,ve)},Wt=ee=>{var ve=yi(),_e=v(ve),Ye=v(_e),Rt=v(Ye),It=g(v(Rt),2);mn(It,{type:"number",class:"w-16",get value(){return e(tt).runConfig.repeats},disabled:!0}),d(Rt);var Ie=g(Rt,2),gr=g(v(Ie),2);mn(gr,{type:"number",class:"w-16",get value(){return e(tt).runConfig.concurrency},disabled:!0}),d(Ie);var qr=g(Ie,2),U=v(qr,!0);d(qr),d(Ye),d(_e);var ce=g(_e,2),Ce=g(v(ce),2),he=v(Ce),Le=v(he);d(he);var Ze=g(he,2),Ft=v(Ze);d(Ze),d(Ce),d(ce);var mr=g(ce,2);{var hr=Ct=>{var Pt=As();p(Ct,Pt)},qt=Ct=>{var Pt=Ms();cr(Pt,21,()=>e(Or),xr=>xr.id,(xr,z)=>{const ir=w(()=>Rn(e(z).conversation_ui,e(z))),zt=w(()=>e(en).has(e(z).id));var Pr=bi(),un=v(Pr),zr=v(un),An=v(zr);{let Be=w(()=>`block ${e(z).pinned?"text-rc-green-200":"text-gray-400"}`),$t=w(()=>e(z).pinned?"mdi:pin":"mdi:pin-outline");Gt(An,{get class(){return e(Be)},get icon(){return e($t)},width:18,height:18})}d(zr);var dn=g(zr,2),Jr=v(dn),ue=v(Jr),le=v(ue),We=v(le);lr(We);var x=g(We,2),At=v(x);{let Be=w(()=>e(zt)?"chevron-up":"chevron-down");Bt(At,{get name(){return e(Be)},width:20,height:20,class:"block"})}d(x),d(le);var Ue=g(le,2);{var gt=Be=>{var $t=Os(),ze=v($t);{var st=Me=>{const Ee=w(()=>hn(e(z).result,e(tt).runConfig.repeats));var Ge=gi(),mt=$e(Ge),ot=v(mt);d(mt);var Lr=g(mt,2);{var Vr=Yt=>{var we=xn(),ht=v(we);d(we),V(()=>F(ht,`(${e(Ee).expectedSuccesses??""}/${e(Ee).expectedRuns??""}
|
|
28
|
+
expected)`)),p(Yt,we)};O(Lr,Yt=>{var we;(we=e(Ee))!=null&&we.showExpected&&Yt(Vr)})}V(Yt=>{Ae(mt,1,Yt,"svelte-rdft55"),F(ot,`${e(z).result.successes??""}/${e(z).result.total_runs??""}`)},[()=>Br(cn(e(z).result))]),p(Me,Ge)},at=Me=>{var Ee=js();p(Me,Ee)};O(ze,Me=>{e(z).result?Me(st):Me(at,-1)})}d($t),p(Be,$t)};O(Ue,Be=>{e(zt)||Be(gt)})}d(ue);var Xt=g(ue,2);{var $r=Be=>{var $t=xi(),ze=$e($t),st=v(ze);lr(st);var at=g(st,2);{var Me=we=>{var ht=mi(),oe=v(ht);lr(oe);var Re=g(oe,2);lr(Re),d(ht),V(ke=>{gn(oe,ke),gn(Re,e(z).assertion_value)},[()=>Qn(e(z).assertion_type)]),p(we,ht)};O(at,we=>{e(z).evaluation_mode!=="json-deep-equal"&&we(Me)})}var Ee=g(at,2),Ge=v(Ee);ct(Ge,{variant:"secondary",size:"small",onclick:()=>tn(`Test context — ${e(z).scenario||"Test"}`,on(e(z).context)),children:(we,ht)=>{je();var oe=Xe("View context");p(we,oe)},$$slots:{default:!0}});var mt=g(Ge,2);ct(mt,{variant:"secondary",size:"small",onclick:()=>tn(`Test mocks — ${e(z).scenario||"Test"}`,on(e(z).mocks)),children:(we,ht)=>{je();var oe=Xe("View mocks");p(we,oe)},$$slots:{default:!0}}),d(Ee);var ot=g(Ee,2);{let we=w(()=>e(ir).highlight?[{startLine:e(ir).highlight.startLine,endLine:e(ir).highlight.endLine,className:e(z).evaluation_mode==="json-deep-equal"?"test-expected-json-output":"test-expected-output"}]:void 0);Cs(ot,{get value(){return e(z).conversation_ui},get highlights(){return e(we)},language:"markdown",height:220,readOnly:!0})}d(ze);var Lr=g(ze,2),Vr=v(Lr);{var Yt=we=>{const ht=w(()=>hn(e(z).result,e(tt).runConfig.repeats));var oe=hi(),Re=$e(oe),ke=v(Re),xt=v(ke),it=v(xt);d(xt);var Ke=g(xt,2);{var Se=pe=>{var D=xn(),br=v(D);d(D),V(()=>F(br,`(${e(ht).expectedSuccesses??""}/${e(ht).expectedRuns??""}
|
|
29
|
+
expected)`)),p(pe,D)};O(Ke,pe=>{var D;(D=e(ht))!=null&&D.showExpected&&pe(Se)})}d(ke),d(Re);var jt=g(Re,2);cr(jt,21,()=>e(z).result.runs,pe=>pe.index,(pe,D,br,fn)=>{var yr=Ns(),Jt=v(yr),et=v(Jt,!0);d(Jt);var Pe=g(Jt,2),Vt=v(Pe),_r=v(Vt);{var Hr=J=>{Bt(J,{name:"checkmark",width:20,height:20,class:"shrink-0 self-end"})},Ur=J=>{Bt(J,{name:"close",width:18,height:18,class:"shrink-0 scale-110 self-start"})};O(_r,J=>{e(D).success?J(Hr):J(Ur,-1)})}var te=g(_r,2),Z=v(te,!0);d(te),d(Vt);var re=g(Vt,2);{let J=w(()=>e(z).scenario||"Test"),lt=w(()=>!e(D).text.trim()),Zt=w(()=>e(z).evaluation_mode!=="json-deep-equal"),bt=w(()=>!!o.getActivePromptEditId()),Ot=w(()=>e(D).success?void 0:()=>Wn(e(z),e(D).text||e(D).errors||"—"));Ls(re,{get scenario(){return e(J)},get runIndex(){return e(D).index},get links(){return e(D).links},get variants(){return e(z).result.runs},get region(){return e(l)},get variant(){return e(c)},get actionsDisabled(){return e(ge)},get actionsInert(){return e(Ne)},get addTestDisabled(){return e(lt)},get showAnalyze(){return e(Zt)},get analyzeDisabled(){return e(nr)},get fixDisabled(){return e(bt)},onAddTest:()=>ts(e(z),e(D).text,0),onAnalyze:()=>rn(e(z).scenario||"Test",e(D).index,e(D).links.renderedPrompt),get onFix(){return e(Ot)}})}d(Pe),d(yr),V((J,lt)=>{Ae(Jt,1,`w-full whitespace-pre-wrap break-words rounded-lg px-3 py-2 text-rc-gray-100 ${e(z).evaluation_mode==="json-deep-equal"?"font-mono text-sm leading-6":""} ${e(D).success?"bg-rc-green-700 backdrop-blur-md":""}`,"svelte-rdft55"),qn(Jt,e(D).success?"":"background-color: rgb(156 80 80)"),F(et,J),Ae(Pe,1,`flex w-full flex-col gap-x-4 whitespace-pre-wrap break-words ${e(D).success?"text-rc-green-200":"text-rc-red-800"}`,"svelte-rdft55"),F(Z,lt)},[()=>os(e(D).text,e(D).errors,e(z).evaluation_mode==="json-deep-equal"),()=>e(D).success?"Pass":rs(e(D).evaluation)||(e(D).errors||"").split(/\r?\n/)[0]||"Fail"]),p(pe,yr)}),d(jt),V(pe=>{Ae(xt,1,pe,"svelte-rdft55"),F(it,`${e(z).result.successes??""}/${e(z).result.total_runs??""}`)},[()=>Br(cn(e(z).result))]),p(we,oe)};O(Vr,we=>{e(z).result&&we(Yt)})}d(Lr),V(()=>gn(st,e(z).author||"")),p(Be,$t)};O(Xt,Be=>{e(zt)&&Be($r)})}d(Jr),d(dn),d(un),d(Pr),V(()=>{Ut(Pr,"data-id",e(z).id),Ae(Jr,1,`left-details-bg flex flex-col rounded border ${e(ir).valid?"border-rc-gray-700":"border-rc-red-600"}`,"svelte-rdft55"),Ae(ue,1,`left-details-bg rounded-t px-2 pt-2 ${e(zt)?"border-b border-rc-gray-700 pb-1":"pb-2"}`,"svelte-rdft55"),gn(We,e(z).scenario),Ut(x,"aria-label",e(zt)?"Collapse test":"Expand test"),Ut(x,"title",e(zt)?"Collapse":"Expand")}),Oe("click",x,()=>ca(e(z).id)),p(xr,Pr)}),d(Pt),p(Ct,Pt)};O(mr,Ct=>{e(Or).length===0?Ct(hr):Ct(qt,-1)})}d(ve),V(Ct=>{F(U,Ct),F(Le,`${e(Et).casesPassing??""}/${e(Et).casesTotal??""}
|
|
30
|
+
cases passing`),F(Ft,`${e(Et).attemptsPassing??""}/${e(Et).attemptsTotal??""}
|
|
31
|
+
attempts passing`)},[()=>Xn(e(tt).runScope)]),p(ee,ve)};O(Dt,ee=>{e(jr)?ee(Cr):e(Mt)&&!e(tt)?ee(Tt,1):e(tt)&&ee(Wt,2)})}d(ae),d(m),p(f,m)},footer:f=>{ct(f,{variant:"outlined",size:"small",onclick:()=>i(xe,!1),children:(m,h)=>{je();var y=Xe("Close");p(m,y)},$$slots:{default:!0}})},$$slots:{default:!0,footer:!0}});var cs=g(ls,2);Wr(cs,{get title(){return e(X)},class:"!w-[80vw] !max-w-5xl",get open(){return e(E)},set open(f){i(E,f,!0)},children:f=>{var m=wi(),h=v(m,!0);d(m),V(()=>F(h,e(Ve)||"—")),p(f,m)},footer:f=>{ct(f,{variant:"outlined",size:"small",onclick:()=>i(E,!1),children:(m,h)=>{je();var y=Xe("Close");p(m,y)},$$slots:{default:!0}})},$$slots:{default:!0,footer:!0}});var ya=g(cs,2);{var _a=a=>{var u=Ti(),f=v(u),m=v(f),h=v(m,!0);d(m);var y=g(m,2);{var _=N=>{var Q=ki(),ae=g($e(Q),2);Ut(ae,"href",S),p(N,Q)},j=N=>{var Q=Si(),ae=$e(Q),Dt=v(ae,!0);d(ae);var Cr=g(ae,2);ct(Cr,{class:"mt-4",variant:"secondary",onclick:()=>void vr(),children:(Tt,Wt)=>{je();var ee=Xe("Retry");p(Tt,ee)},$$slots:{default:!0}}),V(()=>F(Dt,e(dt).message)),p(N,Q)};O(y,N=>{e(dt).kind==="legacy"?N(_):N(j,-1)})}d(f),d(u),V(()=>F(h,e(dt).kind==="legacy"?"This test suite requires migration":"Tests could not be loaded")),p(a,u)},wa=a=>{var u=Qi(),f=v(u);{var m=U=>{var ce=Ci(),Ce=g(v(ce),2);cr(Ce,21,()=>e(Dr),ds,(he,Le)=>{var Ze=Ii(),Ft=v(Ze);d(Ze),V(()=>F(Ft,`${e(Le).step??""} (${e(Le).count??""})`)),p(he,Ze)}),d(Ce),d(ce),p(U,ce)};O(f,U=>{e(Dr).length>0&&U(m)})}var h=g(f,2),y=v(h),_=v(y),j=g(v(_),2);mn(j,{type:"number",min:"1",max:"500",class:"w-16",onchange:()=>{i(P,R(+e(P)||1,1,500),!0),q()},get value(){return e(P)},set value(U){i(P,U,!0)}}),d(_);var N=g(_,2),Q=g(v(N),2);mn(Q,{type:"number",min:"1",max:"75",class:"w-16",onchange:()=>{i(A,R(+e(A)||75,1,75),!0),q()},get value(){return e(A)},set value(U){i(A,U,!0)}}),d(N),d(y);var ae=g(y,2),Dt=v(ae);{var Cr=U=>{var ce=Pi(),Ce=v(ce),he=v(Ce);d(Ce);var Le=g(Ce,2);ct(Le,{variant:"secondary",onclick:ta,children:(Ze,Ft)=>{je();var mr=Xe("Cancel");p(Ze,mr)},$$slots:{default:!0}}),d(ce),V(()=>F(he,`Running… ${e(k)??""}/${e(se)??""}`)),p(U,ce)};O(Dt,U=>{e(ge)&&U(Cr)})}var Tt=g(Dt,2),Wt=v(Tt);{let U=w(()=>e(ge)||!e(n));ct(Wt,{variant:"secondary",onclick:sa,get inert(){return e(Ne)},get disabled(){return e(U)},class:"inline-flex items-center gap-1",children:(ce,Ce)=>{var he=$i(),Le=$e(he);Gt(Le,{icon:"mdi:plus-thick",width:18,height:18}),je(),p(ce,he)},$$slots:{default:!0}})}var ee=g(Wt,2);{var ve=U=>{var ce=Li();p(U,ce)};O(ee,U=>{e(St)&&e(He).length===0&&U(ve)})}d(Tt);var _e=g(Tt,2);{let U=w(()=>e(ge)||e(He).length===0||e(Fr)&&e(an)===0);ct(_e,{class:"inline-flex min-w-32 items-center justify-center gap-1 disabled:cursor-not-allowed disabled:opacity-50",get inert(){return e(Ne)},get disabled(){return e(U)},onclick:()=>Zs(e(Fr)?"pinned":"all"),children:(ce,Ce)=>{je();var he=Xe();V(()=>F(he,`▶ ${e(Fr)?"Run pinned":"Run all"}`)),p(ce,he)},$$slots:{default:!0}})}d(ae),d(h);var Ye=g(h,2),Rt=v(Ye);{let U=w(()=>!e(n));ct(Rt,{variant:"secondary",class:"ml-11 inline-flex min-w-32 items-center justify-center gap-1",get disabled(){return e(U)},onclick:()=>void da().catch(console.error),children:(ce,Ce)=>{var he=Ei(),Le=$e(he);Gt(Le,{icon:"mdi:history",width:18,height:18}),je(),p(ce,he)},$$slots:{default:!0}})}var It=g(Rt,2);{var Ie=U=>{{let ce=w(()=>!e(n));ct(U,{variant:"secondary",class:"inline-flex min-w-32 items-center justify-center gap-1",get inert(){return e(Ne)},get disabled(){return e(ce)},onclick:()=>void ha().catch(console.error),children:(Ce,he)=>{var Le=Ri(),Ze=$e(Le);Bt(Ze,{name:"chevron-up",width:16,height:16,class:"block"}),je(),p(Ce,Le)},$$slots:{default:!0}})}};O(It,U=>{e(Qt)&&U(Ie)})}d(Ye);var gr=g(Ye,2),qr=v(gr);Ma(qr,{class:"relative flex h-full min-w-0 flex-col overflow-hidden !rounded-none p-0",children:(U,ce)=>{var Ce=Ki(),he=$e(Ce),Le=v(he),Ze=v(Le);{var Ft=ue=>{var le=Ai();p(ue,le)},mr=ue=>{var le=ji(),We=v(le);{let x=w(()=>e(Fr)?"mdi:pin":"mdi:pin-outline");Gt(We,{class:"block",get icon(){return e(x)},width:18,height:18})}d(le),V(()=>{Ae(le,1,`icon-btn justify-self-center ${e(Fr)?"text-rc-green-200":"text-gray-300 hover:text-gray-100"}`,"svelte-rdft55"),le.inert=e(Ne),le.disabled=e(ge)||e(He).length===0}),Oe("click",le,async()=>{await ra(!e(na))}),p(ue,le)};O(Ze,ue=>{e(ge)?ue(Ft):ue(mr,-1)})}var hr=g(Ze,2),qt=v(hr),Ct=v(qt);d(qt);var Pt=g(qt,2),xr=v(Pt);d(Pt);var z=g(Pt,2),ir=v(z);d(z);var zt=g(z,2);{var Pr=ue=>{var le=Fn(),We=v(le);{let Ue=w(()=>e(pt).trend.direction==="higher"?"chevron-up":"chevron-down");Bt(We,{get name(){return e(Ue)},width:16,height:16,class:"inline-block align-text-bottom"})}var x=g(We),At=v(x,!0);d(x),d(le),V((Ue,gt)=>{Ae(le,1,`whitespace-nowrap font-semibold ${e(pt).trend.direction==="higher"?"text-rc-green-200":"text-rc-red-600"}`,"svelte-rdft55"),Ut(le,"title",Ue),F(At,gt)},[()=>`Previous ${e(pt).trend.previousAttemptsPassing}/${e(pt).trend.previousAttemptsTotal}, current ${e(pt).trend.currentAttemptsPassing}/${e(pt).trend.currentAttemptsTotal}, p=${e(pt).trend.pValue.toPrecision(2)}`,()=>Ys(e(pt).trend.direction)]),p(ue,le)};O(zt,ue=>{e(pt).trend&&ue(Pr)})}d(hr),d(Le);var un=g(Le,2);{var zr=ue=>{var le=As();p(ue,le)},An=ue=>{var le=Ms();cr(le,23,()=>e(He),We=>We.id,(We,x,At)=>{const Ue=w(()=>Rn(e(x).conversation_ui,e(x))),gt=w(()=>e(nt).has(e(x).id));var Xt=Ui(),$r=v(Xt),Be=v($r),$t=v(Be);{var ze=oe=>{var Re=Oi(),ke=v(Re);{var xt=D=>{Gt(D,{icon:"mdi:check",width:20,height:20,class:"text-rc-green-200"})},it=w(()=>e(Tr).has(e(x).id)),Ke=D=>{Gt(D,{icon:"mdi:play",width:20,height:20,class:"text-rc-green-200"})},Se=w(()=>e(Sr).has(e(x).id)),jt=D=>{Gt(D,{icon:"mdi:play-outline",width:20,height:20,class:"text-rc-green-200"})},pe=w(()=>e(rt).has(e(x).id));O(ke,D=>{e(it)?D(xt):e(Se)?D(Ke,1):e(pe)&&D(jt,2)})}d(Re),p(oe,Re)},st=oe=>{var Re=Ni(),ke=$e(Re),xt=v(ke);{let pe=w(()=>e(x).pinned?"mdi:pin":"mdi:pin-outline");Gt(xt,{class:"block",get icon(){return e(pe)},width:18,height:18})}d(ke);var it=g(ke,2),Ke=v(it);Gt(Ke,{icon:"mdi:content-copy",width:18,height:18}),d(it);var Se=g(it,2),jt=v(Se);Gt(jt,{icon:"mdi:trash-can-outline",width:18,height:18}),d(Se),V(()=>{Ae(ke,1,`icon-btn ${e(x).pinned?"text-rc-green-200":"text-gray-300 hover:text-gray-100"}`,"svelte-rdft55"),Ut(ke,"aria-label",e(x).pinned?"Unpin":"Pin"),Ut(ke,"title",e(x).pinned?"Unpin":"Pin"),ke.inert=e(Ne),ke.disabled=e(ge),it.inert=e(Ne),it.disabled=e(ge),Se.inert=e(Ne),Se.disabled=e(ge)}),Oe("click",ke,async()=>{const pe=!e(x).pinned;i(ie,e(ie).map(D=>D.id===e(x).id?{...D,pinned:pe}:D),!0),await vt(or(e(x).id,{pinned:pe?"TRUE":"FALSE"}))}),Oe("click",it,()=>va(e(x),e(At))),Oe("click",Se,()=>ga(e(x).id)),p(oe,Re)};O($t,oe=>{e(ge)?oe(ze):oe(st,-1)})}d(Be);var at=g(Be,2),Me=v(at),Ee=v(Me),Ge=v(Ee),mt=v(Ge);lr(mt);var ot=g(mt,2),Lr=v(ot);{let oe=w(()=>e(gt)?"chevron-up":"chevron-down");Bt(Lr,{get name(){return e(oe)},width:20,height:20,class:"block"})}d(ot),d(Ge);var Vr=g(Ge,2);{var Yt=oe=>{var Re=Os(),ke=v(Re);{var xt=Ke=>{const Se=w(()=>hn(e(x).result,e(Te)));var jt=Mi(),pe=$e(jt),D=v(pe);d(pe);var br=g(pe,2);{var fn=et=>{var Pe=xn(),Vt=v(Pe);d(Pe),V(()=>F(Vt,`(${e(Se).expectedSuccesses??""}/${e(Se).expectedRuns??""}
|
|
32
|
+
expected)`)),p(et,Pe)};O(br,et=>{var Pe;(Pe=e(Se))!=null&&Pe.showExpected&&et(fn)})}var yr=g(br,2);{var Jt=et=>{var Pe=Fn(),Vt=v(Pe);{let Ur=w(()=>e(Se).direction==="higher"?"chevron-up":"chevron-down");Bt(Vt,{get name(){return e(Ur)},width:16,height:16,class:"inline-block align-text-bottom"})}var _r=g(Vt),Hr=v(_r,!0);d(_r),d(Pe),V(()=>{Ae(Pe,1,`ml-2 whitespace-nowrap font-semibold ${e(Se).direction==="higher"?"text-rc-green-200":"text-rc-red-600"}`,"svelte-rdft55"),F(Hr,e(Se).comparisonLabel)}),p(et,Pe)};O(yr,et=>{var Pe;(Pe=e(Se))!=null&&Pe.comparisonLabel&&et(Jt)})}V(et=>{Ae(pe,1,et,"svelte-rdft55"),F(D,`${e(x).result.successes??""}/${e(x).result.total_runs??""}`)},[()=>Br(cn(e(x).result))]),p(Ke,jt)},it=Ke=>{var Se=js();p(Ke,Se)};O(ke,Ke=>{e(x).result?Ke(xt):Ke(it,-1)})}d(Re),p(oe,Re)};O(Vr,oe=>{e(gt)||oe(Yt)})}d(Ee);var we=g(Ee,2);{var ht=oe=>{var Re=Hi(),ke=$e(Re),xt=v(ke);{var it=te=>{var Z=Di(),re=v(Z);d(Z),V(J=>F(re,`Invalid test: expected must be the
|
|
33
|
+
last ${J??""}`),[()=>kr(e(x).step)?"“Agent: …” block":e(x).evaluation_mode==="json-deep-equal"?"“Step: …” block with valid JSON":"“Step: …” block"]),p(te,Z)};O(xt,te=>{e(Ue).valid||te(it)})}var Ke=g(xt,2);lr(Ke);var Se=g(Ke,2);{var jt=te=>{var Z=qi(),re=v(Z);cr(re,21,()=>Mr,ds,(lt,Zt)=>{var bt=Fi(),Ot=v(bt,!0);d(bt);var Er={};V(()=>{F(Ot,e(Zt).label),Er!==(Er=e(Zt).value)&&(bt.value=(bt.__value=e(Zt).value)??"")}),p(lt,bt)}),d(re);var J=g(re,2);lr(J),d(Z),Oe("change",re,()=>or(e(x).id,{assertion_type:e(x).assertion_type})),ja(re,()=>e(x).assertion_type,lt=>e(x).assertion_type=lt),Oe("change",J,()=>or(e(x).id,{assertion_value:e(x).assertion_value})),Nn(J,()=>e(x).assertion_value,lt=>e(x).assertion_value=lt),p(te,Z)};O(Se,te=>{e(x).evaluation_mode!=="json-deep-equal"&&te(jt)})}var pe=g(Se,2),D=v(pe);ct(D,{variant:"secondary",size:"small",get inert(){return e(Ne)},get disabled(){return e(ge)},onclick:()=>xa(e(x)),children:(te,Z)=>{je();var re=Xe("Edit context");p(te,re)},$$slots:{default:!0}});var br=g(D,2);{var fn=te=>{var Z=zi(),re=v(Z);lr(re),je(2),d(Z),V(()=>re.disabled=e(ge)),Oe("change",re,()=>vt(or(e(x).id,{case_sensitive:e(x).case_sensitive}))),Oa(re,()=>e(x).case_sensitive,J=>e(x).case_sensitive=J),p(te,Z)};O(br,te=>{e(x).evaluation_mode==="json-deep-equal"&&te(fn)})}d(pe);var yr=g(pe,2);{let te=w(()=>e(Ue).highlight?[{startLine:e(Ue).highlight.startLine,endLine:e(Ue).highlight.endLine,className:e(x).evaluation_mode==="json-deep-equal"?"test-expected-json-output":"test-expected-output"}]:void 0);Cs(yr,{get value(){return e(x).conversation_ui},onChange:Z=>e(x).conversation_ui=Z,onBlur:async Z=>{if(!e(n))return;const re=Rn(Z,e(x));e(x).conversation=re.conversation,e(x).expected_output=re.expected,re.valid&&e(x).evaluation_mode==="json-deep-equal"&&(e(x).conversation_ui=ln(e(x).conversation,e(x).expected_output,e(x).step,!0)),await vt(or(e(x).id,{conversation:e(x).conversation,expected_output:e(x).expected_output}))},get highlights(){return e(te)},language:"markdown",height:220})}d(ke);var Jt=g(ke,2),et=v(Jt),Pe=v(et);{let te=w(()=>e(ge)||!e(Ue).valid),Z=w(()=>e(Ue).valid?"Run":`Expected must be the last ${kr(e(x).step)?"Agent":"Step"} block${e(x).evaluation_mode==="json-deep-equal"?" with valid JSON":""}`);ct(Pe,{size:"small",get inert(){return e(Ne)},get disabled(){return e(te)},get title(){return e(Z)},onclick:()=>ea(e(x).id),children:(re,J)=>{je();var lt=Xe("▶ Run");p(re,lt)},$$slots:{default:!0}})}var Vt=g(Pe,2);{var _r=te=>{const Z=w(()=>hn(e(x).result,e(Te)));var re=Ji(),J=v(re),lt=v(J);d(J);var Zt=g(J,2);{var bt=yt=>{var Je=xn(),wr=v(Je);d(Je),V(()=>F(wr,`(${e(Z).expectedSuccesses??""}/${e(Z).expectedRuns??""}
|
|
34
|
+
expected)`)),p(yt,Je)};O(Zt,yt=>{var Je;(Je=e(Z))!=null&&Je.showExpected&&yt(bt)})}var Ot=g(Zt,2);{var Er=yt=>{var Je=Fn(),wr=v(Je);{let pn=w(()=>e(Z).direction==="higher"?"chevron-up":"chevron-down");Bt(wr,{get name(){return e(pn)},width:18,height:18,class:"inline-block align-text-bottom"})}var vn=g(wr),jn=v(vn,!0);d(vn),d(Je),V(()=>{Ae(Je,1,`ml-2 whitespace-nowrap font-semibold ${e(Z).direction==="higher"?"text-rc-green-200":"text-rc-red-600"}`,"svelte-rdft55"),F(jn,e(Z).comparisonLabel)}),p(yt,Je)};O(Ot,yt=>{var Je;(Je=e(Z))!=null&&Je.comparisonLabel&&yt(Er)})}d(re),V(yt=>{Ae(J,1,yt,"svelte-rdft55"),F(lt,`${e(x).result.successes??""}/${e(x).result.total_runs??""}`)},[()=>Br(cn(e(x).result))]),p(te,re)};O(Vt,te=>{e(x).result&&te(_r)})}d(et);var Hr=g(et,2);{var Ur=te=>{var Z=Vi();cr(Z,21,()=>e(x).result.runs,re=>re.index,(re,J,lt,Zt)=>{var bt=Ns(),Ot=v(bt),Er=v(Ot,!0);d(Ot);var yt=g(Ot,2),Je=v(yt),wr=v(Je);{var vn=Ht=>{Bt(Ht,{name:"checkmark",width:20,height:20,class:"shrink-0 self-end"})},jn=Ht=>{Bt(Ht,{name:"close",width:18,height:18,class:"shrink-0 scale-110 self-start"})};O(wr,Ht=>{e(J).success?Ht(vn):Ht(jn,-1)})}var pn=g(wr,2),ka=v(pn,!0);d(pn),d(Je);var Sa=g(Je,2);{let Ht=w(()=>e(x).scenario||"Test"),On=w(()=>!e(J).text.trim()),Ta=w(()=>e(x).evaluation_mode!=="json-deep-equal"),Ia=w(()=>!!o.getActivePromptEditId()),Ca=w(()=>e(J).success?void 0:()=>Wn(e(x),e(J).text||e(J).errors||"—"));Ls(Sa,{get scenario(){return e(Ht)},get runIndex(){return e(J).index},get links(){return e(J).links},get variants(){return e(x).result.runs},get region(){return e(l)},get variant(){return e(c)},get actionsDisabled(){return e(ge)},get actionsInert(){return e(Ne)},get addTestDisabled(){return e(On)},get showAnalyze(){return e(Ta)},get analyzeDisabled(){return e(nr)},get fixDisabled(){return e(Ia)},onAddTest:()=>ts(e(x),e(J).text,e(At)),onAnalyze:()=>rn(e(x).scenario||"Test",e(J).index,e(J).links.renderedPrompt),get onFix(){return e(Ca)}})}d(yt),d(bt),V((Ht,On)=>{Ae(Ot,1,`w-full whitespace-pre-wrap break-words rounded-lg px-3 py-2 text-rc-gray-100 ${e(x).evaluation_mode==="json-deep-equal"?"font-mono text-sm leading-6":""} ${e(J).success?"bg-rc-green-700 backdrop-blur-md":""}`,"svelte-rdft55"),qn(Ot,e(J).success?"":"background-color: rgb(156 80 80)"),F(Er,Ht),Ae(yt,1,`flex w-full flex-col gap-x-4 whitespace-pre-wrap break-words ${e(J).success?"text-rc-green-200":"text-rc-red-800"}`,"svelte-rdft55"),F(ka,On)},[()=>os(e(J).text,e(J).errors,e(x).evaluation_mode==="json-deep-equal"),()=>e(J).success?"Pass":rs(e(J).evaluation)||(e(J).errors||"").split(/\r?\n/)[0]||"Fail"]),p(re,bt)}),d(Z),p(te,Z)};O(Hr,te=>{e(x).result&&te(Ur)})}d(Jt),Oe("change",Ke,()=>or(e(x).id,{author:e(x).author||""})),Nn(Ke,()=>e(x).author,te=>e(x).author=te),p(oe,Re)};O(we,oe=>{e(gt)&&oe(ht)})}d(Me),d(at),d($r),d(Xt),V(()=>{Ut(Xt,"data-id",e(x).id),Ae(Me,1,`left-details-bg flex flex-col rounded border ${e(Ue).valid?"border-rc-gray-700":"border-rc-red-600"}`,"svelte-rdft55"),Ae(Ee,1,`left-details-bg sticky top-0 z-10 rounded-t px-2 pt-2 ${e(gt)?"border-b border-rc-gray-700 pb-1":"pb-2"}`,"svelte-rdft55"),Ut(ot,"aria-label",e(gt)?"Collapse test":"Expand test"),Ut(ot,"title",e(gt)?"Collapse":"Expand"),ot.inert=e(Ne)}),Oe("change",mt,()=>or(e(x).id,{scenario:e(x).scenario})),Nn(mt,()=>e(x).scenario,oe=>e(x).scenario=oe),Oe("click",ot,()=>ma(e(x).id)),p(We,Xt)}),d(le),p(ue,le)};O(un,ue=>{e(He).length===0?ue(zr):ue(An,-1)})}d(he);var dn=g(he,2);{var Jr=ue=>{const le=w(()=>e(ie).find(We=>We.id===e(L)));{const We=At=>{var Ue=Gi(),gt=v(Ue);Fs(gt,{get value(){return e(C)},ariaLabel:"Test context tabs",onChange:({value:ze})=>i(C,ze,!0),children:(ze,st)=>{var at=Bi(),Me=$e(at);Xr(Me,{value:"context",class:"px-3",children:(Ge,mt)=>{je();var ot=Xe("Context");p(Ge,ot)},$$slots:{default:!0}});var Ee=g(Me,2);Xr(Ee,{value:"mocks",class:"px-3",children:(Ge,mt)=>{je();var ot=Xe("Mocks");p(Ge,ot)},$$slots:{default:!0}}),p(ze,at)},$$slots:{default:!0}});var Xt=g(gt,2),$r=v(Xt);{var Be=ze=>{var st=_n(),at=$e(st);us(at,()=>`${e(L)}:context`,Me=>{{let Ee=w(()=>`editorState/context/${e(n)}/tests/${e(L)}`);vs(Me,{class:"h-full min-h-0 border-thin border-rc-gray-650 shadow-inner-white-soft backdrop-blur-3xl",get context(){return e(M)},suppressErrors:!0,defaultFormat:"yaml",hideHeader:!0,get editorStateKey(){return e(Ee)},onContextChanged:Ge=>i(M,Ge,!0)})}}),p(ze,st)},$t=ze=>{var st=_n(),at=$e(st);us(at,()=>`${e(L)}:mocks`,Me=>{{let Ee=w(()=>`editorState/mocks/${e(n)}/tests/${e(L)}`);vs(Me,{class:"h-full min-h-0 border-thin border-rc-gray-650 shadow-inner-white-soft backdrop-blur-3xl",get context(){return e(B)},suppressErrors:!0,defaultFormat:"yaml",hideHeader:!0,get editorStateKey(){return e(Ee)},onContextChanged:Ge=>{i(B,Ge,!0),i(H,!0)}})}}),p(ze,st)};O($r,ze=>{e(C)==="context"?ze(Be):ze($t,-1)})}d(Xt),d(Ue),p(At,Ue)};let x=w(()=>{var At;return`Test context — ${((At=e(le))==null?void 0:At.scenario)||"Test"}`});Da(ue,{get title(){return e(x)},onClose:()=>void ba(),children:We})}};O(dn,ue=>{e(L)&&ue(Jr)})}V(()=>{F(Ct,`Pinned: ${e(an)??""}/${e(He).length??""}`),F(xr,`${e(pt).casesPassing??""}/${e(pt).casesTotal??""} cases passing`),F(ir,`${e(pt).attemptsPassing??""}/${e(pt).attemptsTotal??""} attempts
|
|
35
|
+
passing`)}),p(U,Ce)}}),d(gr),d(u),p(a,u)};O(ya,a=>{e(St)&&e(dt)?a(_a):e(St)&&a(wa,1)})}p(t,is),Tn()}Ds(["click","change"]);export{wl as component};
|
package/build/bosun-app/frontend/client/_app/immutable/nodes/{17.BIO8m3DR.js → 17.Bn1yI4kt.js}
RENAMED
|
@@ -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/CCYriF4C.js";import{a as fs}from"../chunks/DnMQeiTY.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/CR-uVjxM.js";import{s as I}from"../chunks/B0nqNj93.js";import{i as D}from"../chunks/BQIf5msi.js";import{e as re,i as hs}from"../chunks/DuQdgMax.js";import{c as mt,s as et}from"../chunks/C9yBjdYI.js";import{s as N}from"../chunks/CR5IRTqC.js";import{b as Be}from"../chunks/ClLUwVGq.js";import{p as $n}from"../chunks/Diqx_kju.js";import{B as Ne}from"../chunks/joiJcRPz.js";import{P as Rn}from"../chunks/DEz15oJb.js";import{g as _r,T as bs}from"../chunks/DjDpMqch.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/BJ9KKLWf.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(`
|
|
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/CCYriF4C.js";import{a as fs}from"../chunks/DnMQeiTY.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/CR-uVjxM.js";import{s as I}from"../chunks/B0nqNj93.js";import{i as D}from"../chunks/BQIf5msi.js";import{e as re,i as hs}from"../chunks/DuQdgMax.js";import{c as mt,s as et}from"../chunks/C9yBjdYI.js";import{s as N}from"../chunks/AmpxVxY6.js";import{b as Be}from"../chunks/ClLUwVGq.js";import{p as $n}from"../chunks/CXS28GEZ.js";import{B as Ne}from"../chunks/BqH4VDQz.js";import{P as Rn}from"../chunks/DEz15oJb.js";import{g as _r,T as bs}from"../chunks/B-5g3xS8.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/BJ9KKLWf.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
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
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&<!=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};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{a as c,t as D,f as x,d as xe,c as Zt,b as ie,e as We}from"../chunks/CCYriF4C.js";import"../chunks/DXsF11_5.js";import{o as Ke,a as qe}from"../chunks/DnMQeiTY.js";import{p as ce,d as Be,j as t,y as f,c as h,f as pt,s as P,n as St,r as _,a as ue,w as te,o as wt,t as j,k as ut,h as u,_ as rt,a4 as F,bf as Ut,bg as Ve,e as He,$ as Ye,T as Ge,bh as fe}from"../chunks/CR-uVjxM.js";import{s as G}from"../chunks/B0nqNj93.js";import{p as et,a as Qe,s as Xe}from"../chunks/BcbX6huO.js";import{i as $}from"../chunks/BQIf5msi.js";import{e as le,i as pe}from"../chunks/DuQdgMax.js";import{h as Ze}from"../chunks/DjujL8K1.js";import{c as tr}from"../chunks/AmpxVxY6.js";import{b as er}from"../chunks/ClLUwVGq.js";import{i as be}from"../chunks/Bp8N7Z1t.js";import{s as rr}from"../chunks/Xf8YUGwh.js";import{g as ve,T as ar}from"../chunks/B-5g3xS8.js";import{i as se}from"../chunks/DgGeUDDh.js";import{b as nr,f as or}from"../chunks/T0seCQS_.js";import{B as xt}from"../chunks/BqH4VDQz.js";import{D as sr}from"../chunks/CkstLsmI.js";import{I as ir,h as ge}from"../chunks/B1MxGo6p.js";import{M as me}from"../chunks/CuwQtXBl.js";import{m as lr}from"../chunks/ddC1NP9R.js";import{C as cr,a as ur,b as dr,f as ye,c as _e}from"../chunks/DzqCKWaI.js";import{s as zt}from"../chunks/C9yBjdYI.js";import{g as fr,c as he}from"../chunks/BJ9KKLWf.js";const pr=()=>{const at=rr;return{page:{subscribe:at.page.subscribe},navigating:{subscribe:at.navigating.subscribe},updated:at.updated}},vr={subscribe(at){return pr().page.subscribe(at)}};var gr=x("<!> <!>",1),mr=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>'),yr=x("<div><!> <!></div>");function _r(at,L){ce(L,!0);let S=et(L,"disabled",3,!1),$t=et(L,"dropdownId",3,"copy-traces-dropdown"),R=te(!1),vt=te(null),nt=te(null),ot=te(null);Be(()=>{S()&&t(R)&&f(R,!1)});async function gt(K){try{const q=K==="with-prompts"?L.getWithPromptsText():L.getWithoutPromptsText();await navigator.clipboard.writeText(q),f(nt,K,!0),t(ot)&&clearTimeout(t(ot)),f(ot,window.setTimeout(()=>{f(nt,null),f(ot,null)},2e3),!0)}catch(q){console.error("Failed to copy traces",q)}}var dt=yr(),Nt=h(dt);xt(Nt,{variant:"secondary",size:"small",get disabled(){return S()},get"aria-expanded"(){return t(R)},"aria-haspopup":"listbox",get"aria-controls"(){return $t()},onclick:K=>{K.stopPropagation(),f(R,!t(R))},class:"flex items-center gap-1",get el(){return t(vt)},set el(K){f(vt,K,!0)},children:(K,q)=>{var g=gr(),Q=pt(g);{var N=A=>{var U=D("Copied traces (without prompts)");c(A,U)},B=A=>{var U=D("Copied traces (with prompts)");c(A,U)},st=A=>{var U=D("Copy traces");c(A,U)};$(Q,A=>{t(nt)==="without-prompts"?A(N):t(nt)==="with-prompts"?A(B,1):A(st,-1)})}var V=P(Q,2);{let A=St(()=>"size-5 text-rc-gray-400 transition-transform duration-200 "+(t(R)?"rotate-180":""));ir(V,{name:"chevron-down",get class(){return t(A)}})}c(K,g)},$$slots:{default:!0}});var p=P(Nt,2);sr(p,{get id(){return $t()},get open(){return t(R)},onClose:()=>f(R,!1),get anchorEl(){return t(vt)},placement:"bottom-end",offset:[0,1],children:q=>{var g=mr(),Q=h(g);xt(Q,{variant:"ghost",size:"small",role:"option",onclick:B=>{B.stopPropagation(),f(R,!1),gt("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:(B,st)=>{wt();var V=D("Without prompts");c(B,V)},$$slots:{default:!0}});var N=P(Q,2);xt(N,{variant:"ghost",size:"small",role:"option",onclick:B=>{B.stopPropagation(),f(R,!1),gt("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:(B,st)=>{wt();var V=D("With prompts");c(B,V)},$$slots:{default:!0}}),_(g),c(q,g)},$$slots:{default:!0}}),_(dt),c(at,dt),ue()}var hr=x("<div> </div>"),xr=x('<div class="mt-1 whitespace-pre-wrap break-words text-xs italic text-rc-gray-200"> </div>'),br=x("<div><!> <!> <!></div>"),Tr=x("<div><div><div> </div> <div><!> <!></div> <!></div></div>"),wr=x('<div class="space-y-3"></div>'),Sr=x('<div class="whitespace-pre-wrap break-words"><!></div>'),$r=x('<button class="inline-flex text-sm text-rc-green-200 hover:text-rc-green-100"> </button>'),Pr=x('<div><span class="whitespace-pre-wrap break-words"><!></span> <!></div>');function Cr(at,L){ce(L,!1);let S=et(L,"value",8,""),$t=et(L,"limit",8,200),R=et(L,"maxLines",8,null),vt=et(L,"className",8,""),nt=et(L,"collapsedLabel",8,"...more"),ot=et(L,"initiallyExpanded",8,!1),gt=et(L,"stopPropagation",8,!0),dt=et(L,"expanded",28,ot),Nt=et(L,"treatPlainText",8,!1),p=et(L,"highlightPrompt",8,!1);function K(s){return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function q(s){const l=g(s);let n=K(l);const d=[];return n=n.replace(/(\{+[\s\S]*?\}+)/g,v=>{const b=d.length;return d.push(v),`__CURLY${b}__`}),n=n.replace(/^(\s*#.*)$/gm,'<span class="prompt-heading">$1</span>'),n=n.replace(/(<[^&]*?>)/g,'<span class="mtk8">$1</span>'),n=n.replace(/^(\s*)(\d+)([.)])(\s+)/gm,(v,b,w,J,ft)=>`${b}<span class="mtk8">${w}${J}</span>${ft}`),d.forEach((v,b)=>{const w=`<span class="mtk5">${v}</span>`;n=n.replace(`__CURLY${b}__`,w)}),n=n.replace(/\n/g,"<br/>"),n}function g(s){let l=s.replace(/\r\n/g,`
|
|
2
|
+
`);return l=l.replace(/\\n/g,`
|
|
3
|
+
`),l}function Q(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 g(l)}if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l)){const n=l.map(d=>(d==null?void 0:d.text)??(d==null?void 0:d.content)??JSON.stringify(d)).join(" ");return g(n)}return g(s)}catch{return g(s)}return g(JSON.stringify(s))}catch{return g(String(s??""))}}function N(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
|
+
`);return g(l)}if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l)){const n=l.map(d=>(d==null?void 0:d.text)??(d==null?void 0:d.content)??JSON.stringify(d)).join(`
|
|
5
|
+
`);return g(n)}return g(s)}catch{return g(s)}return g(JSON.stringify(s,null,2))}catch{return g(String(s??""))}}function B(s){const n=g(s).split(/\n+/).map(w=>w.trim()).filter(w=>w.length>0),d=[];let v,b="";for(const w of n){const J=w.match(/^(user|assistant|system|customer|caller|tool|model|agent)\s*[:\-]\s*(.*)$/i);J?(b&&d.push({text:b,role:v}),v=J[1].toLowerCase(),b=J[2]??""):b?b+=`
|
|
6
|
+
`+w:b=w}return b&&d.push({text:b,role:v}),d}function st(s){try{let l=s;if(typeof s=="string")try{l=JSON.parse(s)}catch{return Nt()?B(s):[]}if(!Array.isArray(l))if(Array.isArray(l==null?void 0:l.messages))l=l.messages;else return[];return l.map(n=>{let d;return(n==null?void 0:n.text)!=null?d=String(n.text):(n==null?void 0:n.content)!=null?Array.isArray(n.content)?d=n.content.map(v=>{var b;return typeof v=="string"?v:typeof(v==null?void 0:v.text)=="string"?v.text:typeof((b=v==null?void 0:v.text)==null?void 0:b.value)=="string"?v.text.value:JSON.stringify(v)}).join(" "):typeof n.content=="string"?d=n.content:d=JSON.stringify(n.content):typeof n=="string"?d=n:d=JSON.stringify(n),{text:g(d),role:n==null?void 0:n.role,time:n==null?void 0:n.time,duration:n==null?void 0:n.duration}}).filter(n=>n.text&&String(n.text).trim().length>0)}catch{return[]}}const V=()=>Q(S()),A=()=>N(S()),U=()=>V().split(`
|
|
7
|
+
`),kt=()=>st(S()),Ft=()=>kt().length>0,m=()=>R()!=null?U().length>R():V().length>$t(),At=()=>{const s=V();return m()?R()!=null?U().slice(0,R()).join(`
|
|
8
|
+
`):s.slice(0,$t()):s};function It(s){if(!s)return null;try{const l=new Date(s);return Number.isNaN(l.getTime())?s:l.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return s}}function Pt(s){if(s==null||!Number.isFinite(s))return null;const l=Number(s),n=Math.floor(l),d=Math.floor(n/60),v=n%60,b=String(d).padStart(2,"0"),w=String(v).padStart(2,"0");return`${b}:${w}`}function Dt(s){if(!s)return"Assistant";const l=s.trim();return l?l.charAt(0).toUpperCase()+l.slice(1):"Assistant"}function Wt(s){const l=(s==null?void 0:s.toLowerCase())??"";return l==="user"||l==="customer"||l==="caller"}function H(s){const l=[];return{main:s.replace(/<([^>]+)>/g,(d,v)=>{const b=String(v).trim();return b&&l.push(b),""}).trim(),system:l}}function mt(s){gt()&&s.stopPropagation(),dt(!dt())}function yt(s){gt()&&s.stopPropagation()}be();var bt=Zt(),Ct=pt(bt);{var Vt=s=>{var l=Zt(),n=pt(l);{var d=w=>{var J=wr();le(J,5,()=>u(kt),pe,(ft,T)=>{const k=rt(()=>(t(T),u(()=>Wt(t(T).role)))),E=rt(()=>(t(T),u(()=>(t(T).role??"").toLowerCase()==="system"))),Y=rt(()=>(t(T),u(()=>H(t(T).text)))),it=rt(()=>(t(T),u(()=>It(t(T).time)))),Et=rt(()=>(t(T),u(()=>Pt(t(T).duration))));var Ot=Tr(),Kt=h(Ot),Rt=h(Kt),ee=h(Rt,!0);_(Rt);var Jt=P(Rt,2),Yt=h(Jt);{var Gt=X=>{var Z=hr(),lt=h(Z,!0);_(Z),j(()=>G(lt,(ut(t(Y)),u(()=>t(Y).main)))),c(X,Z)};$(Yt,X=>{ut(t(Y)),u(()=>t(Y).main)&&X(Gt)})}var re=P(Yt,2);le(re,1,()=>(ut(t(Y)),u(()=>t(Y).system)),pe,(X,Z)=>{var lt=xr(),Tt=h(lt);_(lt),j(()=>G(Tt,`<${t(Z)??""}>`)),c(X,lt)}),_(Jt);var Qt=P(Jt,2);{var ae=X=>{var Z=br(),lt=h(Z);{var Tt=tt=>{var _t=D();j(()=>G(_t,t(it))),c(tt,_t)};$(lt,tt=>{t(it)&&tt(Tt)})}var Mt=P(lt,2);{var qt=tt=>{var _t=D("·");c(tt,_t)};$(Mt,tt=>{t(it)&&t(Et)&&tt(qt)})}var Bt=P(Mt,2);{var ne=tt=>{var _t=D();j(()=>G(_t,t(Et))),c(tt,_t)};$(Bt,tt=>{t(Et)&&tt(ne)})}_(Z),j(()=>zt(Z,1,`mt-1 text-xs text-rc-gray-300 ${t(k)?"text-right":"text-left"}`)),c(X,Z)};$(Qt,X=>{(t(it)||t(Et))&&X(ae)})}_(Kt),_(Ot),j(X=>{zt(Ot,1,`flex ${t(k)?"justify-end":"justify-start"}`),zt(Kt,1,`max-w-[70%] break-words rounded-md px-3 py-2 text-sm shadow-sm ${t(k)?"bg-rc-gray-600 text-rc-gray-100":"bg-rc-gray-700 text-rc-gray-100"}`),zt(Rt,1,`my-1 text-xs font-semibold uppercase ${t(E)?"text-rc-blue "+(t(k)?"text-right":"text-left"):"text-rc-green-200 "+(t(k)?"text-right":"text-left")}`),G(ee,X),zt(Jt,1,`whitespace-pre-wrap break-words py-1 text-sm ${t(k)?"text-justify":"text-left"} ${t(E)?"italic text-rc-gray-200":""}`)},[()=>(t(T),u(()=>Dt(t(T).role)))]),c(ft,Ot)}),_(J),c(w,J)},v=St(()=>u(Ft)),b=w=>{var J=Sr(),ft=h(J);{var T=E=>{var Y=Zt(),it=pt(Y);ge(it,()=>u(()=>q(A()))),c(E,Y)},k=E=>{var Y=D();j(it=>G(Y,it),[()=>u(A)]),c(E,Y)};$(ft,E=>{p()?E(T):E(k,-1)})}_(J),c(w,J)};$(n,w=>{t(v)?w(d):w(b,-1)})}c(s,l)},Ht=s=>{var l=Pr(),n=h(l),d=h(n);{var v=T=>{var k=Zt(),E=pt(k);ge(E,()=>u(()=>q(At()))),c(T,k)},b=T=>{var k=D();j(E=>G(k,E),[()=>u(At)]),c(T,k)};$(d,T=>{p()?T(v):T(b,-1)})}_(n);var w=P(n,2);{var J=T=>{var k=$r(),E=h(k,!0);_(k),j(()=>G(E,nt())),ie("click",k,mt),c(T,k)},ft=St(()=>u(m));$(w,T=>{t(ft)&&T(J)})}_(l),j(()=>zt(l,1,`mt-1 cursor-text select-text rounded bg-rc-gray-900 p-2 text-sm text-rc-gray-200 ${vt()}`)),ie("click",l,yt),c(s,l)};$(Ct,s=>{dt()?s(Vt):s(Ht,-1)})}c(at,bt),ue()}xe(["click"]);var Lr=x('<span class="text-rc-gray-100">for conversation Id:</span> <span class="text-rc-green-200"> </span>',1),Nr=x('<div class="flex flex-wrap items-center gap-2"><!> <!> <!></div>'),kr=x('<div class="mt-2 text-sm text-rc-gray-400">Loading call details…</div>'),Ar=x('<div class="mt-2 text-sm text-rc-gray-300"> </div>'),Ir=x('<div class="py-8 text-center text-rc-gray-300">No conversation selected</div>'),Er=x('<div class="py-8 text-center text-rc-gray-200">Loading traces...</div>'),Or=x('<div class="z-50 py-8 text-center text-red-400"> </div>'),Rr=x('<div class="py-8 text-center text-rc-gray-300">No traces found</div>'),Jr=x('<div class="my-3 flex w-full justify-center"><div class="rounded-full border border-rc-gray-650 bg-rc-gray-900/40 px-3 py-1 text-xs text-rc-gray-200"> </div></div>'),Mr=x('<div class="my-3 flex w-full justify-center"><div class="rounded-full border border-red-500 bg-red-950/30 px-3 py-1 text-xs font-semibold text-red-200"> </div></div>'),jr=x("<!> <!> <!>",1),Ur=x("<div></div>"),zr=x('<audio class="w-full" controls=""></audio>'),Fr=x('<!> <div class="mt-3 break-all text-sm text-rc-gray-300"> </div>',1),Dr=x("<!> <!>",1),Wr=x('<div class="rc-scroll flex max-h-[60vh] flex-col gap-4 overflow-scroll p-2"><!></div>'),Kr=x('<div class="flex w-full items-center justify-end gap-5"><!> <!></div>'),qr=x('<div class="flex h-full w-full 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"><h2 class="text-lg font-semibold text-rc-gray-100">Traces <!></h2> <!></div> <!></div> <div class="rc-scroll min-h-0 flex-1 overflow-scroll p-4"><!></div></div> <!> <!>',1);function ma(at,L){ce(L,!1);const S=()=>Qe(vr,"$page",$t),[$t,R]=Xe(),vt=F();let nt=et(L,"useMock",8,!1);const ot=fr(),gt=ve()??"",dt=S().params.conversationId??"",Nt=he(dt,nt()?"__mock__":gt),p=ot.traces.get(Nt),K=!!(p!=null&&p.tracesLoaded)&&!(p!=null&&p.hasMoreTraces),q=new ar(fetch);q.setSourceId(gt||void 0);let g=F((p==null?void 0:p.traces)??[]),Q=F((p==null?void 0:p.latencyTraces)??[]),N=F([]),B=F(new Map),st=F(!1),V=K,A=F((p==null?void 0:p.tracesError)??null),U=F(K?dt:null),kt=(p==null?void 0:p.lastTraceId)??null,Ft=(p==null?void 0:p.hasMoreTraces)??!1,m=F((p==null?void 0:p.conversation)??null),At=F(!1),It=(p==null?void 0:p.conversationLoaded)??!1,Pt=F((p==null?void 0:p.conversationError)??null),Dt=F(""),Wt=F(null),H=F(null),mt=F(!1),yt=F(!1),bt=0,Ct=0;const Vt=new WeakMap;let Ht=0;function s(e){const r=ve()??gt;return he(e,nt()?"__mock__":r)}function l(e=t(U)){var o,i;if(!e)return;const r=s(e),a=ot.traces.get(r);ot.traces.set(r,{traces:t(g),latencyTraces:t(Q),tracesLoaded:V,tracesError:t(A),lastTraceId:kt,hasMoreTraces:Ft,conversation:t(m),conversationLoaded:It,conversationError:t(Pt),scrollTop:(a==null?void 0:a.scrollTop)??((o=t(H))==null?void 0:o.scrollTop)??0,scrollLeft:(a==null?void 0:a.scrollLeft)??((i=t(H))==null?void 0:i.scrollLeft)??0})}async function n(e){e&&(await Ge(),t(H)&&(fe(H,t(H).scrollTop=e.scrollTop),fe(H,t(H).scrollLeft=e.scrollLeft)))}function d(){if(!t(U)||!t(H))return;const e=ot.traces.get(s(t(U)));if(!e){l();return}e.scrollTop=t(H).scrollTop,e.scrollLeft=t(H).scrollLeft}function v(e){if(typeof e!="string")return null;const r=e.trim();return r||null}function b(e){return`${Math.round(e)} ms`}function w(e){const r=v(e==null?void 0:e.traceId);if(r)return r;const a=Vt.get(e);if(a)return a;Ht+=1;const o=`synthetic-${e.traceType}-${e.createdAt}-${Ht}`;return Vt.set(e,o),o}function J(e){const r=new Set;return e.filter(a=>{const o=v(a==null?void 0:a.traceId);return o?r.has(o)?!1:(r.add(o),!0):!0})}function ft(e){return e?t(g):t(g).map(r=>{if(r.traceType!=="STEP")return r;const{receivedPrompt:a,renderedPrompt:o,...i}=r;return i})}function T(e){return e&&typeof e.renderedPrompt=="string"?e.renderedPrompt:null}function k(e,r){for(let a=r-1;a>=0;a--){const o=e[a];if(o.traceType!=="STEP")continue;const i=o;if(se(i.name)&&T(i))return i}for(let a=r-1;a>=0;a--){const o=e[a];if(o.traceType!=="STEP")continue;const i=o;if(i.name==="prewarm"&&T(i))return i}return null}function E(e){return!!(e!=null&&e.audioUrl&&String(e.audioUrl).trim())}function Y(e){return/^https?:\/\//i.test(e??"")}function it(e){const r=e==null?void 0:e.transcript;return typeof r=="string"?r.trim()!=="":Array.isArray(r)?r.length>0:!1}function Et(e){const r=e==null?void 0:e.transcript;return r?typeof r=="string"?r:Array.isArray(r)?r.map(a=>{const o=typeof(a==null?void 0:a.time)=="string"?a.time:"",i=typeof(a==null?void 0:a.role)=="string"?a.role:"",y=typeof(a==null?void 0:a.text)=="string"?a.text:"",I=[o,i].filter(Boolean).join(" • ");return I?`${I}
|
|
9
|
+
${y}`:y}).join(`
|
|
10
|
+
|
|
11
|
+
`):"":""}async function Ot(){try{await navigator.clipboard.writeText(Et(t(m)))}catch(e){console.error("Failed to copy transcript",e)}}async function Kt(){var e;try{const r=(e=t(m))==null?void 0:e.audioUrl;if(!r)return;await navigator.clipboard.writeText(r)}catch(r){console.error("Failed to copy recording URL",r)}}function Rt(e){return e.traceType!=="CONVERSATIONAL"?!1:e.eventName==="received-message"||e.eventName==="llm-handler-stream-requested"||e.eventName==="finished-main-streaming-step"||e.eventName==="sent-message"||e.eventName==="transfer-requested"||e.eventName==="hangup-requested"}function ee(e,r){const a=new Map;for(const o of nr(r)){if(!o.isHigh)continue;const i=or(e,o);if(!i)continue;const y=w(i),I=a.get(y);(!I||o.durationMs>I.durationMs)&&a.set(y,{id:o.id,durationMs:o.durationMs})}return a}function Jt(e){return t(B).get(w(e))??null}const Yt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Gt(e){if(typeof e!="number"||!Number.isFinite(e))return null;const r=new Date(e);if(Number.isNaN(r.getTime()))return null;const a=r.getFullYear(),o=String(r.getMonth()+1).padStart(2,"0"),i=String(r.getDate()).padStart(2,"0");return`${a}-${o}-${i}`}function re(e){if(typeof e!="number"||!Number.isFinite(e))return null;const r=new Date(e);if(Number.isNaN(r.getTime()))return null;const a=r.getDate(),o=Yt[r.getMonth()],i=r.getFullYear();return`${a} ${o} ${i}`}async function Qt(e){const r=++Ct;f(At,!0),It=!1,f(Pt,null),f(m,null);try{if(nt())return;const a=await q.getConversation(e);if(r!==Ct)return;f(m,a),It=!0}catch(a){if(r!==Ct)return;f(Pt,a.message),f(m,null)}finally{if(r!==Ct)return;f(At,!1),l(e)}}async function ae(e){const r=[];let a;const o=new Set;for(;;){const i=await q.getLatencyTraces(e,500,a);if(r.push(...i.items??[]),a=i.lastTraceId,!a)break;if(o.has(a))throw new Error("Telescope latency pagination repeated a cursor");o.add(a)}return r}async function X(e){const r=[];let a;const o=new Set;for(;;){const i=await q.getTraces(e,100,a);r.push(...i.items??[]);const y=i.lastTraceId;if(!y)break;if(o.has(y))throw new Error("Telescope trace pagination repeated a cursor");o.add(y),a=y}return r}async function Z(e){if(!e||e===t(U))return;const r=++bt;f(U,e),f(st,!0),V=!1,f(A,null),kt=null,Ft=!1,f(Q,[]),f(mt,!1),f(yt,!1),Qt(e);try{let a=[],o=[];if(nt())a=(await lr.fetchTraces(e)).items??[];else{const[i,y]=await Promise.all([X(e),ae(e).catch(I=>(console.error("Failed to load latency traces for chat warnings:",I),[]))]);a=i,o=y}if(r!==bt)return;kt=null,Ft=!1,f(Q,o),f(g,J(a).slice().sort((i,y)=>i.createdAt-y.createdAt)),V=!0}catch(a){if(r!==bt)return;f(A,a.message),f(g,[]),console.error("Failed to load traces:",a)}finally{if(r!==bt)return;f(st,!1),l(e)}}Ke(()=>{const e=S().params.conversationId;e&&(V?It||Qt(e):Z(e),n(p))}),qe(()=>{l(),bt+=1,Ct+=1}),Ut(()=>t(g),()=>{f(N,t(g).filter(e=>e.traceType==="API_CALL"||e.traceType==="STEP"||Rt(e)))}),Ut(()=>(t(N),t(Q)),()=>{f(B,ee(t(N),t(Q)))}),Ut(()=>(S(),t(m)),()=>{var e;f(Dt,v(S().url.searchParams.get("agent"))??v((e=t(m))==null?void 0:e.agentId)??"")}),Ut(()=>S(),()=>{f(Wt,v(S().url.searchParams.get("region")))}),Ut(()=>(S(),t(m)),()=>{var e;f(vt,v(S().url.searchParams.get("variant"))??v((e=t(m))==null?void 0:e.variantId)??null)}),Ut(()=>(S(),t(U)),()=>{const e=S().params.conversationId;e&&e!==t(U)&&Z(e)}),Ve(),be();var lt=qr();Ze("1uatba4",e=>{He(()=>{Ye.title="Bosun: Telescope"})});var Tt=pt(lt),Mt=h(Tt),qt=h(Mt),Bt=h(qt),ne=P(h(Bt));{var tt=e=>{var r=Lr(),a=P(pt(r),2),o=h(a,!0);_(a),j(()=>G(o,(S(),u(()=>S().params.conversationId)))),c(e,r)};$(ne,e=>{S(),u(()=>S().params.conversationId)&&e(tt)})}_(Bt);var _t=P(Bt,2);{var Te=e=>{var r=Nr(),a=h(r);{var o=C=>{xt(C,{variant:"secondary",size:"small",onclick:()=>f(mt,!0),children:(z,jt)=>{wt();var ht=D("Recording");c(z,ht)},$$slots:{default:!0}})},i=St(()=>(t(m),u(()=>E(t(m)))));$(a,C=>{t(i)&&C(o)})}var y=P(a,2);{var I=C=>{xt(C,{variant:"secondary",size:"small",onclick:()=>f(yt,!0),children:(z,jt)=>{wt();var ht=D("Transcript");c(z,ht)},$$slots:{default:!0}})},O=St(()=>(t(m),u(()=>it(t(m)))));$(y,C=>{t(O)&&C(I)})}var W=P(y,2);{let C=rt(()=>(t(g),t(st),u(()=>!t(g).length||t(st))));_r(W,{get disabled(){return t(C)},getWithPromptsText:()=>JSON.stringify(ft(!0),null,2),getWithoutPromptsText:()=>JSON.stringify(ft(!1),null,2)})}_(r),c(e,r)};$(_t,e=>{S(),u(()=>S().params.conversationId)&&e(Te)})}_(qt);var we=P(qt,2);{var Se=e=>{var r=kr();c(e,r)},$e=e=>{var r=Ar(),a=h(r);_(r),j(()=>G(a,`Call details unavailable: ${t(Pt)??""}`)),c(e,r)};$(we,e=>{t(At)?e(Se):t(Pt)&&e($e,1)})}_(Mt);var Xt=P(Mt,2),Pe=h(Xt);{var Ce=e=>{var r=Ir();c(e,r)},Le=e=>{var r=Er();c(e,r)},Ne=e=>{var r=Or(),a=h(r);_(r),j(()=>G(a,`Error: ${t(A)??""}`)),c(e,r)},ke=e=>{var r=Rr();c(e,r)},Ae=e=>{var r=Ur();le(r,7,()=>t(N),a=>w(a),(a,o,i)=>{const y=rt(()=>(t(o),u(()=>Gt(t(o).createdAt)))),I=rt(()=>(ut(t(i)),t(N),u(()=>t(i)>0?Gt(t(N)[t(i)-1].createdAt):null))),O=rt(()=>(t(o),u(()=>re(t(o).createdAt)))),W=rt(()=>(t(o),u(()=>Jt(t(o)))));var C=jr(),z=pt(C);{var jt=M=>{var ct=Jr(),Lt=h(ct),oe=h(Lt,!0);_(Lt),_(ct),j(()=>G(oe,t(O))),c(M,ct)};$(z,M=>{t(y)&&t(O)&&t(y)!==t(I)&&M(jt)})}var ht=P(z,2);{var Me=M=>{cr(M,{get trace(){return t(o)}})},je=M=>{{let ct=rt(()=>(ut(ye),t(N),ut(t(i)),u(()=>ye(t(N),t(i))))),Lt=rt(()=>(ut(se),t(o),t(N),ut(t(i)),u(()=>se(t(o).name)?k(t(N),t(i)):null)));ur(M,{get trace(){return t(o)},get agentId(){return t(Dt)},get region(){return t(Wt)},get variant(){return t(vt)},get fallbackConversation(){return t(ct)},get compareTrace(){return t(Lt)},testCreationMode:"pii-sanitized"})}},Ue=M=>{{let ct=rt(()=>(ut(_e),t(N),ut(t(i)),u(()=>_e(t(N),t(i)))));dr(M,{get trace(){return t(o)},context:null,get agentId(){return t(Dt)},get region(){return t(Wt)},get variant(){return t(vt)},get testSourceStep(){return t(ct)},get testEntries(){return t(N)},requireTestSourceStep:!0,testCreationMode:"pii-sanitized"})}};$(ht,M=>{t(o),u(()=>t(o).traceType==="API_CALL")?M(Me):(t(o),u(()=>t(o).traceType==="STEP")?M(je,1):M(Ue,-1))})}var ze=P(ht,2);{var Fe=M=>{var ct=Mr(),Lt=h(ct),oe=h(Lt);_(Lt),_(ct),j(De=>G(oe,`High response latency: ${De??""}`),[()=>(ut(t(W)),u(()=>b(t(W).durationMs)))]),c(M,ct)};$(ze,M=>{t(W)&&M(Fe)})}c(a,C)}),_(r),c(e,r)};$(Pe,e=>{S(),u(()=>!S().params.conversationId)?e(Ce):t(st)?e(Le,1):t(A)?e(Ne,2):(t(N),u(()=>!t(N).length)?e(ke,3):e(Ae,-1))})}_(Xt),er(Xt,e=>f(H,e),()=>t(H)),_(Tt);var de=P(Tt,2);{var Ie=e=>{me(e,{title:"Recording",class:"!max-w-3xl",get open(){return t(mt)},set open(o){f(mt,o)},children:o=>{var i=Fr(),y=pt(i);{var I=z=>{var jt=zr();j(()=>tr(jt,"src",(t(m),u(()=>{var ht;return(ht=t(m))==null?void 0:ht.audioUrl})))),c(z,jt)},O=St(()=>(t(m),u(()=>{var z;return Y((z=t(m))==null?void 0:z.audioUrl)})));$(y,z=>{t(O)&&z(I)})}var W=P(y,2),C=h(W,!0);_(W),j(()=>G(C,(t(m),u(()=>{var z;return(z=t(m))==null?void 0:z.audioUrl})))),c(o,i)},footer:o=>{var i=Dr(),y=pt(i);xt(y,{variant:"secondary",size:"small",onclick:Kt,children:(O,W)=>{wt();var C=D("Copy URL");c(O,C)},$$slots:{default:!0}});var I=P(y,2);xt(I,{variant:"secondary",size:"small",onclick:()=>f(mt,!1),children:(O,W)=>{wt();var C=D("Close");c(O,C)},$$slots:{default:!0}}),c(o,i)},$$slots:{default:!0,footer:!0},$$legacy:!0})},Ee=St(()=>(t(mt),t(m),u(()=>t(mt)&&E(t(m)))));$(de,e=>{t(Ee)&&e(Ie)})}var Oe=P(de,2);{var Re=e=>{me(e,{title:"Transcript",class:"!max-w-4xl",get open(){return t(yt)},set open(o){f(yt,o)},children:o=>{var i=Wr(),y=h(i);{var I=O=>{Cr(O,{get value(){return t(m),u(()=>t(m).transcript)},limit:500,expanded:!0})};$(y,O=>{t(m),u(()=>{var W;return typeof((W=t(m))==null?void 0:W.transcript)=="string"})&&O(I)})}_(i),c(o,i)},footer:o=>{var i=Kr(),y=h(i);xt(y,{onclick:Ot,children:(O,W)=>{wt();var C=D("Copy transcript");c(O,C)},$$slots:{default:!0}});var I=P(y,2);xt(I,{variant:"secondary",onclick:()=>f(yt,!1),children:(O,W)=>{wt();var C=D("Close");c(O,C)},$$slots:{default:!0}}),_(i),c(o,i)},$$slots:{default:!0,footer:!0},$$legacy:!0})},Je=St(()=>(t(yt),t(m),u(()=>t(yt)&&it(t(m)))));$(Oe,e=>{t(Je)&&e(Re)})}ie("click",Tt,e=>e.stopPropagation()),We("scroll",Xt,d),c(at,lt),ue(),R()}xe(["click"]);export{ma as component};
|