A framework for building realtime voice AI agents 🤖🎙️📹
This report summarizes scanner evidence for livekit/agents, a Python project with 14,686 GitHub stars. SynthScan examined 313,842 lines of code across 1382 source files, recording 8231 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 34.9 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 5038 finding(s).
Are imports declared and package/API names verified? 1916 finding(s).
Are wrappers, guards, and repeated structures necessary? 5490 finding(s).
Which changes need focused human review? 8231 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 8231 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_e2e_latency_handoff.py | 92 | async def test_speech_before_handoff_answers_the_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 118 | async def test_tool_reply_before_handoff_answers_the_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 145 | async def test_say_in_on_enter_answers_the_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 179 | async def test_concurrent_on_enter_speeches_answer_once() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 213 | async def test_unstored_say_in_on_enter_still_answers_the_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 296 | async def test_task_spawned_in_on_enter_speaks_after_the_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 330 | async def test_new_user_turn_supersedes_the_handoff_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 371 | async def test_inline_task_in_tool_answers_each_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 425 | async def test_silent_tool_ends_the_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 447 | async def test_silent_on_enter_ends_the_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 476 | async def test_reply_after_awaited_task_in_on_enter_answers_the_last_turn() -> None: | CODE |
| LOW | tests/test_e2e_latency_handoff.py | 530 | async def test_turn_committed_during_on_enter_survives_its_end() -> None: | CODE |
| 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_plugin_google_tts_stream_close.py | 17 | async def test_input_gen_close_does_not_mask_api_error() -> None: | CODE |
| LOW | tests/test_plugin_google_tts_stream_close.py | 24 | async def fake_streaming_synthesize(input_gen, timeout=None): # noqa: ANN001 | 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 | 142 | def test_non_specific_language_does_not_replace_concrete_language(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 150 | def test_non_specific_language_does_not_initialize_language(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 158 | def test_concrete_language_still_updates_after_long_transcript(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 663 | def test_low_min_silence_with_audio_detector_raises(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 671 | def test_adequate_min_silence_passes(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 678 | def test_non_audio_detector_skips(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 189 | async def test_sos_during_bounce_cancels_commit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 254 | async def test_stale_spike_does_not_block_next_commit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 275 | async def test_vad_then_stt_emits_eot_prediction_once(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 313 | async def test_text_detector_emits_every_bounce(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 344 | async def test_clear_user_turn_allows_next_turn_to_emit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 384 | async def test_emits_with_eot_context_when_turn_continues(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 402 | async def test_emits_with_eot_context_when_turn_ends(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 419 | async def test_no_emit_below_threshold(self) -> None: | CODE |
| 3951 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 | 122 | audio_input.push(0.1) | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 773 | out = s.push("Hi <emo") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 774 | out += s.push('tion value="happy"/> the') | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 775 | out += s.push("re") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 789 | first = s.push("Read [the docs](https:") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 791 | rest = s.push("//docs.livekit.io) now.") + s.flush() | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 799 | first = s.push("The value 3 < 5 ") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 801 | rest = s.push("is true.") + s.flush() | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 316 | track.push(2.0, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 326 | track.push(0.0, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 327 | track.push(0.5, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 338 | track.push(0.5, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 346 | track.push(0.0, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 347 | track.push(0.1, _loud(100)) # contiguous, extends the run | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 348 | track.push(5.0, _loud(100)) # beyond tolerance, anchors on its own timestamp | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 355 | track.push(1.0, _loud(2400, sample_rate=24000)) # 100ms at 24kHz | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 356 | 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 | 367 | track.push(1.0, _loud(2400, sample_rate=24000)) # 100ms at 24kHz | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 377 | track.push(0.0, _loud(100)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 379 | track.push(0.15, _loud(100)) # the 50ms gap is below the drift tolerance | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 386 | track.push(1.0, _loud(2400, sample_rate=24000)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 399 | track.push(i * 0.05, _loud(1200, sample_rate=24000)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 406 | track.push(0.5, _loud(1200, sample_rate=24000)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 416 | track.push(i * 0.05, _loud(1200, sample_rate=24000)) | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 433 | track.push(0.0, _loud(4800, sample_rate=48000)) # recording rate, so no resampler | CODE |
| HIGH⚡ | tests/test_recorder_io.py | 439 | track.push(0.0, _loud(100, channels=2)) | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 228 | out += stripper.push(chunk) | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 268 | out = "".join(stripper.push(c) for c in chunks) + stripper.flush() | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 276 | out = "".join(stripper.push(c) for c in ["Right. ", " Anyway."]) + stripper.flush() | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 283 | out = "".join(stripper.push(c) for c in chunks) + stripper.flush() | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 546 | assert "".join(stripper.push(c) for c in chunks) + stripper.flush() == "Hi there!" | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 561 | assert "".join(stripper.push(c) for c in chunks) + stripper.flush() == "Hi there." | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 568 | assert "".join(stripper.push(c) for c in chunks) + stripper.flush() == "Hi there. Lovely day." | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 598 | out = "".join(stripper.push(c) for c in chunks) + stripper.flush() | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 606 | assert "".join(stripper.push(c) for c in chunks) + stripper.flush() == "Hi there." | CODE |
| HIGH⚡ | tests/test_tts.py | 831 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 833 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 838 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 839 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 875 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 877 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 879 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 906 | emitter_nostream.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 907 | emitter_nostream.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 934 | emitter_noflush.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 959 | emitter_noflush.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 1026 | emitter.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1031 | emitter.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1067 | emitter2.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1095 | emitter3.push(b"\xff\xff" * 100) | CODE |
| HIGH | tests/test_plugin_soniox_tts.py | 199 | slot.emitter.push(_SILENCE_PCM) | CODE |
| HIGH | tests/test_coverage_spans.py | 136 | audio_input.push(0.1) | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 112 | await h.push(0.08) # 50 ms out; 30 ms waits, for now | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 126 | await h.push(0.08) # 50 ms out, 30 ms held | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 130 | await h.push(0.08) # 30 + 80 ms: two frames out, 10 ms held | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 143 | await h.push(0.01) | CODE |
| HIGH⚡ | tests/test_playback_progress.py | 148 | await h.push(0.04) | CODE |
| 301 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_e2e_latency_handoff.py | 1 | CODE | |
| LOW | tests/test_plugin_inworld_tts.py | 3 | CODE | |
| LOW | tests/test_inference_avatar.py | 10 | CODE | |
| LOW | tests/test_plugin_google_tts_stream_close.py | 1 | 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_plugin_azure_realtime.py | 3 | 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_startup_spans.py | 9 | 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_keyterm_detection_span.py | 5 | 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 | 17 | 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_loop_monitor.py | 7 | CODE | |
| LOW | tests/test_playout_launch_pause.py | 1 | CODE | |
| LOW | tests/conftest.py | 18 | CODE | |
| LOW | tests/conftest.py | 18 | 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_disallow_interruptions_pause.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_realtime_overlapping_speech.py | 5 | 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_trace_schema.py | 4 | 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_simplismart_stt.py | 1 | CODE | |
| LOW | tests/test_plugin_fishaudio_tts.py | 3 | CODE | |
| LOW | tests/test_plugin_rime_tts.py | 3 | CODE | |
| LOW | tests/test_cli_console_output.py | 5 | CODE | |
| LOW | tests/test_cli_exit.py | 21 | CODE | |
| LOW | tests/test_convert_html_docs.py | 3 | CODE | |
| LOW | tests/test_personaplex_realtime_model.py | 3 | CODE | |
| 1425 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 | 112 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 114 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 510 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 512 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 577 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 579 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 731 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 733 | # =========================================================================== | 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 | 664 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 666 | # =========================================================================== | 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 | 796 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 805 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 1391 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 1400 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 1684 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 1692 | # --------------------------------------------------------------------------- | 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 | 555 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 563 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 634 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 641 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 976 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 988 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 1602 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 1613 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 304 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 306 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 446 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_recorder_io.py | 448 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_recorder_io.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_recorder_io.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 160 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 162 | # --------------------------------------------------------------------------- | COMMENT |
| 152 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/conftest.py | 316 | except Exception: | CODE |
| HIGH | tests/test_filler.py | 59 | except (asyncio.CancelledError, Exception): | CODE |
| HIGH | tests/test_tts.py | 112 | except av.InvalidDataError: | CODE |
| HIGH | tests/concurrency.py | 342 | except Exception: # pragma: no cover - best effort flush | CODE |
| HIGH | tests/concurrency.py | 380 | except Exception: # pragma: no cover | CODE |
| HIGH | tests/test_audio_recognition_aclose.py | 108 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_audio_recognition_aclose.py | 93 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_vad.py | 149 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_worker_config.py | 45 | except SystemExit: | CODE |
| HIGH | tests/test_meta_stt.py | 83 | except (json.JSONDecodeError, TypeError): | CODE |
| HIGH | tests/test_plugin_soniox_stt.py | 336 | except BaseException: | CODE |
| HIGH | tests/test_plugin_soniox_stt.py | 334 | except BaseException: | CODE |
| HIGH | tests/utils/audio_test.py | 82 | except (asyncio.CancelledError, Exception): | CODE |
| HIGH | tests/utils/audio_test.py | 154 | except (asyncio.CancelledError, Exception): | CODE |
| HIGH | examples/homepage/behaviors/scripted_callers.py | 82 | except RuntimeError: | CODE |
| HIGH | examples/hotel_receptionist/ui_view.py | 70 | except Exception: | CODE |
| HIGH | examples/frontdesk/agent.py | 193 | except RuntimeError: | CODE |
| HIGH | examples/frontdesk/agent.py | 179 | except RuntimeError: | CODE |
| HIGH | examples/primitives/echo-agent.py | 95 | except asyncio.QueueEmpty: | CODE |
| HIGH | .github/download_stats.py | 53 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/evals/evaluation.py | 198 | except RuntimeError: | CODE |
| HIGH | livekit-agents/livekit/agents/llm/llm.py | 192 | except Exception: | CODE |
| HIGH | …gents/livekit/agents/llm/_provider_format/anthropic.py | 81 | except (json.JSONDecodeError, TypeError): | CODE |
| HIGH | livekit-agents/livekit/agents/utils/aio/itertools.py | 118 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/utils/aio/itertools.py | 124 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/readchar.py | 185 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/cli.py | 279 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/cli.py | 416 | except _ExitCli: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/cli.py | 446 | except _ExitCli: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/cli.py | 459 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/cli.py | 285 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/cli.py | 466 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/watcher.py | 96 | except (asyncio.IncompleteReadError, ConnectionError, OSError): | CODE |
| HIGH | livekit-agents/livekit/agents/cli/_legacy.py | 704 | except RuntimeError: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/_legacy.py | 1627 | except _ExitCli: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/_legacy.py | 1637 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/cli/_legacy.py | 1596 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/agent_session.py | 1387 | except RuntimeError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/agent_activity.py | 1379 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/agent_activity.py | 2001 | except TypeError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/filler_scheduler.py | 79 | except asyncio.TimeoutError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/remote_session.py | 143 | except utils.aio.ChanClosed: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/remote_session.py | 449 | except asyncio.CancelledError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/remote_session.py | 1019 | except asyncio.CancelledError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/remote_session.py | 181 | except (ValueError, AttributeError): | CODE |
| HIGH | livekit-agents/livekit/agents/voice/remote_session.py | 247 | except (ConnectionError, OSError): | CODE |
| HIGH | livekit-agents/livekit/agents/voice/remote_session.py | 712 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/remote_session.py | 771 | except RuntimeError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/events.py | 268 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/background_audio.py | 320 | except RuntimeError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/room_io/room_io.py | 230 | except ValueError: | CODE |
| HIGH | livekit-agents/livekit/agents/voice/amd/detector.py | 562 | except RuntimeError: | CODE |
| HIGH | livekit-agents/livekit/agents/inference/interruption.py | 1005 | except asyncio.CancelledError: | CODE |
| HIGH | livekit-agents/livekit/agents/inference/_utils.py | 143 | except RuntimeError: | CODE |
| HIGH | …ekit-agents/livekit/agents/inference/eot/transports.py | 153 | except aio.ChanClosed: | CODE |
| HIGH | livekit-agents/livekit/agents/ipc/proc_pool.py | 261 | except asyncio.CancelledError: | CODE |
| HIGH | livekit-agents/livekit/agents/ipc/proc_client.py | 79 | except KeyboardInterrupt: | CODE |
| HIGH | livekit-agents/livekit/agents/ipc/proc_client.py | 265 | except Exception: | CODE |
| HIGH | livekit-agents/livekit/agents/ipc/proc_client.py | 74 | except KeyboardInterrupt: | CODE |
| HIGH | …vekit-agents/livekit/agents/ipc/job_thread_executor.py | 282 | except asyncio.TimeoutError: | CODE |
| 69 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 316 | except Exception: | CODE |
| LOW | tests/conftest.py | 337 | except Exception: | CODE |
| MEDIUM | tests/conftest.py | 302 | def _is_ignorable_task(task) -> bool: | CODE |
| MEDIUM | tests/conftest.py | 321 | 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 | 155 | except Exception: | CODE |
| LOW | examples/voice_agents/gpt-live/client_delegation.py | 68 | except Exception as e: | 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 | 110 | except Exception as exc: | CODE |
| LOW | examples/hotel_receptionist/agent.py | 164 | 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 | 101 | except Exception: | CODE |
| LOW | examples/warm-transfer/support_agent.py | 49 | 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 | 717 | 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 | 1448 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 303 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 365 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 383 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 396 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 771 | except Exception: | CODE |
| MEDIUM | livekit-agents/livekit/agents/job.py | 761 | 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 | 225 | except Exception: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 604 | except Exception: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 615 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/evals/evaluation.py | 171 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/duplex_adapter.py | 372 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 418 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 192 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 364 | except Exception as e: | CODE |
| MEDIUM | livekit-agents/livekit/agents/llm/llm.py | 189 | def _prewarm() -> None: | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 323 | except Exception: | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 348 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 642 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 707 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 1059 | except Exception as e: | CODE |
| 521 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_plugin_azure_realtime.py | 100 | CODE | |
| LOW | tests/test_trace_types_pii.py | 300 | CODE | |
| LOW | tests/conftest.py | 226 | CODE | |
| LOW | tests/test_trace_schema.py | 276 | CODE | |
| LOW | tests/fake_stt.py | 177 | CODE | |
| LOW | tests/test_plugin_rime_tts.py | 311 | CODE | |
| LOW | tests/test_plugin_rime_tts.py | 919 | CODE | |
| LOW | tests/test_plugin_rime_tts.py | 1025 | CODE | |
| LOW | tests/test_gpt_live_model.py | 474 | CODE | |
| LOW | tests/test_endpointing.py | 569 | 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 | 877 | CODE | |
| LOW | tests/test_agent_task_close_race.py | 226 | CODE | |
| LOW | tests/test_chat_ctx.py | 910 | CODE | |
| LOW | tests/test_stt.py | 199 | CODE | |
| LOW | tests/test_aio.py | 32 | 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 | 537 | 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 | 80 | CODE | |
| LOW | livekit-agents/livekit/agents/metrics/utils.py | 18 | CODE | |
| LOW | livekit-agents/livekit/agents/metrics/usage.py | 204 | CODE | |
| LOW | livekit-agents/livekit/agents/evals/judge.py | 59 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 608 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 712 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 616 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 311 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 552 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 795 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 853 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 566 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 129 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 355 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 467 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 321 | CODE | |
| 323 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_plugin_assemblyai_stt.py | 1601 | COMMENT | |
| LOW | tests/test_tts.py | 701 | # await asyncio.wait_for( | 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 | tests/test_plugin_neuphonic_tts.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | tests/test_plugin_asyncai_tts.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | tests/test_plugin_tts_sample_rate_sync.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | tests/concurrency.py | 921 | ) | COMMENT |
| LOW | tests/test_plugin_respeecher_tts.py | 1 | # Copyright 2023 LiveKit, Inc. | 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/homepage/behaviors/scripted_questions.txt | 1 | # Opening lines of the scripted callers that hit the homepage agent. | COMMENT |
| LOW | examples/voice_agents/otel_trace.py | 21 | from livekit.agents.telemetry import set_tracer_provider | COMMENT |
| LOW | …amples/hotel_receptionist/scenarios_tool_accuracy.yaml | 1 | # Scoped tool-based scenarios: every scenario here drives a concrete tool flow | COMMENT |
| LOW | …s/hotel_receptionist/scenarios_guardrails_and_faq.yaml | 1 | # Open-ended and adversarial scenarios: disputes, complaints, policy/info Q&A, | 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/llm/_realtime/openai.py | 101 | calculate_confidence_from_logprobs, | 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/cli/_legacy.py | 101 | # module = importlib.import_module(module_str) | COMMENT |
| LOW | …t-agents/livekit/agents/voice/transcription/filters.py | 61 | COMMENT | |
| 265 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_loop_monitor.py | 132 | async def _settle() -> None: | CODE |
| LOW | tests/test_filler.py | 90 | 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 | 84 | async def update_instructions(self, instructions: str) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 87 | async def update_chat_ctx(self, chat_ctx: ChatContext) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 92 | async def update_tools(self, tools: list[Tool]) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 95 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: | CODE |
| LOW⚡ | tests/test_plugin_elevenlabs_stt.py | 213 | def update_options(self, **kwargs: object) -> None: | CODE |
| LOW⚡ | tests/test_plugin_elevenlabs_stt.py | 334 | def update_options(self, **kwargs: object) -> None: | CODE |
| LOW⚡ | tests/test_telemetry_exception_redaction.py | 36 | def set_attribute(self, key: str, value: Any) -> None: | CODE |
| LOW⚡ | tests/test_telemetry_exception_redaction.py | 45 | def set_status(self, status: trace.Status) -> None: | CODE |
| LOW⚡ | tests/test_telemetry_exception_redaction.py | 48 | 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_recording.py | 250 | def _setup_cloud_tracer_for_job(job_id: str = "job-1", **kwargs: Any) -> None: | CODE |
| LOW | tests/test_duplex_adapter.py | 92 | async def _update_instructions(self, instructions: str) -> None: | CODE |
| LOW | tests/test_duplex_adapter.py | 99 | async def _update_tools(self, tools: list[llm.Tool]) -> None: | CODE |
| LOW | tests/test_duplex_adapter.py | 164 | async def _settle() -> 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 | 55 | 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 | 1498 | async def _update_worker_status(self) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1531 | async def _update_job_status(self, proc: ipc.job_executor.JobExecutor) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/__init__.py | 169 | __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 | 280 | def _set_result(self, result: WarmTransferResult | Exception) -> None: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 409 | def _set_io_enabled(self, enabled: bool) -> None: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 539 | def _setup_origination(self, **_: object) -> 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/duplex_adapter.py | 571 | async def update_instructions(self, instructions: str) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/llm/duplex_adapter.py | 574 | async def update_chat_ctx(self, chat_ctx: ChatContext) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/llm/duplex_adapter.py | 598 | async def update_tools(self, tools: list[Tool]) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/llm/duplex_adapter.py | 601 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 250 | async def update_instructions(self, instructions: str) -> None: ... | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 258 | async def update_tools(self, tools: list[Tool]) -> None: ... | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 261 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: ... | CODE |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 605 | def update_tools(self, tools: Sequence[Tool | Toolset]) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/llm/__init__.py | 78 | __all__ = [ | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 246 | def _set_available(self, index: int, available: bool) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 411 | async def update_instructions(self, instructions: str) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 415 | async def update_chat_ctx(self, chat_ctx: ChatContext) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 421 | async def update_tools(self, tools: list[Tool]) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 425 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/llm/duplex.py | 167 | async def _update_instructions(self, instructions: str) -> None: ... | CODE |
| 248 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_plugin_simplismart_stt.py | 0 | a socket that accepts writes and never delivers anything: the half-open case from the client's point of view. `receive() | STRING |
| HIGH | tests/test_plugin_xai_stt.py | 0 | a socket that accepts writes and never delivers anything: the half-open case from the client's point of view. `receive() | STRING |
| HIGH | tests/test_plugin_telnyx_stt.py | 0 | a socket that accepts writes and never delivers anything: the half-open case from the client's point of view. `receive() | STRING |
| HIGH | tests/test_plugin_simplismart_stt.py | 0 | a socket in the state aiohttp leaves it in when a ping goes unanswered. the heartbeat closes the connection itself, so t | STRING |
| HIGH | tests/test_plugin_xai_stt.py | 0 | a socket in the state aiohttp leaves it in when a ping goes unanswered. the heartbeat closes the connection itself, so t | STRING |
| HIGH | tests/test_plugin_telnyx_stt.py | 0 | a socket in the state aiohttp leaves it in when a ping goes unanswered. the heartbeat closes the connection itself, so t | STRING |
| 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 | the model of the instance that serves next (see :meth:`_next_instance`). spans and metrics read this, so a failover show | STRING |
| HIGH | livekit-agents/livekit/agents/tts/fallback_adapter.py | 0 | the model of the instance that serves next (see :meth:`_next_instance`). spans and metrics read this, so a failover show | STRING |
| HIGH | livekit-agents/livekit/agents/stt/fallback_adapter.py | 0 | the model of the instance that serves next (see :meth:`_next_instance`). spans and metrics read this, so a failover show | STRING |
| HIGH | livekit-agents/livekit/agents/llm/fallback_adapter.py | 0 | the provider of the instance that serves next (see :attr:`model`). | STRING |
| HIGH | livekit-agents/livekit/agents/tts/fallback_adapter.py | 0 | the provider of the instance that serves next (see :attr:`model`). | STRING |
| HIGH | livekit-agents/livekit/agents/stt/fallback_adapter.py | 0 | the provider of the instance that serves next (see :attr:`model`). | 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 | …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 |
|---|---|---|---|---|
| LOW | tests/test_amd_classifier.py | 27 | CODE | |
| LOW | tests/test_plugin_bland_tts.py | 375 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 304 | 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 | 45 | CODE | |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 452 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_realtime/openai.py | 344 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_realtime/openai.py | 373 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_realtime/openai.py | 403 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_realtime/openai.py | 582 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_realtime/openai.py | 746 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_realtime/openai.py | 1394 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/turn.py | 336 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent_session.py | 398 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent_activity.py | 1771 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent.py | 48 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent.py | 866 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/amd/detector.py | 169 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/amd/classifier.py | 106 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 234 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 253 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 272 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 291 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 310 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 329 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 348 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 366 | 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 | 420 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 437 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 454 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 471 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 488 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 505 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 523 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 540 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 557 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 573 | CODE | |
| LOW | …kit-agents/livekit/agents/inference/realtime/openai.py | 63 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/eot/detector.py | 35 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/tts.py | 74 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/tts.py | 209 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 139 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 364 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 462 | CODE | |
| LOW | …vekit-plugins-cerebras/livekit/plugins/cerebras/llm.py | 103 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/tts.py | 389 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/tts.py | 667 | 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 | 467 | CODE | |
| 142 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | livekit-agents/livekit/agents/llm/_realtime/openai.py | 433 | Initialize a Realtime model client for OpenAI or Azure OpenAI. Args: model (str): Realtime | STRING |
| HIGH | livekit-agents/livekit/agents/llm/_realtime/openai.py | 607 | Create a RealtimeModel configured for Azure OpenAI. Args: azure_deployment (str): Azure Op | STRING |
| 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 | 300 | 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 | 1725 | 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 | livekit-agents/livekit/agents/voice/speech_handle.py | 204 | Interrupt the current speech generation. Args: force: Interrupt even if this speech disallows inter | STRING |
| HIGH | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 170 | 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 | 204 | 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 | 617 | 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/gpt_live_model.py | 287 | Create a GPTLiveModel served by Azure OpenAI. Args: azure_deployment: Deployment name of the GPT-Li | 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 | 171 | 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-agents/livekit/agents/llm/_realtime/openai.py | 645 | api_key="your-api-key", | STRING |
| HIGH | livekit-agents/livekit/agents/llm/_realtime/openai.py | 671 | api_key="your-api-key", | STRING |
| 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 | 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-azure/README.md | 195 | api_key="your-api-key", | 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 |
|---|---|---|---|---|
| CRITICAL | tests/test_session_options_report.py | 49 | assert td.startswith("livekit.agents.inference.eot.detector.TurnDetector(") | CODE |
| CRITICAL | …s/livekit-plugins-openai/livekit/plugins/openai/tts.py | 261 | oai_stream = self._tts._client.audio.speech.with_streaming_response.create( | CODE |
| CRITICAL | …kit-plugins-mistralai/livekit/plugins/mistralai/tts.py | 157 | stream = await self._tts._client.audio.speech.complete_async( | CODE |
| CRITICAL | …kit-plugins-mistralai/livekit/plugins/mistralai/tts.py | 166 | stream = await self._tts._client.audio.speech.complete_async( | CODE |
| CRITICAL | …ugins-google/livekit/plugins/google/beta/gemini_tts.py | 389 | 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 | 213 | tts = soniox.TTS(api_key="fake-key", **tts_kwargs) | CODE |
| LOW⚡ | tests/test_plugin_soniox_tts.py | 279 | soniox.TTS(api_key="fake-key", stream_idle_timeout=0) | CODE |
| LOW⚡ | tests/test_plugin_soniox_tts.py | 281 | soniox.TTS(api_key="fake-key", stream_idle_timeout=-1.0) | CODE |
| LOW⚡ | tests/test_plugin_google_realtime.py | 1052 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW⚡ | tests/test_plugin_google_realtime.py | 1060 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 43 | api_key="fake-key", | CODE |
| LOW | tests/test_plugin_google_realtime.py | 68 | api_key="fake-key", | CODE |
| LOW | tests/test_plugin_google_realtime.py | 86 | model="gemini-3.8-live", api_key="fake-key", project="test-project", location="eu" | CODE |
| LOW | tests/test_plugin_google_realtime.py | 100 | api_key="fake-key", | CODE |
| LOW | tests/test_plugin_google_realtime.py | 137 | api_key="fake-key", | CODE |
| LOW | tests/test_plugin_google_realtime.py | 201 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 217 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 706 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 722 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 780 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 956 | monkeypatch.setenv("GOOGLE_API_KEY", "fake-key") | CODE |
| LOW | tests/test_plugin_google_realtime.py | 1012 | 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_eou_wait_span.py | 489 | assert "Jane Doe" not in rendered and "lookup failed" not in rendered | CODE |
| LOW⚡ | tests/test_recording.py | 629 | assert serialized_stt_options["lk.pii.keyterms"] == ["Acme Corp"] | CODE |
| LOW⚡ | tests/test_recording.py | 631 | assert stt_context_options["keyterms"] == ["Acme Corp"] | CODE |
| LOW | tests/test_recording.py | 614 | "keyterms": ["Acme Corp"], | CODE |
| LOW | tests/test_session_options_report.py | 175 | assert "Jane Doe" not in json.dumps(serialized) | 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 | 71 | "keyterms": ["LiveKit", "Acme Corp"], | STRING |
| 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 | 933 | # 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 | 958 | # 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 | 854 | # Create a fresh session for this stream to avoid conflicts | COMMENT |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 647 | # 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 | 388 | # Create the stream | COMMENT |
| MEDIUM | …ugins-speechmatics/livekit/plugins/speechmatics/stt.py | 590 | # Create the Agent STT client. Turn detection is a top-level `turn_config` (a sibling | 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 | 294 | # Create a fresh session for this stream to avoid conflicts | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_input_delta.py | 340 | # a persistent system message mid-history, and a per-turn RAG assistant message | COMMENT |
| MEDIUM | tests/test_input_delta.py | 401 | (True, False), # persistent S and a RAG message | CODE |
| 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 | …s/hotel_receptionist/scenarios_guardrails_and_faq.yaml | 4 | # only — no `expected_state` — so they exercise guardrails and conversational | COMMENT |
| MEDIUM | …kit-plugins-anthropic/livekit/plugins/anthropic/llm.py | 312 | 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 | 686 | # Empty text would make the server hallucinate audio; handle the two cases locally. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 742 | # Step 1: Wait for assistant to finish speaking (AUDIO contentEnd with END_TURN) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 751 | # Step 2: Wait for audio to fully stop (no new audio for 1 second) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 765 | # Step 3: Send close events to trigger completionEnd from Nova Sonic | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 772 | # Step 4: Wait for completionEnd and let _done_fut resolve | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 793 | # Step 1: Drain any pending tool results | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 807 | # Step 2: Signal tasks to stop | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 810 | # Step 3: Wait for response task to exit naturally, then cancel if needed | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 824 | # Step 4: Cancel audio input task (blocked on channel, won't exit naturally) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 832 | # Step 5: Close the stream (close events already sent in _session_recycle_timer) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 840 | # Step 6: Reset state for new session | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1075 | # Step 1: Send session init events (session start, prompt start, system prompt) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1083 | # Step 2: Send history events with small delays between them | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1088 | # Step 3: Start response reader first (calls await_output, sets _stream_ready) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1093 | # Step 4: Start audio input (waits for _stream_ready before sending audio_content_start) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1098 | # Step 5: Allow audio contentStart to be sent before unblocking | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1104 | # Step 6: If we popped a user message from history, send it as | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 854 | # 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 | 994 | # Check if a tracer provider is not set and set one up | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1209 | # Check if session is still valid | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1266 | # Check if reconnection was requested | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1360 | # Check if we have enough data for a chunk | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1407 | # Check if Sarvam VAD triggered flush | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1687 | # Set flag to trigger flush when Sarvam detects end of speech | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1470 | # Check if this is END_TURN (assistant finished speaking) | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 1892 | # Check if this is an audio message (already transcribed by Nova) | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 2208 | # Check if generate_reply is supported (requires mixed modalities) | COMMENT |
| LOW⚡ | …it-plugins-bithuman/livekit/plugins/bithuman/avatar.py | 76 | # Check if string is empty after cleaning | COMMENT |
| LOW⚡ | …it-plugins-bithuman/livekit/plugins/bithuman/avatar.py | 85 | # Check if string contains only valid base64 characters | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 830 | # Check if restart is needed | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 866 | # Check if restart is needed | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 1230 | # Check if we have a current generation before processing audio | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 742 | # Step 1: Wait for assistant to finish speaking (AUDIO contentEnd with END_TURN) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 751 | # Step 2: Wait for audio to fully stop (no new audio for 1 second) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 765 | # Step 3: Send close events to trigger completionEnd from Nova Sonic | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 772 | # Step 4: Wait for completionEnd and let _done_fut resolve | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 793 | # Step 1: Drain any pending tool results | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 807 | # Step 2: Signal tasks to stop | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 810 | # Step 3: Wait for response task to exit naturally, then cancel if needed | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 824 | # Step 4: Cancel audio input task (blocked on channel, won't exit naturally) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 832 | # Step 5: Close the stream (close events already sent in _session_recycle_timer) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 840 | # Step 6: Reset state for new session | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1075 | # Step 1: Send session init events (session start, prompt start, system prompt) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1083 | # Step 2: Send history events with small delays between them | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1088 | # Step 3: Start response reader first (calls await_output, sets _stream_ready) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1093 | # Step 4: Start audio input (waits for _stream_ready before sending audio_content_start) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1098 | # Step 5: Allow audio contentStart to be sent before unblocking | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1104 | # Step 6: If we popped a user message from history, send it as | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 854 | # Step 7: Start new session with preserved state | 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 | 231 | # the confirm flag is harness state, not an argument | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 690 | # Static credentials - just use the max session duration | COMMENT |
| LOW | …vekit-plugins-deepgram/livekit/plugins/deepgram/stt.py | 606 | # expected just return; otherwise re-raise as a retryable APIError so | COMMENT |
| MEDIUM | …google/livekit/plugins/google/realtime/realtime_api.py | 1675 | # TODO(dz): this isn't a seamless reconnection just yet | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 893 | # If we're already closing due to send loop shutdown, just return | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_agent_session.py | 1759 | CODE | |
| MEDIUM | tests/test_agent_session.py | 1830 | CODE | |
| MEDIUM | tests/test_plugin_google_realtime.py | 749 | CODE | |
| MEDIUM | tests/test_plugin_google_gemini_tts.py | 118 | CODE | |
| MEDIUM | tests/test_plugin_google_gemini_tts.py | 153 | CODE | |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 2219 | CODE | |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 2223 | 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/support_agent.py | 35 | - 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 | 689 | # 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 |