{"version":3,"sources":["../../../src/inference/interruption/interruption_stream.test.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { describe, expect, it, vi } from 'vitest';\nimport type { InterruptionMetrics } from '../../metrics/base.js';\nimport { MockWebSocket } from './_mock_ws.js';\nimport { AdaptiveInterruptionDetector } from './interruption_detector.js';\nimport { InterruptionStreamBase, InterruptionStreamSentinel } from './interruption_stream.js';\n\nvi.mock('ws', async () => {\n  const { MockWebSocket } = await import('./_mock_ws.js');\n  return { default: MockWebSocket, WebSocket: MockWebSocket };\n});\n\ndescribe('InterruptionStreamBase metrics', () => {\n  it('does not count agent-ended overlap as a backchannel', async () => {\n    MockWebSocket.instances.length = 0;\n    const detector = new AdaptiveInterruptionDetector({\n      apiKey: 'test-key',\n      apiSecret: 'test-secret',\n      baseUrl: 'http://localhost:9999',\n    });\n    const stream = new InterruptionStreamBase(detector, {});\n    const metrics: InterruptionMetrics[] = [];\n    detector.on('metrics_collected', (event) => metrics.push(event));\n    const reader = stream.stream().getReader();\n\n    try {\n      await vi.waitFor(() => expect(MockWebSocket.instances).toHaveLength(1));\n      MockWebSocket.instances[0]!.simulateOpen();\n      const event = reader.read();\n      await stream.pushFrame(InterruptionStreamSentinel.agentSpeechStarted());\n      await stream.pushFrame(InterruptionStreamSentinel.overlapSpeechStarted(0, Date.now()));\n      await stream.pushFrame(InterruptionStreamSentinel.overlapSpeechEnded(Date.now(), true));\n      await event;\n\n      expect(metrics).toHaveLength(1);\n      expect(metrics[0]).toMatchObject({ numInterruptions: 0, numBackchannels: 0 });\n    } finally {\n      await reader.cancel();\n      await stream.close();\n    }\n  });\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA,oBAAyC;AAEzC,qBAA8B;AAC9B,mCAA6C;AAC7C,iCAAmE;AAEnE,iBAAG,KAAK,MAAM,YAAY;AACxB,QAAM,EAAE,eAAAA,eAAc,IAAI,MAAM,OAAO,eAAe;AACtD,SAAO,EAAE,SAASA,gBAAe,WAAWA,eAAc;AAC5D,CAAC;AAAA,IAED,wBAAS,kCAAkC,MAAM;AAC/C,wBAAG,uDAAuD,YAAY;AACpE,iCAAc,UAAU,SAAS;AACjC,UAAM,WAAW,IAAI,0DAA6B;AAAA,MAChD,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AACD,UAAM,SAAS,IAAI,kDAAuB,UAAU,CAAC,CAAC;AACtD,UAAM,UAAiC,CAAC;AACxC,aAAS,GAAG,qBAAqB,CAAC,UAAU,QAAQ,KAAK,KAAK,CAAC;AAC/D,UAAM,SAAS,OAAO,OAAO,EAAE,UAAU;AAEzC,QAAI;AACF,YAAM,iBAAG,QAAQ,UAAM,sBAAO,6BAAc,SAAS,EAAE,aAAa,CAAC,CAAC;AACtE,mCAAc,UAAU,CAAC,EAAG,aAAa;AACzC,YAAM,QAAQ,OAAO,KAAK;AAC1B,YAAM,OAAO,UAAU,sDAA2B,mBAAmB,CAAC;AACtE,YAAM,OAAO,UAAU,sDAA2B,qBAAqB,GAAG,KAAK,IAAI,CAAC,CAAC;AACrF,YAAM,OAAO,UAAU,sDAA2B,mBAAmB,KAAK,IAAI,GAAG,IAAI,CAAC;AACtF,YAAM;AAEN,gCAAO,OAAO,EAAE,aAAa,CAAC;AAC9B,gCAAO,QAAQ,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;AAAA,IAC9E,UAAE;AACA,YAAM,OAAO,OAAO;AACpB,YAAM,OAAO,MAAM;AAAA,IACrB;AAAA,EACF,CAAC;AACH,CAAC;","names":["MockWebSocket"]}