A framework for building realtime voice AI agents 🤖🎙️📹
This report presents the forensic synthetic code analysis of livekit/agents, a Python project with 13,322 GitHub stars. SynthScan v2.0 examined 248,666 lines of code across 1220 source files, recording 6171 pattern matches distributed across 23 syntactic categories. The overall adjusted score of 31.7 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 6171 distinct pattern matches across 23 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_plugin_inworld_tts.py | 18 | async def test_delivery_mode_default_not_given(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 25 | async def test_delivery_mode_set_on_init(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 32 | async def test_delivery_mode_accepts_all_documented_values(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 40 | async def test_delivery_mode_rejects_unknown_value(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 47 | async def test_delivery_mode_update_options(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 59 | async def _capture_first_ws_create_packet(opts) -> dict: | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 99 | async def test_ws_create_packet_includes_delivery_mode(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 121 | async def test_ws_create_packet_omits_delivery_mode_when_not_given(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 141 | def _patch_session_to_capture_post(tts, captured: dict[str, object]) -> None: | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 164 | async def test_http_body_includes_delivery_mode(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 183 | async def test_http_body_omits_delivery_mode_when_not_given(): | CODE |
| LOW⚡ | tests/test_inference_avatar.py | 91 | def test_image_url_and_model_id_conflict_raises(self) -> None: | CODE |
| LOW⚡ | tests/test_inference_avatar.py | 99 | def test_extra_kwargs_is_copied(self) -> None: | CODE |
| LOW⚡ | tests/test_inference_avatar.py | 107 | async def test_extra_kwargs_splits_known_and_unknown_keys() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 54 | def test_invalid_provider_raises(self, model: str) -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 60 | def test_defaults_and_identity(self) -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 154 | async def test_create_session_success() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 199 | async def test_avatar_id_from_model_string() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 214 | async def test_idempotency_key_stable_across_retries() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 236 | async def test_non_retryable_error_not_retried() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 256 | async def test_server_error_retried_then_raised() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 331 | async def test_start_uses_response_sample_rate(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 369 | async def test_start_sends_mint_inputs_and_no_token( | CODE |
| LOW | tests/test_inference_avatar.py | 404 | async def test_start_without_livekit_url_raises(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 461 | async def test_start_ids_set_before_audio_rebind(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 514 | async def test_start_standalone_connected_room(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 549 | async def test_start_standalone_disconnected_room_raises(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 564 | async def test_aclose_terminates_session() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 592 | async def test_aclose_skips_terminate_without_token() -> None: | CODE |
| LOW | tests/test_inference_avatar.py | 610 | async def test_aclose_terminate_failure_keeps_ids_and_runs_base_cleanup( | CODE |
| LOW | tests/test_inference_avatar.py | 642 | async def test_aclose_without_session_is_noop() -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 52 | def _make_full_recognition_for_eou() -> AudioRecognition: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 132 | def test_non_specific_language_does_not_replace_concrete_language(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 140 | def test_non_specific_language_does_not_initialize_language(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 148 | def test_concrete_language_still_updates_after_long_transcript(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 651 | def test_low_min_silence_with_audio_detector_raises(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 659 | def test_adequate_min_silence_passes(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 666 | def test_non_audio_detector_skips(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 179 | async def test_sos_during_bounce_cancels_commit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 244 | async def test_stale_spike_does_not_block_next_commit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 265 | async def test_vad_then_stt_emits_eot_prediction_once(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 303 | async def test_text_detector_emits_every_bounce(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 334 | async def test_clear_user_turn_allows_next_turn_to_emit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 374 | async def test_emits_with_eot_context_when_turn_continues(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 392 | async def test_emits_with_eot_context_when_turn_ends(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 409 | async def test_no_emit_below_threshold(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 420 | async def test_no_emit_when_backchannel_disabled(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 430 | async def test_no_emit_for_text_detector(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 453 | async def test_silence_tick_starts_request_once(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 463 | async def test_resumed_speech_without_sos_rearms_next_pause(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 492 | async def test_silence_tick_starts_request_while_agent_speaking(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 506 | async def test_eos_consumes_silence_tick_request_without_predicting(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 523 | async def test_eos_runs_eou_even_while_agent_speaking(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 542 | async def test_sos_tears_down_request_and_rearms(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 553 | async def test_eos_never_starts_request(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 569 | async def test_late_stt_final_after_flush_short_circuits( | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 589 | async def test_predict_timeout_signals_fallback_and_drops_future(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 608 | async def test_commit_flushes_stream_and_marks_turn_flushed(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 636 | def _make_recognition_for_validation() -> AudioRecognition: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 680 | def test_vad_without_min_silence_knob_skips(self) -> None: | CODE |
| 2602 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_plugin_sarvam_stt_streaming.py | 1542 | stream._audio_duration_collector.push(1.0) | CODE |
| HIGH | tests/test_plugin_sarvam_stt_streaming.py | 1578 | stream._audio_duration_collector.push(1.75) | CODE |
| HIGH | tests/test_plugin_sarvam_stt_streaming.py | 1601 | stream._audio_duration_collector.push(1.0) | CODE |
| HIGH | tests/fake_session.py | 115 | audio_input.push(0.1) | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 772 | out = s.push("Hi <emo") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 773 | out += s.push('tion value="happy"/> the') | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 774 | out += s.push("re") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 788 | first = s.push("Read [the docs](https:") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 790 | rest = s.push("//docs.livekit.io) now.") + s.flush() | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 798 | first = s.push("The value 3 < 5 ") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 800 | rest = s.push("is true.") + s.flush() | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 158 | track.push(2.0, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 168 | track.push(0.0, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 169 | track.push(0.5, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 180 | track.push(0.5, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 188 | track.push(0.0, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 189 | track.push(0.1, _loud(100)) # contiguous, extends the run | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 190 | track.push(5.0, _loud(100)) # beyond tolerance, anchors on its own timestamp | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 197 | track.push(1.0, _loud(2400, sample_rate=24000)) # 100ms at 24kHz | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 198 | track.push(9.0, _loud(2400, sample_rate=24000)) # a new run, so the first one is complete | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 209 | track.push(0.0, _loud(100, channels=2)) | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 220 | out += stripper.push(chunk) | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 258 | out = "".join(stripper.push(c) for c in chunks) + stripper.flush() | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 266 | out = "".join(stripper.push(c) for c in ["Right. ", " Anyway."]) + stripper.flush() | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 273 | out = "".join(stripper.push(c) for c in chunks) + stripper.flush() | CODE |
| HIGH⚡ | tests/test_tts.py | 821 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 823 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 828 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 829 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 865 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 867 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 869 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 896 | emitter_nostream.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 897 | emitter_nostream.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 924 | emitter_noflush.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 949 | emitter_noflush.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 1016 | emitter.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1021 | emitter.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1057 | emitter2.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1085 | emitter3.push(b"\xff\xff" * 100) | CODE |
| HIGH | tests/test_plugin_soniox_tts.py | 91 | slot.emitter.push(_SILENCE_PCM) | CODE |
| HIGH | tests/test_playback_progress.py | 89 | await h.push(0.1) | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 107 | await h.push(0.2) | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 113 | await h.push(0.1) | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 127 | await h.push(0.06) | CODE |
| HIGH | tests/test_playback_progress.py | 147 | await h.push(0.5) | CODE |
| HIGH | tests/test_playback_progress.py | 167 | await h.push(0.5) | CODE |
| HIGH | tests/test_playback_progress.py | 200 | await h.push(0.5) | CODE |
| HIGH | tests/test_playback_progress.py | 220 | await h.push(0.5) | CODE |
| HIGH | tests/test_playback_progress.py | 237 | await h.push(0.2) | CODE |
| HIGH | tests/test_session_close_user_turn.py | 31 | audio_input.push(0.1) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 89 | e.push(_make_pcm(SR, NC, 5)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 103 | e.push(_make_pcm(SR, NC, 80)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 165 | e.push(_make_pcm(SR, NC, 200)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 170 | e.push(_make_pcm(SR, NC, 200)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 191 | e.push(_make_pcm(SR, NC, 500)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 203 | e.push(_make_pcm(SR, NC, 100)) | CODE |
| HIGH | tests/test_audio_emitter.py | 74 | e.push(_make_pcm(SR, NC, 10)) | CODE |
| HIGH | tests/test_audio_emitter.py | 123 | e.push(_make_pcm(SR, NC, 200)) | CODE |
| HIGH | tests/test_audio_emitter.py | 149 | e.push(_make_pcm(SR, NC, 10)) | CODE |
| 160 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_plugin_inworld_tts.py | 3 | CODE | |
| LOW | tests/test_inference_avatar.py | 10 | CODE | |
| LOW | tests/test_audio_recognition_turn_detection.py | 26 | CODE | |
| LOW | tests/test_plugin_sarvam_stt_streaming.py | 1 | CODE | |
| LOW | tests/fake_session.py | 1 | CODE | |
| LOW | tests/test_audio_recognition_handoff.py | 1 | CODE | |
| LOW | tests/test_ipc.py | 1 | CODE | |
| LOW | tests/test_tokenizer_xml_markup.py | 7 | CODE | |
| LOW | tests/fake_vad.py | 1 | CODE | |
| LOW | tests/test_realtime_cancel_tool_reply.py | 7 | CODE | |
| LOW | tests/test_tool_results_preserved_on_interruption.py | 7 | CODE | |
| LOW | tests/test_plugin_assemblyai_stt.py | 3 | CODE | |
| LOW | tests/test_room_io.py | 1 | CODE | |
| LOW | tests/test_recorder_io.py | 7 | CODE | |
| LOW | tests/test_expr_markup.py | 10 | CODE | |
| LOW | tests/test_session_host.py | 1 | CODE | |
| LOW | tests/test_plugin_deepgram_tts.py | 1 | CODE | |
| LOW | tests/test_tool_output_per_call.py | 7 | CODE | |
| LOW | tests/test_realtime_input_speech_interrupt.py | 1 | CODE | |
| LOW | tests/test_trace_types_pii.py | 11 | CODE | |
| LOW | tests/test_turn_detection_cloud_stream.py | 13 | CODE | |
| LOW | tests/test_telemetry_recording_disabled.py | 10 | CODE | |
| LOW | tests/test_agent_session.py | 1 | CODE | |
| LOW | tests/test_playout_launch_pause.py | 1 | CODE | |
| LOW | tests/conftest.py | 17 | CODE | |
| LOW | tests/conftest.py | 17 | CODE | |
| LOW | tests/lk_server.py | 8 | CODE | |
| LOW | tests/test_filler.py | 1 | CODE | |
| LOW | tests/test_running_tool_placeholders.py | 1 | CODE | |
| LOW | tests/test_amd_classifier.py | 8 | CODE | |
| LOW | tests/test_inference_stt_aligned_transcript_claim.py | 11 | CODE | |
| LOW | tests/test_tts.py | 1 | CODE | |
| LOW | tests/test_plugin_soniox_tts.py | 11 | CODE | |
| LOW | tests/test_judge.py | 1 | CODE | |
| LOW | tests/fake_io.py | 1 | CODE | |
| LOW | tests/test_run_input_errors.py | 7 | CODE | |
| LOW | tests/fake_turn_stt.py | 9 | CODE | |
| LOW | tests/test_audio_sink_proxy.py | 1 | CODE | |
| LOW | tests/test_llm_utils.py | 1 | CODE | |
| LOW | tests/test_plugin_google_realtime.py | 1 | CODE | |
| LOW | tests/test_plugin_google_gemini_tts.py | 1 | CODE | |
| LOW | tests/test_http_context_helper.py | 5 | CODE | |
| LOW | tests/fake_stt.py | 1 | CODE | |
| LOW | tests/test_expressive_toggle.py | 1 | CODE | |
| LOW | tests/test_plugin_fishaudio_tts.py | 3 | CODE | |
| LOW | tests/test_plugin_rime_tts.py | 3 | CODE | |
| LOW | tests/test_convert_html_docs.py | 3 | CODE | |
| LOW | tests/test_personaplex_realtime_model.py | 3 | CODE | |
| LOW | tests/test_realtime_fallback.py | 1 | CODE | |
| LOW | tests/test_tts_fallback.py | 1 | CODE | |
| LOW | tests/test_plugin_bland_tts.py | 1 | CODE | |
| LOW | tests/test_realtime_adaptive_interruption.py | 1 | CODE | |
| LOW | tests/test_inference_stt_start_of_speech.py | 9 | CODE | |
| LOW | tests/test_plugin_palabra.py | 8 | CODE | |
| LOW | tests/test_stt_prewarm.py | 1 | CODE | |
| LOW | tests/test_playback_progress.py | 7 | CODE | |
| LOW | tests/test_realtime_auto_disable_turn_detection.py | 1 | CODE | |
| LOW | tests/test_plugin_sarvam_llm.py | 1 | CODE | |
| LOW | tests/test_cli_log_level.py | 1 | CODE | |
| LOW | tests/test_transcription_timeout.py | 1 | CODE | |
| 1244 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_audio_recognition_turn_detection.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_turn_detection.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_handoff.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_handoff.py | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_handoff.py | 160 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_handoff.py | 162 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_audio_recognition_handoff.py | 207 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_audio_recognition_handoff.py | 209 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 19 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 111 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 113 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 509 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 511 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 576 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 578 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 730 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 732 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 58 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 60 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 663 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 665 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 323 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 330 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 464 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 466 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 726 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 735 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 1321 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 1330 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 405 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 411 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 442 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 444 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 517 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 524 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 564 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 571 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 906 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 918 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 148 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 216 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 218 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_recorder_io.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_recorder_io.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 98 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 100 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 153 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 155 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 284 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 286 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 303 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 305 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 358 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 360 | # --------------------------------------------------------------------------- | COMMENT |
| 123 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 299 | except Exception: | CODE |
| LOW | tests/conftest.py | 320 | except Exception: | CODE |
| MEDIUM | tests/conftest.py | 285 | def _is_ignorable_task(task) -> bool: | CODE |
| MEDIUM | tests/conftest.py | 304 | def format_task(task) -> str: | CODE |
| LOW | tests/concurrency.py | 114 | except Exception: # pragma: no cover - defensive | CODE |
| LOW | tests/concurrency.py | 342 | except Exception: # pragma: no cover - best effort flush | CODE |
| LOW | tests/concurrency.py | 380 | except Exception: # pragma: no cover | CODE |
| LOW | tests/test_multi_speaker_adapter.py | 296 | except Exception as e: # noqa: BLE001 - recorded, asserted on below | CODE |
| MEDIUM | tests/test_multi_speaker_adapter.py | 291 | def _read() -> None: | CODE |
| LOW | tests/test_interruption/test_interruption_failover.py | 91 | except Exception as exc: | CODE |
| LOW | examples/drive_thru/order.py | 62 | except Exception: | CODE |
| LOW | examples/drive_thru/agent.py | 524 | except Exception: | CODE |
| LOW | examples/healthcare/agent.py | 117 | except Exception as e: | CODE |
| LOW | examples/other/translation/multi-user-translator.py | 151 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/ui_view.py | 70 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/ui_view.py | 117 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/ui_view.py | 138 | except Exception as e: | CODE |
| LOW | examples/hotel_receptionist/agent.py | 146 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/agent.py | 159 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/agent.py | 204 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/run_artifacts.py | 36 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/run_artifacts.py | 47 | except Exception: | CODE |
| LOW | examples/frontdesk/ui_view.py | 97 | except Exception: | CODE |
| LOW | examples/warm-transfer/warm_transfer.py | 77 | except Exception as e: | CODE |
| LOW | examples/telephony/bank-ivr/dial_bank_agent.py | 51 | except Exception as e: | CODE |
| LOW | examples/inference/agent.py | 112 | except Exception: | CODE |
| LOW | scripts/generate_test_summary.py | 86 | except Exception as e: | CODE |
| MEDIUM | .github/convert_html_docs.py | 1023 | print(f"Error: {input_dir} is not a directory", file=sys.stderr) | CODE |
| MEDIUM | .github/convert_html_docs.py | 1028 | print(f"Error: {output_dir} is not a directory", file=sys.stderr) | CODE |
| LOW | .github/download_stats.py | 53 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 716 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1152 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1439 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 319 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 334 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 347 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 682 | except Exception: | CODE |
| MEDIUM | livekit-agents/livekit/agents/job.py | 672 | def _delete_room() -> None: | CODE |
| LOW | livekit-agents/livekit/agents/_exceptions.py | 144 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/__main__.py | 32 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/__main__.py | 50 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/jupyter.py | 65 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/beta/tools/send_dtmf.py | 32 | except Exception as e: | CODE |
| LOW | …kit-agents/livekit/agents/beta/workflows/task_group.py | 134 | except Exception as e: | CODE |
| LOW | …kit-agents/livekit/agents/beta/workflows/task_group.py | 160 | except Exception as e: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 199 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/evals/evaluation.py | 171 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 398 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 188 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 278 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 319 | except Exception as e: | CODE |
| MEDIUM | livekit-agents/livekit/agents/llm/llm.py | 185 | def _prewarm() -> None: | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 321 | except Exception: | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 346 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 633 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 698 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 1043 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 233 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 262 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 290 | except Exception: # exceptions already logged inside _try_generate | CODE |
| 463 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_trace_types_pii.py | 168 | CODE | |
| LOW | tests/conftest.py | 209 | CODE | |
| LOW | tests/fake_stt.py | 177 | CODE | |
| LOW | tests/test_endpointing.py | 466 | CODE | |
| LOW | tests/test_plugin_bland_tts.py | 405 | CODE | |
| LOW | tests/test_plugin_bland_tts.py | 847 | CODE | |
| LOW | tests/test_plugin_palabra.py | 34 | CODE | |
| LOW | tests/test_plugin_palabra.py | 49 | CODE | |
| LOW | tests/test_plugin_palabra.py | 54 | CODE | |
| LOW | tests/test_plugin_sarvam_llm.py | 52 | CODE | |
| LOW | tests/concurrency.py | 868 | CODE | |
| LOW | tests/test_chat_ctx.py | 791 | CODE | |
| LOW | tests/test_stt.py | 184 | CODE | |
| LOW | examples/drive_thru/database.py | 606 | CODE | |
| LOW | examples/drive_thru/agent.py | 387 | CODE | |
| LOW | examples/frontdesk/agent.py | 202 | CODE | |
| LOW | examples/primitives/echo-agent.py | 28 | CODE | |
| LOW | examples/primitives/echo-agent.py | 73 | CODE | |
| LOW | examples/telephony/amd.py | 37 | CODE | |
| LOW | examples/telephony/basic_dtmf_agent.py | 55 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 347 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 441 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 502 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 566 | CODE | |
| LOW | scripts/generate_test_summary.py | 12 | CODE | |
| LOW | .github/convert_html_docs.py | 806 | CODE | |
| LOW | .github/convert_html_docs.py | 990 | CODE | |
| LOW | .github/convert_html_docs.py | 162 | CODE | |
| LOW | .github/convert_html_docs.py | 541 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 536 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 1174 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 1194 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 801 | CODE | |
| LOW | livekit-agents/livekit/agents/_proto.py | 81 | CODE | |
| LOW | …it-agents/livekit/agents/beta/workflows/credit_card.py | 499 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/utils.py | 30 | CODE | |
| LOW | …vekit-agents/livekit/agents/metrics/usage_collector.py | 77 | CODE | |
| LOW | livekit-agents/livekit/agents/metrics/utils.py | 18 | CODE | |
| LOW | livekit-agents/livekit/agents/metrics/usage.py | 200 | CODE | |
| LOW | livekit-agents/livekit/agents/evals/judge.py | 59 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 588 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 692 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 596 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 259 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 496 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 720 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 776 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 915 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 510 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 89 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 315 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 427 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 491 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 267 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_strict.py | 48 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/google.py | 23 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/google.py | 127 | CODE | |
| LOW | …ekit-agents/livekit/agents/llm/_provider_format/aws.py | 28 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/openai.py | 50 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/openai.py | 172 | CODE | |
| 289 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_filler.py | 89 | def set_idle(self, idle: bool) -> None: | CODE |
| LOW | tests/toxic_proxy.py | 217 | def update_api_consumer(self, host: str, port: int) -> None: | CODE |
| LOW | tests/test_plugin_openai_stt_context.py | 240 | async def _settle(stream: stt.SpeechStream) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 79 | async def update_instructions(self, instructions: str) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 82 | async def update_chat_ctx(self, chat_ctx: ChatContext) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 87 | async def update_tools(self, tools: list[Tool]) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 90 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: | CODE |
| LOW⚡ | tests/test_plugin_elevenlabs_stt.py | 133 | def update_options(self, **kwargs: object) -> None: | CODE |
| LOW⚡ | tests/test_plugin_elevenlabs_stt.py | 254 | def update_options(self, **kwargs: object) -> None: | CODE |
| LOW | tests/test_telemetry_exception_redaction.py | 37 | def set_status(self, status: trace.Status) -> None: | CODE |
| LOW | tests/test_telemetry_exception_redaction.py | 40 | def set_attributes(self, attributes: dict[str, Any]) -> None: | CODE |
| LOW | tests/test_multi_speaker_adapter.py | 70 | def _update_session_keyterms(self, keyterms: list[str]) -> None: | CODE |
| LOW | tests/test_stt_context.py | 79 | def _update_session_keyterms(self, keyterms: list[str]) -> None: | CODE |
| LOW | tests/test_realtime/test_openai_realtime_model.py | 41 | def update_options(self, **kw: object) -> None: | CODE |
| LOW | tests/utils/livekit_test.py | 33 | __all__ = [ | CODE |
| LOW | tests/utils/audio_test.py | 24 | __all__ = [ | CODE |
| LOW | examples/hotel_receptionist/hotel_db.py | 1060 | async def update_booking_card(self, *, booking_code: str, card_last4: str) -> None: | CODE |
| LOW | examples/hotel_receptionist/modify_booking.py | 278 | def _set_changed(self, slot: str, differs: bool) -> None: | CODE |
| LOW | examples/avatar/actions.py | 80 | def set_session(self, session_id: str, persona_id: str) -> None: | CODE |
| LOW | .github/update_versions.py | 81 | def update_plugins_pyproject_agents_version(new_agents_version: str) -> None: | CODE |
| LOW | .github/update_versions.py | 97 | def update_agents_pyproject_optional_dependencies(plugin_versions: Dict[str, str]) -> None: | CODE |
| LOW | .github/update_versions.py | 123 | def update_versions(bump_type: str) -> None: | CODE |
| LOW | .github/update_versions.py | 157 | def update_prerelease(prerelease_type: str) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/simulation.py | 23 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 766 | def _update_job_status(proc: ipc.job_executor.JobExecutor) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1489 | async def _update_worker_status(self) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1522 | async def _update_job_status(self, proc: ipc.job_executor.JobExecutor) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/__init__.py | 168 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/testing.py | 15 | __all__ = ["fake_job_context"] | CODE |
| LOW | livekit-agents/livekit/agents/beta/__init__.py | 5 | __all__ = ["Instructions", "workflows", "EndCallTool"] | CODE |
| LOW | livekit-agents/livekit/agents/beta/tools/__init__.py | 4 | __all__ = [ | CODE |
| LOW | …vekit-agents/livekit/agents/beta/workflows/__init__.py | 12 | __all__ = [ | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 254 | def _set_result(self, result: WarmTransferResult | Exception) -> None: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 369 | def _set_io_enabled(self, enabled: bool) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/beta/toolsets/__init__.py | 4 | __all__ = ["ToolProxyToolset", "ToolSearchToolset"] | CODE |
| LOW | livekit-agents/livekit/agents/metrics/__init__.py | 25 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/evals/__init__.py | 20 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/llm/async_toolset.py | 23 | __all__ = ["AsyncRunContext", "AsyncToolset"] | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 246 | async def update_instructions(self, instructions: str) -> None: ... | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 254 | async def update_tools(self, tools: list[Tool]) -> None: ... | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 257 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: ... | CODE |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 585 | def update_tools(self, tools: Sequence[Tool | Toolset]) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/llm/__init__.py | 64 | __all__ = [ | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 244 | def _set_available(self, index: int, available: bool) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 409 | async def update_instructions(self, instructions: str) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 413 | async def update_chat_ctx(self, chat_ctx: ChatContext) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 419 | async def update_tools(self, tools: list[Tool]) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 423 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: | CODE |
| LOW | …vekit-agents/livekit/agents/llm/remote_chat_context.py | 7 | __all__ = ["RemoteChatContext"] | CODE |
| LOW | …agents/livekit/agents/llm/_provider_format/__init__.py | 3 | __all__ = ["openai", "openai.responses", "google", "aws", "anthropic", "mistralai"] | CODE |
| LOW | livekit-agents/livekit/agents/utils/http_context.py | 31 | def _set_default_cert_env() -> None: | CODE |
| LOW | livekit-agents/livekit/agents/utils/__init__.py | 16 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/utils/exp_filter.py | 63 | def update_base(self, alpha: float) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/utils/codecs/__init__.py | 17 | __all__ = ["AudioStreamDecoder", "StreamBuffer"] | CODE |
| LOW | livekit-agents/livekit/agents/utils/hw/__init__.py | 3 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/utils/images/__init__.py | 17 | __all__ = ["EncodeOptions", "ResizeOptions", "encode"] | CODE |
| LOW | livekit-agents/livekit/agents/utils/aio/__init__.py | 10 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/cli/readchar.py | 7 | __all__ = ["readchar", "readkey", "key"] | CODE |
| LOW | livekit-agents/livekit/agents/cli/__init__.py | 3 | __all__ = ["run_app", "AgentsConsole"] | CODE |
| LOW | livekit-agents/livekit/agents/cli/_legacy.py | 562 | def set_microphone_enabled(self, enable: bool, *, device: int | str | None = None) -> None: | CODE |
| 207 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_plugin_assemblyai_stt.py | 901 | COMMENT | |
| LOW | tests/test_tts.py | 681 | ) | COMMENT |
| LOW | tests/test_llm.py | 1 | # from __future__ import annotations | COMMENT |
| LOW | tests/test_llm.py | 21 | COMMENT | |
| LOW | tests/test_llm.py | 41 | # self, | COMMENT |
| LOW | tests/test_llm.py | 61 | # def update_user_info( | COMMENT |
| LOW | tests/test_llm.py | 81 | # # instructions="You are a basic assistant", | COMMENT |
| LOW | tests/test_llm.py | 101 | # # Anthropic and vertex requires at least one message (system messages don't count) | COMMENT |
| LOW | tests/test_llm.py | 121 | # async def test_llm_chat_with_consecutive_messages( | COMMENT |
| LOW | tests/test_llm.py | 141 | # if content: | COMMENT |
| LOW | tests/test_llm.py | 161 | COMMENT | |
| LOW | tests/test_llm.py | 181 | COMMENT | |
| LOW | tests/test_llm.py | 201 | COMMENT | |
| LOW | tests/test_llm.py | 221 | # ) | COMMENT |
| LOW | tests/test_llm.py | 241 | # call = calls[0] | COMMENT |
| LOW | tests/test_llm.py | 261 | COMMENT | |
| LOW | tests/test_llm.py | 281 | # fnc_ctx = FncCtx() | COMMENT |
| LOW | tests/test_llm.py | 301 | COMMENT | |
| LOW | tests/test_llm.py | 321 | # llm.ToolChoice(type="function", name="get_weather"), | COMMENT |
| LOW | tests/test_llm.py | 341 | # user_request: str, | COMMENT |
| LOW | tests/test_llm.py | 361 | COMMENT | |
| LOW | tests/test_llm.py | 381 | # role="system", | COMMENT |
| LOW | tests/test_llm.py | 401 | # width=512, height=512, type=VideoBufferType.RGBA, data=image_data | COMMENT |
| LOW | tests/test_llm.py | 421 | # images=[llm.ChatImage(image=_HEARTS_IMAGE_DATA_URL, inference_detail="low")], | COMMENT |
| LOW | tests/test_llm.py | 441 | # input_llm = llm_factory() | COMMENT |
| LOW | tests/test_llm.py | 461 | COMMENT | |
| LOW | examples/playground.yaml | 1 | # Examples metadata consumed by livekit/agents-jukebox. | COMMENT |
| LOW | examples/playground.yaml | 121 | 101110011101 | COMMENT |
| LOW | examples/playground.yaml | 161 | 022222222220 | COMMENT |
| LOW | examples/data_capture_sim/scenarios.yaml | 1 | # Scenarios for the data-capture workflow refactor: confirm_* / update_* tools | COMMENT |
| LOW | examples/voice_agents/otel_trace.py | 21 | from livekit.agents.voice import MetricsCollectedEvent | COMMENT |
| LOW | examples/hotel_receptionist/scenarios.yaml | 1 | # Assumptions: | COMMENT |
| LOW | examples/hotel_receptionist/fake_data/seed.py | 61 | # offset < 0 and offset+nights > 0 -> in-house now; offset > 0 -> upcoming; else departed. | COMMENT |
| LOW | examples/hotel_receptionist/fake_data/seed.py | 81 | ("Paul", "Greer", "paul.greer@gmail.com", "+1 415 555 0356", "PG11", "203", 0, 1, 1, [], "2218", "confirmed"), | COMMENT |
| LOW | examples/frontdesk/scenarios.yaml | 1 | # These scenarios use absolute dates against a fixed clock: | COMMENT |
| LOW | examples/avatar/pyproject.toml | 21 | # No [tool.uv.sources] here: the workspace root repoints the livekit-* deps at | COMMENT |
| LOW | .github/convert_html_docs.py | 901 | COMMENT | |
| LOW | livekit-agents/livekit/agents/worker.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/version.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/job.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/__init__.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/language.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/_language_data.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/codecs/decoder.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/codecs/__init__.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/images/__init__.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/images/image.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/cli/_legacy.py | 81 | COMMENT | |
| LOW | livekit-agents/livekit/agents/voice/agent_activity.py | 3221 | # the LLM isn't instructed or few-shotted into emitting tags nothing | COMMENT |
| LOW | …t-agents/livekit/agents/voice/transcription/filters.py | 61 | COMMENT | |
| LOW | livekit-agents/livekit/agents/tts/_provider_format.py | 121 | secs = float(raw[:-2]) / 1000 if raw.endswith("ms") else float(raw.rstrip("s")) | COMMENT |
| LOW | livekit-agents/livekit/agents/tts/_provider_format.py | 201 | return "[long-break]" if secs >= 1.0 else "[break]" | COMMENT |
| LOW | livekit-agents/livekit/agents/inference/vad.py | 1 | # Copyright 2026 LiveKit, Inc. | COMMENT |
| LOW | …ugins-smallestai/livekit/plugins/smallestai/version.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/tts.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …gins-smallestai/livekit/plugins/smallestai/__init__.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 721 | def _batch_transcription_to_speech_event( | COMMENT |
| 214 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_amd_classifier.py | 31 | CODE | |
| LOW | tests/test_plugin_bland_tts.py | 375 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 303 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 857 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/address.py | 26 | CODE | |
| LOW | …it-agents/livekit/agents/beta/workflows/credit_card.py | 572 | CODE | |
| LOW | …t-agents/livekit/agents/beta/workflows/phone_number.py | 63 | CODE | |
| LOW | …-agents/livekit/agents/beta/workflows/email_address.py | 27 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/dob.py | 61 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/name.py | 74 | CODE | |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 40 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/turn.py | 336 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent_session.py | 372 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent_activity.py | 1589 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent.py | 39 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent.py | 818 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/amd/detector.py | 168 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/amd/classifier.py | 106 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 267 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 286 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 305 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 324 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 343 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 362 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 381 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 400 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 418 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/avatar.py | 127 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/vad.py | 59 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/interruption.py | 274 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 424 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 441 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 458 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 475 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 492 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 509 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 526 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 544 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 561 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 578 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 594 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/eot/detector.py | 34 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/tts.py | 64 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/tts.py | 184 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 110 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 308 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 395 | CODE | |
| LOW | …vekit-plugins-cerebras/livekit/plugins/cerebras/llm.py | 103 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/tts.py | 460 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/tts.py | 736 | CODE | |
| LOW | …plugins-sarvam/livekit/plugins/sarvam/stt_streaming.py | 229 | CODE | |
| LOW | …plugins-sarvam/livekit/plugins/sarvam/stt_streaming.py | 340 | CODE | |
| LOW | …plugins-sarvam/livekit/plugins/sarvam/stt_streaming.py | 539 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 468 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 736 | CODE | |
| LOW | …it-plugins-sarvam/livekit/plugins/sarvam/llm/client.py | 159 | CODE | |
| LOW | …plugins/livekit-plugins-aws/livekit/plugins/aws/tts.py | 60 | CODE | |
| LOW | …plugins/livekit-plugins-aws/livekit/plugins/aws/llm.py | 80 | CODE | |
| LOW | …plugins/livekit-plugins-aws/livekit/plugins/aws/stt.py | 104 | CODE | |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 328 | CODE | |
| 128 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | livekit-agents/livekit/agents/vad.py | 0 | mark the end of input, no more audio will be pushed | STRING |
| HIGH | …s/livekit/agents/voice/transcription/_speaking_rate.py | 0 | mark the end of input, no more audio will be pushed | STRING |
| HIGH | livekit-agents/livekit/agents/inference/interruption.py | 0 | mark the end of input, no more audio will be pushed | STRING |
| HIGH | livekit-agents/livekit/agents/stt/stt.py | 0 | mark the end of input, no more audio will be pushed | STRING |
| HIGH | livekit-agents/livekit/agents/llm/llm.py | 0 | get the provider name/identifier for this stt instance. returns: the provider name if available, "unknown" otherwise. no | STRING |
| HIGH | livekit-agents/livekit/agents/tts/tts.py | 0 | get the provider name/identifier for this stt instance. returns: the provider name if available, "unknown" otherwise. no | STRING |
| HIGH | livekit-agents/livekit/agents/stt/stt.py | 0 | get the provider name/identifier for this stt instance. returns: the provider name if available, "unknown" otherwise. no | STRING |
| HIGH | livekit-agents/livekit/agents/llm/fallback_adapter.py | 0 | agent fallback adapter for stt. manages multiple stt instances with automatic fallback when the primary provider fails. | STRING |
| HIGH | livekit-agents/livekit/agents/tts/fallback_adapter.py | 0 | agent fallback adapter for stt. manages multiple stt instances with automatic fallback when the primary provider fails. | STRING |
| HIGH | livekit-agents/livekit/agents/stt/fallback_adapter.py | 0 | agent fallback adapter for stt. manages multiple stt instances with automatic fallback when the primary provider fails. | STRING |
| HIGH | livekit-agents/livekit/agents/llm/fallback_adapter.py | 0 | metadata of the instance that most recently served a request (the primary before any traffic). | STRING |
| HIGH | livekit-agents/livekit/agents/tts/fallback_adapter.py | 0 | metadata of the instance that most recently served a request (the primary before any traffic). | STRING |
| HIGH | livekit-agents/livekit/agents/stt/fallback_adapter.py | 0 | metadata of the instance that most recently served a request (the primary before any traffic). | STRING |
| HIGH | …plugins-fireworksai/livekit/plugins/fireworksai/stt.py | 0 | run a single websocket connection to baseten and make sure to reconnect when something went wrong. | STRING |
| HIGH | …livekit-plugins-gradium/livekit/plugins/gradium/stt.py | 0 | run a single websocket connection to baseten and make sure to reconnect when something went wrong. | STRING |
| HIGH | …livekit-plugins-baseten/livekit/plugins/baseten/stt.py | 0 | run a single websocket connection to baseten and make sure to reconnect when something went wrong. | STRING |
| HIGH | …s/livekit-plugins-openai/livekit/plugins/openai/tts.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …s/livekit-plugins-openai/livekit/plugins/openai/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …plugins-openai/livekit/plugins/openai/responses/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …t-plugins-perplexity/livekit/plugins/perplexity/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …perplexity/livekit/plugins/perplexity/responses/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …/livekit-plugins-groq/livekit/plugins/groq/services.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …livekit-plugins-baseten/livekit/plugins/baseten/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …lugins-elevenlabs/livekit/plugins/elevenlabs/_utils.py | 0 | create a new periodic collector that accumulates values and calls the callback after the specified duration if there are | STRING |
| HIGH | …it-plugins-deepgram/livekit/plugins/deepgram/_utils.py | 0 | create a new periodic collector that accumulates values and calls the callback after the specified duration if there are | STRING |
| HIGH | …ivekit-plugins-gladia/livekit/plugins/gladia/_utils.py | 0 | create a new periodic collector that accumulates values and calls the callback after the specified duration if there are | STRING |
| HIGH | …lugins-elevenlabs/livekit/plugins/elevenlabs/_utils.py | 0 | force callback to be called with current total if non-zero | STRING |
| HIGH | …it-plugins-deepgram/livekit/plugins/deepgram/_utils.py | 0 | force callback to be called with current total if non-zero | STRING |
| HIGH | …ivekit-plugins-gladia/livekit/plugins/gladia/_utils.py | 0 | force callback to be called with current total if non-zero | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | livekit-agents/livekit/agents/utils/env.py | 8 | Resolve an environment variable from a list of potential sources. Args: val: The value to resolve. | STRING |
| HIGH | livekit-agents/livekit/agents/utils/participant.py | 16 | Wait for an agent participant to join the room. Args: room: The room to wait for the agent in. | STRING |
| HIGH | livekit-agents/livekit/agents/utils/audio.py | 286 | Push an audio frame to the buffer. Args: frame: The audio frame to push. Returns: | STRING |
| HIGH | livekit-agents/livekit/agents/voice/agent_session.py | 1590 | Commit the user turn and generate a reply. Returns a future that resolves with the user's audio transcript once | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 328 | Access a specific event or range for assertions. Args: key (int | slice): Index or slice o | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 678 | Verify this event is a function call with matching details. Args: name (str, optional): Ex | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 714 | Verify this event is a function call output with matching details. Args: output (str, opti | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 744 | Verify this event is a message from the given role. Args: role (ChatRole, optional): Expec | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 773 | Verify this event is an agent handoff. Args: new_agent_type (type, optional): Expected new | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 814 | Assert that a function call matching criteria exists in the event range. Args: name (str, | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 847 | Assert that a message matching criteria exists in the event range. Args: role (ChatRole, o | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 880 | Assert that a function call output matching criteria exists in the event range. Args: outp | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 911 | Assert that an agent handoff matching criteria exists in the event range. Args: new_agent_ | STRING |
| HIGH | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 171 | Validate and resolve mode for a given model. Args: model: The Sarvam model name. mode: The requeste | STRING |
| HIGH | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 205 | Validate language code for a given model. Args: model: The Sarvam model name. language: The request | STRING |
| HIGH | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 615 | Recognize speech using Sarvam.ai API. Args: buffer: Audio buffer containing speech data | STRING |
| HIGH | …it-plugins/livekit-durable/livekit/durable/registry.py | 55 | Register a function in the in-memory function registry. When serializing a registered function, a reference to the | STRING |
| HIGH | …it-plugins/livekit-durable/livekit/durable/registry.py | 94 | Lookup a registered function by key. Args: key: Unique identifier for the function. Returns: R | STRING |
| HIGH | …kit-plugins-protoface/livekit/plugins/protoface/api.py | 73 | Create a hosted Protoface avatar session. Args: avatar_id: Protoface avatar ID to render. | STRING |
| HIGH | …kit-plugins-protoface/livekit/plugins/protoface/api.py | 97 | Request a graceful end for a hosted Protoface session. Args: session_id: Protoface session ID retur | STRING |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 415 | Initialize a Realtime model client for OpenAI or Azure OpenAI. Args: model (str): Realtime | STRING |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 586 | Create a RealtimeModel configured for Azure OpenAI. Args: azure_deployment (str): Azure Op | STRING |
| HIGH | …ekit-plugins-cambai/livekit/plugins/cambai/__init__.py | 36 | List available voices from Camb.ai. Args: api_key: Camb.ai API key (or use CAMB_API_KEY env var). | STRING |
| HIGH | …vekit-plugins-avatario/livekit/plugins/avatario/api.py | 99 | Make a POST request to the Avatario API with retry logic. Args: payload: JSON payload for | STRING |
| HIGH | …s/livekit-plugins-silero/livekit/plugins/silero/vad.py | 75 | Load and initialize the Silero VAD model. This method loads the ONNX model and prepares it for inferen | STRING |
| HIGH | …vekit-plugins-cartesia/livekit/plugins/cartesia/stt.py | 113 | Create a new instance of Cartesia STT. Model ``ink-2`` supports: - Streaming - | STRING |
| HIGH | …ins/livekit-plugins-tavus/livekit/plugins/tavus/api.py | 166 | Make a POST request to the Tavus API with retry logic. Args: endpoint: API endpoint path ( | STRING |
| HIGH | …t-plugins-lemonslice/livekit/plugins/lemonslice/api.py | 211 | Make a POST request to the LemonSlice API with retry logic. Args: payload: JSON payload fo | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/README.md | 74 | LIVEKIT_API_KEY="your_api_key" | CODE |
| HIGH | examples/other/transcription/README.md | 19 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | livekit-plugins/livekit-plugins-gnani/README.md | 39 | export GNANI_API_KEY="your-api-key" | CODE |
| HIGH⚡ | livekit-plugins/livekit-plugins-gnani/README.md | 45 | stt = STT(api_key="your-api-key", language="hi-IN") | CODE |
| HIGH⚡ | livekit-plugins/livekit-plugins-gnani/README.md | 46 | tts = TTS(api_key="your-api-key") | CODE |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 624 | api_key="your-api-key", | STRING |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 650 | api_key="your-api-key", | STRING |
| HIGH | livekit-plugins/livekit-plugins-cambai/README.md | 88 | api_key="your-api-key", # Or use CAMB_API_KEY env var | CODE |
| HIGH | livekit-plugins/livekit-plugins-fishaudio/README.md | 20 | FISH_API_KEY=<your_api_key> | CODE |
| HIGH | livekit-plugins/livekit-plugins-did/README.md | 24 | -H "Authorization: Basic <YOUR_API_KEY>" \ | CODE |
| HIGH | livekit-plugins/livekit-plugins-did/README.md | 24 | -H "Authorization: Basic <YOUR_API_KEY>" \ | CODE |
| HIGH | livekit-plugins/livekit-plugins-gladia/README.md | 35 | api_key="your-api-key-here", # or use GLADIA_API_KEY env var | CODE |
| HIGH | livekit-plugins/livekit-plugins-gladia/README.md | 96 | api_key="your-api-key-here", | CODE |
| HIGH | livekit-plugins/livekit-plugins-resemble/README.md | 30 | api_key="your_api_key", # or set RESEMBLE_API_KEY environment variable | CODE |
| HIGH | livekit-plugins/livekit-plugins-resemble/README.md | 73 | api_key="your_api_key", | CODE |
| HIGH | livekit-plugins/livekit-plugins-resemble/README.md | 105 | api_key="your_api_key", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_convert_html_docs.py | 299 | # Create a path that would have .. in relative parts | COMMENT |
| MEDIUM | tests/concurrency.py | 924 | # This module is loaded as a *global* plugin (`-p tests.concurrency` in pyproject), not via | COMMENT |
| MEDIUM | tests/test_drain_timeout.py | 121 | # Create a fake proc whose join() never completes (stuck process) | COMMENT |
| MEDIUM | tests/test_speaker_id_grouping.py | 34 | # Create a SpeakerSpeechData object and get formatted text | COMMENT |
| MEDIUM | livekit-agents/livekit/agents/voice/agent_activity.py | 821 | # Create a wrapper coroutine that runs in the captured context | COMMENT |
| MEDIUM | livekit-agents/livekit/agents/telemetry/http_server.py | 22 | # Create a new registry for this request to collect metrics from all processes | COMMENT |
| MEDIUM | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 852 | # Create a fresh session for this stream to avoid conflicts | COMMENT |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 598 | # Create main task to manage session lifecycle | COMMENT |
| MEDIUM | …/livekit-plugins-krisp/examples/krisp_agent_example.py | 87 | # Create the Krisp voice isolation FrameProcessor. | COMMENT |
| MEDIUM | …ivekit-plugins-krisp/examples/krisp_minimal_example.py | 41 | # Create the frame processor with explicit license auth (no framework | COMMENT |
| MEDIUM | …ivekit-plugins-krisp/examples/krisp_minimal_example.py | 52 | # Create a test audio frame (10ms @ 16kHz = 160 samples) | COMMENT |
| MEDIUM | …ugins-speechmatics/livekit/plugins/speechmatics/stt.py | 392 | # Create the stream | COMMENT |
| MEDIUM | …ugins-speechmatics/livekit/plugins/speechmatics/stt.py | 647 | # Create the Voice Agent client | COMMENT |
| MEDIUM | …s/livekit-plugins-gladia/livekit/plugins/gladia/stt.py | 440 | # Create a speech event from the collected final utterances | COMMENT |
| MEDIUM | …s/livekit-plugins-google/livekit/plugins/google/stt.py | 78 | # This class is only be used internally to encapsulate the options | COMMENT |
| MEDIUM | …plugins-simplismart/livekit/plugins/simplismart/stt.py | 292 | # Create a fresh session for this stream to avoid conflicts | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …s/livekit-plugins-openai/livekit/plugins/openai/tts.py | 257 | oai_stream = self._tts._client.audio.speech.with_streaming_response.create( | CODE |
| CRITICAL | …kit-plugins-mistralai/livekit/plugins/mistralai/tts.py | 156 | stream = await self._tts._client.audio.speech.complete_async( | CODE |
| CRITICAL | …kit-plugins-mistralai/livekit/plugins/mistralai/tts.py | 165 | stream = await self._tts._client.audio.speech.complete_async( | CODE |
| CRITICAL | …ugins-google/livekit/plugins/google/beta/gemini_tts.py | 214 | response = await self._tts._client.aio.models.generate_content_stream( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_ipc.py | 121 | token="fake_token", | CODE |
| LOW | tests/test_plugin_soniox_tts.py | 105 | tts = soniox.TTS(api_key="fake-key", **tts_kwargs) | CODE |
| LOW⚡ | tests/test_plugin_soniox_tts.py | 171 | soniox.TTS(api_key="fake-key", stream_idle_timeout=0) | CODE |
| LOW⚡ | tests/test_plugin_soniox_tts.py | 173 | soniox.TTS(api_key="fake-key", stream_idle_timeout=-1.0) | CODE |
| LOW | tests/test_plugin_google_realtime.py | 67 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 83 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 508 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 524 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 260 | instance._update_session_keyterms(["billing", "Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 264 | assert instance._opts.keywords == ["AC-42", "billing", "Acme Corp"] | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 265 | assert _sent_transcription(ws)["keywords"] == ["AC-42", "billing", "Acme Corp"] | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 280 | instance.update_options(keywords=["Acme Corp"], prompt="a support call") | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 282 | assert _sent_transcription(ws)["keywords"] == ["Acme Corp"] | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 395 | instance._update_session_keyterms(["Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 407 | instance._update_session_keyterms(["Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 567 | instance.update_options(keywords=["Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 572 | assert [_transcription_of(p).get("keywords") for p in ws.sent] == [[], ["Acme Corp"]] | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 585 | instance.update_options(keywords=["Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 591 | assert _sent_transcription(ws)["keywords"] == ["Acme Corp"] | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 676 | instance.update_options(keywords=["Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 689 | instance.update_options(keywords=["Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 691 | assert pinned._opts.keywords == ["Acme Corp"] # the rest still reaches it | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 709 | instance._update_session_keyterms(["Acme Corp"]) | CODE |
| LOW⚡ | tests/test_plugin_openai_stt_context.py | 713 | assert config["keywords"] == ["Acme Corp"] | CODE |
| LOW | tests/test_plugin_openai_stt_context.py | 602 | ({"keywords": ["Acme Corp"]}, 1), # a session.update on acquire carries this one | CODE |
| LOW⚡ | tests/test_recording.py | 532 | assert serialized_stt_options["lk.pii.keyterms"] == ["Acme Corp"] | CODE |
| LOW⚡ | tests/test_recording.py | 534 | assert stt_context_options["keyterms"] == ["Acme Corp"] | CODE |
| LOW | tests/test_recording.py | 517 | "keyterms": ["Acme Corp"], | CODE |
| LOW⚡ | tests/test_stt_context.py | 182 | d = _detector(static_keyterms=["Acme Corp"], llm=fake) | CODE |
| LOW⚡ | tests/test_stt_context.py | 188 | assert "Acme Corp" in applied_section | CODE |
| LOW | examples/hotel_receptionist/README.md | 11 | uv run examples/hotel_receptionist/fake_data/seed.py | CODE |
| LOW | examples/hotel_receptionist/README.md | 17 | `fake_data/seed.py` prints sample confirmation codes you can use to try | CODE |
| LOW | examples/hotel_receptionist/README.md | 30 | fake_data/seed.py — manual seed script (writes fake_data/hotel.db) | CODE |
| LOW | examples/hotel_receptionist/agent.py | 17 | from fake_data.seed import build_seed_bytes | CODE |
| LOW | examples/hotel_receptionist/fake_data/seed.py | 3 | python fake_data/seed.py [path/to/hotel.db] # write a seed file (for inspection) | STRING |
| LOW | …vekit-agents/livekit/agents/voice/keyterm_detection.py | 69 | "keyterms": ["LiveKit", "Acme Corp"], | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 689 | # Step 1: Wait for assistant to finish speaking (AUDIO contentEnd with END_TURN) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 698 | # Step 2: Wait for audio to fully stop (no new audio for 1 second) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 712 | # Step 3: Send close events to trigger completionEnd from Nova Sonic | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 719 | # Step 4: Wait for completionEnd and let _done_fut resolve | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 740 | # Step 1: Drain any pending tool results | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 754 | # Step 2: Signal tasks to stop | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 757 | # Step 3: Wait for response task to exit naturally, then cancel if needed | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 771 | # Step 4: Cancel audio input task (blocked on channel, won't exit naturally) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 779 | # Step 5: Close the stream (close events already sent in _session_recycle_timer) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 787 | # Step 6: Reset state for new session | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1022 | # Step 1: Send session init events (session start, prompt start, system prompt) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1030 | # Step 2: Send history events with small delays between them | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1035 | # Step 3: Start response reader first (calls await_output, sets _stream_ready) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1040 | # Step 4: Start audio input (waits for _stream_ready before sending audio_content_start) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1045 | # Step 5: Allow audio contentStart to be sent before unblocking | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1051 | # Step 6: If we popped a user message from history, send it as | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 801 | # Step 7: Start new session with preserved state | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 689 | # Step 1: Wait for assistant to finish speaking (AUDIO contentEnd with END_TURN) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 698 | # Step 2: Wait for audio to fully stop (no new audio for 1 second) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 712 | # Step 3: Send close events to trigger completionEnd from Nova Sonic | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 719 | # Step 4: Wait for completionEnd and let _done_fut resolve | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 740 | # Step 1: Drain any pending tool results | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 754 | # Step 2: Signal tasks to stop | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 757 | # Step 3: Wait for response task to exit naturally, then cancel if needed | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 771 | # Step 4: Cancel audio input task (blocked on channel, won't exit naturally) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 779 | # Step 5: Close the stream (close events already sent in _session_recycle_timer) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 787 | # Step 6: Reset state for new session | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1022 | # Step 1: Send session init events (session start, prompt start, system prompt) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1030 | # Step 2: Send history events with small delays between them | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1035 | # Step 3: Start response reader first (calls await_output, sets _stream_ready) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1040 | # Step 4: Start audio input (waits for _stream_ready before sending audio_content_start) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1045 | # Step 5: Allow audio contentStart to be sent before unblocking | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1051 | # Step 6: If we popped a user message from history, send it as | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 801 | # Step 7: Start new session with preserved state | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | livekit-agents/livekit/agents/ipc/log_queue.py | 95 | # Check if Python is shutting down | COMMENT |
| LOW | livekit-agents/livekit/agents/telemetry/http_server.py | 20 | # Check if multiprocess mode is enabled | COMMENT |
| LOW | livekit-agents/livekit/agents/telemetry/traces.py | 344 | # Check if a tracer provider is not set and set one up | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1186 | # Check if session is still valid | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1243 | # Check if reconnection was requested | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1337 | # Check if we have enough data for a chunk | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1384 | # Check if Sarvam VAD triggered flush | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1664 | # Set flag to trigger flush when Sarvam detects end of speech | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1417 | # Check if this is END_TURN (assistant finished speaking) | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 1836 | # Check if this is an audio message (already transcribed by Nova) | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 2144 | # Check if generate_reply is supported (requires mixed modalities) | COMMENT |
| LOW⚡ | …it-plugins-bithuman/livekit/plugins/bithuman/avatar.py | 70 | # Check if string is empty after cleaning | COMMENT |
| LOW⚡ | …it-plugins-bithuman/livekit/plugins/bithuman/avatar.py | 79 | # Check if string contains only valid base64 characters | COMMENT |
| LOW | …ugins-speechmatics/livekit/plugins/speechmatics/stt.py | 514 | # Check if diarization is enabled | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 758 | # Check if restart is needed | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 794 | # Check if restart is needed | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 1158 | # Check if we have a current generation before processing audio | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/drive_thru/database.py | 634 | # explicitely saying there is no `size` for this item, otherwise the LLM seems to hallucinate quite often | COMMENT |
| MEDIUM | …mples/homepage/tests/evals/test_knowledge_grounding.py | 200 | # 3. Anti-hallucination: absent or contradicted facts are not fabricated. | COMMENT |
| MEDIUM | examples/voice_agents/README.md | 39 | ### RAG & Knowledge Management | COMMENT |
| MEDIUM | examples/voice_agents/llamaindex-rag/README.md | 1 | # RAG Example using LlamaIndex | COMMENT |
| MEDIUM | …kit-plugins-anthropic/livekit/plugins/anthropic/llm.py | 306 | self._ignoring_cot = False # ignore chain of thought | CODE |
| MEDIUM | livekit-plugins/livekit-plugins-mistralai/README.md | 72 | # Using zero-shot voice cloning | COMMENT |
| MEDIUM | …s/livekit-plugins-soniox/livekit/plugins/soniox/tts.py | 657 | # Empty text would make the server hallucinate audio; handle the two cases locally. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/data_capture_sim/agent.py | 21 | # Simulation harness for the beta data-capture workflows. Every capture runs | COMMENT |
| LOW | examples/other/chat-stream-receiver.py | 79 | # in cli we don't actually overwrite the line, just add a flag | COMMENT |
| MEDIUM | livekit-agents/livekit/agents/voice/tool_executor.py | 230 | # the confirm flag is harness state, not an argument | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 637 | # Static credentials - just use the max session duration | COMMENT |
| MEDIUM | …google/livekit/plugins/google/realtime/realtime_api.py | 1581 | # TODO(dz): this isn't a seamless reconnection just yet | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 821 | # If we're already closing due to send loop shutdown, just return | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_agent_session.py | 1612 | CODE | |
| MEDIUM | tests/test_agent_session.py | 1683 | CODE | |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 2155 | CODE | |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 2159 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/healthcare/agent.py | 93 | - Assistant: I'm unable to help with that, would you like to speak to a human agent? | STRING |
| MEDIUM | examples/warm-transfer/warm_transfer.py | 47 | - Assistant: I'm unable to help with that, would you like to speak to a human agent? | STRING |
| LOW | …t-plugins-assemblyai/livekit/plugins/assemblyai/stt.py | 687 | # the recv task will then make sure to process the remaining audio and stop | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | livekit-agents/livekit/agents/utils/deprecation.py | 32 | ... def my_function(old_param: NotGivenOr[int] = NOT_GIVEN, new_param: int = 0): | STRING |