{"version":3,"sources":["../../src/voice/agent_session_default_vad.test.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Tests for the bundled-default VAD and turn-detection behavior on `AgentSession`.\n *\n * Port of six test additions on `tests/test_agent_session.py`:\n *\n * - `test_default_vad_is_auto_provisioned`\n * - `test_explicit_vad_none_opts_out`\n * - `test_user_supplied_vad_keeps_using_default_false`\n * - `test_default_turn_detection_builds_default_eot`\n * - `test_turn_detection_none_opts_out`\n * - `test_user_supplied_turn_detector_passes_through`\n */\nimport { describe, expect, it } from 'vitest';\nimport { TurnDetector } from '../inference/eot/detector.js';\nimport type { VADStream } from '../vad.js';\nimport { VAD as BaseVAD } from '../vad.js';\nimport { AgentSession } from './agent_session.js';\n\nclass FakeVAD extends BaseVAD {\n  label = 'FakeVAD';\n  constructor() {\n    super({ updateInterval: 32 });\n  }\n  stream(): VADStream {\n    throw new Error('not used in this test');\n  }\n}\n\ndescribe('AgentSession default VAD', () => {\n  it('auto-provisions a default VAD when none passed', async () => {\n    const session = new AgentSession();\n    try {\n      expect(session.vad).toBeDefined();\n      expect(session._usingDefaultVad).toBe(true);\n    } finally {\n      await session.close().catch(() => {});\n    }\n  });\n\n  it('explicit `vad: null` opts out', async () => {\n    const session = new AgentSession({ vad: null });\n    try {\n      expect(session.vad).toBeUndefined();\n      expect(session._usingDefaultVad).toBe(false);\n    } finally {\n      await session.close().catch(() => {});\n    }\n  });\n\n  it('user-supplied VAD keeps _usingDefaultVad false', async () => {\n    const userVad = new FakeVAD();\n    const session = new AgentSession({ vad: userVad });\n    try {\n      expect(session.vad).toBe(userVad);\n      expect(session._usingDefaultVad).toBe(false);\n    } finally {\n      await session.close().catch(() => {});\n    }\n  });\n});\n\ndescribe('AgentSession default turn detection', () => {\n  it('auto-provisions a default TurnDetector when none given', async () => {\n    const session = new AgentSession();\n    try {\n      expect(session.turnDetection).toBeInstanceOf(TurnDetector);\n    } finally {\n      await session.close().catch(() => {});\n    }\n  });\n\n  it('explicit `turnDetection: null` opts out (no default detector built)', async () => {\n    // `null` is the explicit opt-out, distinct from `undefined` (not given).\n    const session = new AgentSession({ turnHandling: { turnDetection: null } });\n    try {\n      expect(session.turnDetection).toBeUndefined();\n    } finally {\n      await session.close().catch(() => {});\n    }\n  });\n\n  it('passes a user-supplied turn detector through unchanged', async () => {\n    const userDetector = new TurnDetector({ version: 'v1-mini' });\n    const session = new AgentSession({ turnHandling: { turnDetection: userDetector } });\n    try {\n      expect(session.turnDetection).toBe(userDetector);\n    } finally {\n      await session.close().catch(() => {});\n    }\n  });\n});\n"],"mappings":";AAgBA,oBAAqC;AACrC,sBAA6B;AAE7B,iBAA+B;AAC/B,2BAA6B;AAE7B,MAAM,gBAAgB,WAAAA,IAAQ;AAAA,EAC5B,QAAQ;AAAA,EACR,cAAc;AACZ,UAAM,EAAE,gBAAgB,GAAG,CAAC;AAAA,EAC9B;AAAA,EACA,SAAoB;AAClB,UAAM,IAAI,MAAM,uBAAuB;AAAA,EACzC;AACF;AAAA,IAEA,wBAAS,4BAA4B,MAAM;AACzC,wBAAG,kDAAkD,YAAY;AAC/D,UAAM,UAAU,IAAI,kCAAa;AACjC,QAAI;AACF,gCAAO,QAAQ,GAAG,EAAE,YAAY;AAChC,gCAAO,QAAQ,gBAAgB,EAAE,KAAK,IAAI;AAAA,IAC5C,UAAE;AACA,YAAM,QAAQ,MAAM,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACtC;AAAA,EACF,CAAC;AAED,wBAAG,iCAAiC,YAAY;AAC9C,UAAM,UAAU,IAAI,kCAAa,EAAE,KAAK,KAAK,CAAC;AAC9C,QAAI;AACF,gCAAO,QAAQ,GAAG,EAAE,cAAc;AAClC,gCAAO,QAAQ,gBAAgB,EAAE,KAAK,KAAK;AAAA,IAC7C,UAAE;AACA,YAAM,QAAQ,MAAM,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACtC;AAAA,EACF,CAAC;AAED,wBAAG,kDAAkD,YAAY;AAC/D,UAAM,UAAU,IAAI,QAAQ;AAC5B,UAAM,UAAU,IAAI,kCAAa,EAAE,KAAK,QAAQ,CAAC;AACjD,QAAI;AACF,gCAAO,QAAQ,GAAG,EAAE,KAAK,OAAO;AAChC,gCAAO,QAAQ,gBAAgB,EAAE,KAAK,KAAK;AAAA,IAC7C,UAAE;AACA,YAAM,QAAQ,MAAM,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACtC;AAAA,EACF,CAAC;AACH,CAAC;AAAA,IAED,wBAAS,uCAAuC,MAAM;AACpD,wBAAG,0DAA0D,YAAY;AACvE,UAAM,UAAU,IAAI,kCAAa;AACjC,QAAI;AACF,gCAAO,QAAQ,aAAa,EAAE,eAAe,4BAAY;AAAA,IAC3D,UAAE;AACA,YAAM,QAAQ,MAAM,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACtC;AAAA,EACF,CAAC;AAED,wBAAG,uEAAuE,YAAY;AAEpF,UAAM,UAAU,IAAI,kCAAa,EAAE,cAAc,EAAE,eAAe,KAAK,EAAE,CAAC;AAC1E,QAAI;AACF,gCAAO,QAAQ,aAAa,EAAE,cAAc;AAAA,IAC9C,UAAE;AACA,YAAM,QAAQ,MAAM,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACtC;AAAA,EACF,CAAC;AAED,wBAAG,0DAA0D,YAAY;AACvE,UAAM,eAAe,IAAI,6BAAa,EAAE,SAAS,UAAU,CAAC;AAC5D,UAAM,UAAU,IAAI,kCAAa,EAAE,cAAc,EAAE,eAAe,aAAa,EAAE,CAAC;AAClF,QAAI;AACF,gCAAO,QAAQ,aAAa,EAAE,KAAK,YAAY;AAAA,IACjD,UAAE;AACA,YAAM,QAAQ,MAAM,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACtC;AAAA,EACF,CAAC;AACH,CAAC;","names":["BaseVAD"]}