A framework for building realtime voice AI agents 🤖🎙️📹
This report presents the forensic synthetic code analysis of livekit/agents, a Python project with 11,355 GitHub stars. SynthScan v2.0 examined 204,217 lines of code across 1076 source files, recording 4682 pattern matches distributed across 23 syntactic categories. The overall adjusted score of 30.1 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 4682 distinct pattern matches across 23 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_plugin_inworld_tts.py | 18 | async def test_delivery_mode_default_not_given(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 25 | async def test_delivery_mode_set_on_init(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 32 | async def test_delivery_mode_accepts_all_documented_values(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 40 | async def test_delivery_mode_rejects_unknown_value(): | CODE |
| LOW⚡ | tests/test_plugin_inworld_tts.py | 47 | async def test_delivery_mode_update_options(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 59 | async def _capture_first_ws_create_packet(opts) -> dict: | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 99 | async def test_ws_create_packet_includes_delivery_mode(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 121 | async def test_ws_create_packet_omits_delivery_mode_when_not_given(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 141 | def _patch_session_to_capture_post(tts, captured: dict[str, object]) -> None: | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 164 | async def test_http_body_includes_delivery_mode(): | CODE |
| LOW | tests/test_plugin_inworld_tts.py | 183 | async def test_http_body_omits_delivery_mode_when_not_given(): | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 52 | def _make_full_recognition_for_eou() -> AudioRecognition: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 621 | def test_low_min_silence_with_audio_detector_raises(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 629 | def test_adequate_min_silence_passes(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_turn_detection.py | 636 | def test_non_audio_detector_skips(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 151 | async def test_sos_during_bounce_cancels_commit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 216 | async def test_stale_spike_does_not_block_next_commit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 237 | async def test_vad_then_stt_emits_eot_prediction_once(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 275 | async def test_text_detector_emits_every_bounce(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 306 | async def test_clear_user_turn_allows_next_turn_to_emit(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 344 | async def test_emits_with_eot_context_when_turn_continues(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 362 | async def test_emits_with_eot_context_when_turn_ends(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 379 | async def test_no_emit_below_threshold(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 390 | async def test_no_emit_when_backchannel_disabled(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 400 | async def test_no_emit_for_text_detector(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 423 | async def test_silence_tick_starts_request_once(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 433 | async def test_resumed_speech_without_sos_rearms_next_pause(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 462 | async def test_silence_tick_starts_request_while_agent_speaking(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 476 | async def test_eos_consumes_silence_tick_request_without_predicting(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 493 | async def test_eos_runs_eou_even_while_agent_speaking(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 512 | async def test_sos_tears_down_request_and_rearms(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 523 | async def test_eos_never_starts_request(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 539 | async def test_late_stt_final_after_flush_short_circuits( | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 559 | async def test_predict_timeout_signals_fallback_and_drops_future(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 578 | async def test_commit_flushes_stream_and_marks_turn_flushed(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 606 | def _make_recognition_for_validation() -> AudioRecognition: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 650 | def test_vad_without_min_silence_knob_skips(self) -> None: | CODE |
| LOW | tests/test_audio_recognition_turn_detection.py | 659 | def test_update_turn_detector_validates_pairing(self) -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_handoff.py | 47 | async def test_reusable_same_class_same_stt() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 58 | async def test_not_reusable_different_stt_instance() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 77 | async def test_not_reusable_different_stt_node_override() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 100 | async def test_not_reusable_subclass_inherits_custom_stt_node() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 127 | async def test_not_reusable_subclass_overrides_stt_node() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 150 | async def test_not_reusable_no_audio_recognition() -> None: | CODE |
| LOW⚡ | tests/test_audio_recognition_handoff.py | 166 | async def _detach_turn_detector_if_reusable(old: MagicMock, new: MagicMock) -> object | None: | CODE |
| LOW⚡ | tests/test_audio_recognition_handoff.py | 172 | async def test_turn_detector_reusable_same_instance() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 183 | async def test_turn_detector_not_reusable_different_instance() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 197 | async def test_turn_detector_not_reusable_when_new_opts_out() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 222 | async def test_input_anchor_preserved_when_pipeline_reused() -> None: | CODE |
| LOW | tests/test_audio_recognition_handoff.py | 243 | def test_input_anchor_reads_through_to_pipeline() -> None: | CODE |
| LOW | tests/test_schema_gemini.py | 73 | async def test_json_def_replaced_any_of(): | CODE |
| LOW | tests/test_ipc.py | 197 | async def _job_entrypoint_session_aclose_hangs(job_ctx: JobContext) -> None: | CODE |
| LOW | tests/test_ipc.py | 233 | async def _job_entrypoint_raises_after_shutdown(job_ctx: JobContext) -> None: | CODE |
| LOW | tests/test_ipc.py | 420 | async def test_proc_pool_launch_job_raises_when_all_spawns_fail(): | CODE |
| LOW | tests/test_ipc.py | 491 | async def test_aclose_after_cancelled_start(): | CODE |
| LOW | tests/test_ipc.py | 542 | async def test_shutdown_callback_runs_when_session_aclose_hangs(): | CODE |
| LOW | tests/test_ipc.py | 568 | async def test_shutdown_callback_runs_when_entrypoint_raises(): | CODE |
| LOW | tests/test_ipc.py | 593 | async def test_job_graceful_shutdown(): | CODE |
| LOW | tests/test_ipc.py | 610 | def test_log_queue_drains_before_stop(): | CODE |
| LOW⚡ | tests/test_inference_stt_fallback.py | 31 | def test_simple_model_without_language(self): | CODE |
| 1519 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_plugin_inworld_tts.py | 3 | CODE | |
| LOW | tests/test_audio_recognition_turn_detection.py | 26 | CODE | |
| LOW | tests/fake_session.py | 1 | CODE | |
| LOW | tests/test_audio_recognition_handoff.py | 1 | CODE | |
| LOW | tests/test_ipc.py | 1 | CODE | |
| LOW | tests/test_tokenizer_xml_markup.py | 7 | CODE | |
| LOW | tests/fake_vad.py | 1 | CODE | |
| LOW | tests/test_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_expr_markup.py | 10 | CODE | |
| LOW | tests/test_session_host.py | 1 | CODE | |
| LOW | tests/test_turn_detection_cloud_stream.py | 13 | CODE | |
| LOW | tests/test_agent_session.py | 1 | CODE | |
| LOW | tests/conftest.py | 17 | CODE | |
| LOW | tests/conftest.py | 17 | CODE | |
| LOW | tests/lk_server.py | 8 | CODE | |
| LOW | tests/test_filler.py | 1 | CODE | |
| LOW | tests/test_running_tool_placeholders.py | 1 | CODE | |
| LOW | tests/test_amd_classifier.py | 8 | CODE | |
| LOW | tests/test_tts.py | 1 | CODE | |
| LOW | tests/fake_io.py | 1 | CODE | |
| LOW | tests/test_run_input_errors.py | 4 | CODE | |
| LOW | tests/test_audio_sink_proxy.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_plugin_fishaudio_tts.py | 3 | CODE | |
| LOW | tests/test_convert_html_docs.py | 3 | CODE | |
| LOW | tests/test_personaplex_realtime_model.py | 3 | CODE | |
| LOW | tests/test_realtime_fallback.py | 1 | CODE | |
| LOW | tests/test_tts_fallback.py | 1 | CODE | |
| LOW | tests/test_cli_log_level.py | 1 | CODE | |
| LOW | tests/test_speech_start_time_persistence.py | 21 | CODE | |
| LOW | tests/test_audio_turn_detector_fallback.py | 18 | CODE | |
| LOW | tests/fake_realtime.py | 1 | CODE | |
| LOW | tests/test_inference_utils.py | 15 | CODE | |
| LOW | tests/concurrency.py | 63 | CODE | |
| LOW | tests/test_end_of_turn_metrics.py | 11 | CODE | |
| LOW | tests/test_plugin_gnani_tts.py | 3 | CODE | |
| LOW | tests/test_langgraph.py | 3 | CODE | |
| LOW | tests/test_supervised_proc_memory.py | 1 | CODE | |
| LOW | tests/test_supervised_proc_memory.py | 105 | CODE | |
| LOW | tests/test_audio_emitter.py | 3 | CODE | |
| LOW | tests/test_plugin_elevenlabs_stt.py | 3 | CODE | |
| LOW | tests/test_agent_task_close_race.py | 1 | CODE | |
| LOW | tests/test_user_turn_exceeded.py | 1 | CODE | |
| LOW | tests/test_plugin_openai_responses.py | 1 | CODE | |
| LOW | tests/test_recording.py | 1 | CODE | |
| LOW | tests/test_plugin_openai_realtime_reasoning.py | 1 | CODE | |
| LOW | tests/test_plugin_perplexity_responses.py | 1 | CODE | |
| LOW | tests/test_plugin_deepgram_stt.py | 1 | CODE | |
| LOW | tests/test_interruption_hold_window.py | 12 | CODE | |
| LOW | tests/test_remote_session.py | 1 | CODE | |
| LOW | tests/test_stt_base.py | 3 | CODE | |
| LOW | tests/test_transcript_sync_markup.py | 11 | CODE | |
| LOW | tests/test_worker_connection.py | 8 | CODE | |
| LOW | tests/test_worker_config.py | 10 | CODE | |
| LOW | tests/test_audio_recognition_push_audio.py | 1 | CODE | |
| LOW | tests/test_speech_handle_exception.py | 13 | CODE | |
| 1104 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/fake_session.py | 115 | audio_input.push(0.1) | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 522 | out = s.push("Hi <emo") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 523 | out += s.push('tion value="happy"/> the') | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 524 | out += s.push("re") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 535 | first = s.push("The value 3 < 5 ") | CODE |
| HIGH⚡ | tests/test_tokenizer_xml_markup.py | 537 | rest = s.push("is true.") + s.flush() | CODE |
| HIGH⚡ | tests/test_expr_markup.py | 212 | out += stripper.push(chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 806 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 808 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 813 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 814 | emitter_stream.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 850 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 852 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH⚡ | tests/test_tts.py | 854 | emitter_multi.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 881 | emitter_nostream.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 882 | emitter_nostream.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 909 | emitter_noflush.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 934 | emitter_noflush.push(pcm_chunk) | CODE |
| HIGH | tests/test_tts.py | 1001 | emitter.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1006 | emitter.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1042 | emitter2.push(wav_bytes) | CODE |
| HIGH | tests/test_tts.py | 1070 | emitter3.push(b"\xff\xff" * 100) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 89 | e.push(_make_pcm(SR, NC, 5)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 103 | e.push(_make_pcm(SR, NC, 80)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 165 | e.push(_make_pcm(SR, NC, 200)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 170 | e.push(_make_pcm(SR, NC, 200)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 191 | e.push(_make_pcm(SR, NC, 500)) | CODE |
| HIGH⚡ | tests/test_audio_emitter.py | 203 | e.push(_make_pcm(SR, NC, 100)) | CODE |
| HIGH | tests/test_audio_emitter.py | 74 | e.push(_make_pcm(SR, NC, 10)) | CODE |
| HIGH | tests/test_audio_emitter.py | 123 | e.push(_make_pcm(SR, NC, 200)) | CODE |
| HIGH | tests/test_audio_emitter.py | 149 | e.push(_make_pcm(SR, NC, 10)) | CODE |
| HIGH | tests/test_audio_emitter.py | 235 | e.push(chunk1) | CODE |
| HIGH | tests/test_audio_emitter.py | 237 | e.push(chunk2) | CODE |
| HIGH | tests/test_audio_emitter.py | 258 | e.push(_make_pcm(SR, NC, 300)) | CODE |
| HIGH | tests/fake_tts.py | 173 | output_emitter.push(b"\x00\x00" * num_samples) | CODE |
| HIGH | tests/fake_tts.py | 256 | output_emitter.push(b"\x00\x00" * num_samples) | CODE |
| HIGH | tests/test_audio_decoder.py | 40 | decoder.push(opus_data) | CODE |
| HIGH | tests/test_audio_decoder.py | 391 | decoder.push(wav_bytes[i : i + chunk_size]) | CODE |
| HIGH | tests/test_audio_decoder.py | 417 | decoder.push(wav_bytes) | CODE |
| HIGH | tests/test_audio_decoder.py | 446 | decoder.push(wav_chunk) | CODE |
| HIGH | tests/test_audio_decoder.py | 475 | decoder.push(wav_chunk) | CODE |
| HIGH | tests/test_tools.py | 474 | prepare_function_arguments(fnc=mock_tool_2, json_arguments='{"arg1": null}') | CODE |
| HIGH | tests/utils/__init__.py | 100 | frames = resampler.push(input_audio) | CODE |
| HIGH | examples/other/translation/multi-user-translator.py | 163 | frames = self._resampler.push(frame.frame) | CODE |
| HIGH | livekit-agents/livekit/agents/utils/audio.py | 243 | decoder.push(chunk) | CODE |
| HIGH | livekit-agents/livekit/agents/utils/audio.py | 305 | frames.extend(self._resampler.push(frame)) | CODE |
| HIGH | livekit-agents/livekit/agents/utils/codecs/decoder.py | 214 | for resampled in self._resampler.push(frame): | CODE |
| HIGH⚡ | livekit-agents/livekit/agents/utils/codecs/decoder.py | 328 | for frame in self._bstream.push(data): | CODE |
| HIGH⚡ | livekit-agents/livekit/agents/utils/codecs/decoder.py | 329 | for resampled in self._resampler.push(frame): | CODE |
| HIGH⚡ | livekit-agents/livekit/agents/utils/codecs/decoder.py | 332 | for frame in self._bstream.push(data): | CODE |
| HIGH | livekit-agents/livekit/agents/utils/codecs/decoder.py | 377 | self._wav_decoder.push(chunk) | CODE |
| HIGH | livekit-agents/livekit/agents/cli/tcp_console.py | 51 | resampled = self._resampler.push(audio_frame) | CODE |
| HIGH | livekit-agents/livekit/agents/cli/tcp_console.py | 108 | resampled = self._resampler.push(frame) | CODE |
| HIGH | livekit-agents/livekit/agents/voice/generation.py | 483 | for f in resampler.push(frame): | CODE |
| HIGH | livekit-agents/livekit/agents/voice/room_io/_output.py | 107 | for f in self._audio_bstream.push(frame.data): | CODE |
| HIGH | livekit-agents/livekit/agents/voice/room_io/_output.py | 477 | clean_text = self._stripper.push(text) | CODE |
| HIGH | …nts/livekit/agents/voice/room_io/_pre_connect_audio.py | 133 | decoder.push(chunk) | CODE |
| HIGH | …nts/livekit/agents/voice/room_io/_pre_connect_audio.py | 144 | for frame in audio_stream.push(chunk): | CODE |
| HIGH | livekit-agents/livekit/agents/voice/room_io/_input.py | 360 | yield from resampler.push(frame) | CODE |
| HIGH | …nts/livekit/agents/voice/transcription/synchronizer.py | 393 | clean_word = self._pacing_stripper.push(word) | CODE |
| 114 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 | 42 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_handoff.py | 44 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_handoff.py | 161 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_audio_recognition_handoff.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_audio_recognition_handoff.py | 208 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_audio_recognition_handoff.py | 210 | # --------------------------------------------------------------------------- | 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 | 58 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 60 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 79 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 81 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 207 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 209 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 274 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 276 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 481 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_tokenizer_xml_markup.py | 483 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 361 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 363 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 428 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_tokenizer_xml_markup.py | 430 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 323 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 330 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 464 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 466 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 726 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 735 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 906 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_assemblyai_stt.py | 915 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 405 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 411 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 442 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 444 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 517 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 524 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 564 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_assemblyai_stt.py | 571 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 98 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 100 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 152 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 154 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 226 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 245 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 247 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 300 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_expr_markup.py | 302 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_expr_markup.py | 35 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_expr_markup.py | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_session_host.py | 241 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_session_host.py | 243 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_session_host.py | 261 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_session_host.py | 263 | # --------------------------------------------------------------------------- | COMMENT |
| 85 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 299 | except Exception: | CODE |
| LOW | tests/conftest.py | 320 | except Exception: | CODE |
| MEDIUM | tests/conftest.py | 285 | def _is_ignorable_task(task) -> bool: | CODE |
| MEDIUM | tests/conftest.py | 304 | def format_task(task) -> str: | CODE |
| LOW | tests/concurrency.py | 114 | except Exception: # pragma: no cover - defensive | CODE |
| LOW | tests/concurrency.py | 342 | except Exception: # pragma: no cover - best effort flush | CODE |
| LOW | tests/concurrency.py | 380 | except Exception: # pragma: no cover | CODE |
| LOW | tests/test_interruption/test_interruption_failover.py | 91 | except Exception as exc: | CODE |
| LOW | examples/healthcare/agent.py | 117 | except Exception as e: | CODE |
| LOW | examples/other/translation/multi-user-translator.py | 151 | except Exception: | CODE |
| LOW | examples/drive-thru/order.py | 62 | except Exception: | CODE |
| LOW | examples/drive-thru/agent.py | 524 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/ui_view.py | 70 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/ui_view.py | 117 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/ui_view.py | 138 | except Exception as e: | CODE |
| LOW | examples/hotel_receptionist/agent.py | 141 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/agent.py | 154 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/agent.py | 199 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/run_artifacts.py | 36 | except Exception: | CODE |
| LOW | examples/hotel_receptionist/run_artifacts.py | 47 | except Exception: | CODE |
| LOW | examples/frontdesk/ui_view.py | 97 | except Exception: | CODE |
| LOW | examples/warm-transfer/warm_transfer.py | 77 | except Exception as e: | CODE |
| LOW | examples/telephony/bank-ivr/dial_bank_agent.py | 51 | except Exception as e: | CODE |
| LOW | examples/inference/agent.py | 113 | except Exception: | CODE |
| LOW | scripts/generate_test_summary.py | 86 | except Exception as e: | CODE |
| MEDIUM | .github/convert_html_docs.py | 1023 | print(f"Error: {input_dir} is not a directory", file=sys.stderr) | CODE |
| MEDIUM | .github/convert_html_docs.py | 1028 | print(f"Error: {output_dir} is not a directory", file=sys.stderr) | CODE |
| LOW | .github/download_stats.py | 53 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 716 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1152 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1439 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 294 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 308 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 321 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/job.py | 633 | except Exception: | CODE |
| MEDIUM | livekit-agents/livekit/agents/job.py | 623 | def _delete_room() -> None: | CODE |
| LOW | livekit-agents/livekit/agents/__main__.py | 32 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/__main__.py | 50 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/jupyter.py | 65 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/beta/tools/send_dtmf.py | 32 | except Exception as e: | CODE |
| LOW | …kit-agents/livekit/agents/beta/workflows/task_group.py | 134 | except Exception as e: | CODE |
| LOW | …kit-agents/livekit/agents/beta/workflows/task_group.py | 160 | except Exception as e: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 199 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/evals/evaluation.py | 161 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 367 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 224 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 265 | except Exception as e: | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 277 | except Exception: | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 299 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 455 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 520 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 783 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 211 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 240 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 268 | except Exception: # exceptions already logged inside _try_generate | CODE |
| LOW | livekit-agents/livekit/agents/utils/log.py | 18 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/utils/log.py | 33 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/utils/connection_pool.py | 77 | except Exception as e: | CODE |
| LOW | livekit-agents/livekit/agents/utils/codecs/decoder.py | 378 | except Exception: | CODE |
| LOW | livekit-agents/livekit/agents/utils/codecs/decoder.py | 400 | except Exception: | CODE |
| 409 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 209 | CODE | |
| LOW | tests/fake_stt.py | 176 | CODE | |
| LOW | tests/test_endpointing.py | 456 | CODE | |
| LOW | tests/concurrency.py | 868 | CODE | |
| LOW | tests/test_stt.py | 184 | CODE | |
| LOW | examples/drive-thru/database.py | 605 | 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 | 36 | CODE | |
| LOW | examples/telephony/basic_dtmf_agent.py | 55 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 347 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 441 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 502 | CODE | |
| LOW | examples/telephony/bank-ivr/ivr_system_agent.py | 566 | CODE | |
| LOW | scripts/generate_test_summary.py | 12 | CODE | |
| LOW | .github/convert_html_docs.py | 806 | CODE | |
| LOW | .github/convert_html_docs.py | 990 | CODE | |
| LOW | .github/convert_html_docs.py | 162 | CODE | |
| LOW | .github/convert_html_docs.py | 541 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 536 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 1174 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 1194 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 801 | CODE | |
| LOW | …it-agents/livekit/agents/beta/workflows/credit_card.py | 225 | CODE | |
| LOW | …it-agents/livekit/agents/beta/workflows/credit_card.py | 503 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/utils.py | 30 | CODE | |
| LOW | …vekit-agents/livekit/agents/metrics/usage_collector.py | 77 | CODE | |
| LOW | livekit-agents/livekit/agents/metrics/utils.py | 18 | CODE | |
| LOW | livekit-agents/livekit/agents/metrics/usage.py | 198 | CODE | |
| LOW | livekit-agents/livekit/agents/evals/judge.py | 41 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 557 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 661 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 565 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/llm.py | 205 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 467 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 691 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 747 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 888 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 481 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 90 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 313 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 528 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/fallback_adapter.py | 245 | CODE | |
| LOW | livekit-agents/livekit/agents/llm/_strict.py | 32 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/google.py | 19 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/google.py | 123 | CODE | |
| LOW | …ekit-agents/livekit/agents/llm/_provider_format/aws.py | 25 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/openai.py | 50 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/openai.py | 172 | CODE | |
| LOW | …t-agents/livekit/agents/llm/_provider_format/openai.py | 236 | CODE | |
| LOW | …gents/livekit/agents/llm/_provider_format/anthropic.py | 18 | CODE | |
| LOW | …gents/livekit/agents/llm/_provider_format/mistralai.py | 85 | CODE | |
| LOW | livekit-agents/livekit/agents/utils/participant.py | 233 | CODE | |
| LOW | livekit-agents/livekit/agents/utils/codecs/decoder.py | 91 | CODE | |
| LOW | livekit-agents/livekit/agents/utils/codecs/decoder.py | 180 | CODE | |
| LOW | livekit-agents/livekit/agents/utils/codecs/decoder.py | 208 | CODE | |
| LOW | livekit-agents/livekit/agents/utils/images/image.py | 104 | CODE | |
| LOW | livekit-agents/livekit/agents/utils/aio/itertools.py | 20 | CODE | |
| 257 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_filler.py | 88 | 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/fake_realtime.py | 73 | async def update_instructions(self, instructions: str) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 76 | async def update_chat_ctx(self, chat_ctx: ChatContext) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 81 | async def update_tools(self, tools: list[Tool]) -> None: | CODE |
| LOW⚡ | tests/fake_realtime.py | 84 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: | CODE |
| LOW⚡ | tests/test_plugin_elevenlabs_stt.py | 122 | def update_options(self, **kwargs: object) -> None: | CODE |
| LOW | tests/test_stt_context.py | 77 | def _update_session_keyterms(self, keyterms: list[str]) -> 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 | 1028 | async def update_booking_card(self, *, booking_code: str, card_last4: str) -> None: | CODE |
| LOW | examples/hotel_receptionist/modify_booking.py | 277 | def _set_changed(self, slot: str, differs: bool) -> None: | CODE |
| LOW | examples/avatar/actions.py | 80 | def set_session(self, session_id: str, persona_id: str) -> None: | CODE |
| LOW | .github/update_versions.py | 81 | def update_plugins_pyproject_agents_version(new_agents_version: str) -> None: | CODE |
| LOW | .github/update_versions.py | 97 | def update_agents_pyproject_optional_dependencies(plugin_versions: Dict[str, str]) -> None: | CODE |
| LOW | .github/update_versions.py | 123 | def update_versions(bump_type: str) -> None: | CODE |
| LOW | .github/update_versions.py | 157 | def update_prerelease(prerelease_type: str) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/simulation.py | 23 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 766 | def _update_job_status(proc: ipc.job_executor.JobExecutor) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1489 | async def _update_worker_status(self) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/worker.py | 1522 | async def _update_job_status(self, proc: ipc.job_executor.JobExecutor) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/__init__.py | 160 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/testing.py | 15 | __all__ = ["fake_job_context"] | CODE |
| LOW | livekit-agents/livekit/agents/beta/__init__.py | 5 | __all__ = ["Instructions", "workflows", "EndCallTool"] | CODE |
| LOW | livekit-agents/livekit/agents/beta/tools/__init__.py | 4 | __all__ = [ | CODE |
| LOW | …vekit-agents/livekit/agents/beta/workflows/__init__.py | 12 | __all__ = [ | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 254 | def _set_result(self, result: WarmTransferResult | Exception) -> None: | CODE |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 369 | def _set_io_enabled(self, enabled: bool) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/beta/toolsets/__init__.py | 4 | __all__ = ["ToolProxyToolset", "ToolSearchToolset"] | CODE |
| LOW | livekit-agents/livekit/agents/metrics/__init__.py | 25 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/evals/__init__.py | 20 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/llm/async_toolset.py | 23 | __all__ = ["AsyncRunContext", "AsyncToolset"] | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 216 | async def update_instructions(self, instructions: str) -> None: ... | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 224 | async def update_tools(self, tools: list[Tool]) -> None: ... | CODE |
| LOW⚡ | livekit-agents/livekit/agents/llm/realtime.py | 227 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: ... | CODE |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 554 | def update_tools(self, tools: Sequence[Tool | Toolset]) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/llm/__init__.py | 63 | __all__ = [ | CODE |
| LOW | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 200 | def _set_available(self, index: int, available: bool) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 362 | async def update_instructions(self, instructions: str) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 366 | async def update_chat_ctx(self, chat_ctx: ChatContext) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 372 | async def update_tools(self, tools: list[Tool]) -> None: | CODE |
| LOW⚡ | …agents/livekit/agents/llm/realtime_fallback_adapter.py | 376 | def update_options(self, *, tool_choice: NotGivenOr[ToolChoice | None] = NOT_GIVEN) -> None: | CODE |
| LOW | …vekit-agents/livekit/agents/llm/remote_chat_context.py | 7 | __all__ = ["RemoteChatContext"] | CODE |
| LOW | …agents/livekit/agents/llm/_provider_format/__init__.py | 3 | __all__ = ["openai", "openai.responses", "google", "aws", "anthropic", "mistralai"] | CODE |
| LOW | livekit-agents/livekit/agents/utils/http_context.py | 31 | def _set_default_cert_env() -> None: | CODE |
| LOW | livekit-agents/livekit/agents/utils/__init__.py | 16 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/utils/exp_filter.py | 63 | def update_base(self, alpha: float) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/utils/codecs/__init__.py | 17 | __all__ = ["AudioStreamDecoder", "StreamBuffer"] | CODE |
| LOW | livekit-agents/livekit/agents/utils/hw/__init__.py | 3 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/utils/images/__init__.py | 17 | __all__ = ["EncodeOptions", "ResizeOptions", "encode"] | CODE |
| LOW | livekit-agents/livekit/agents/utils/aio/__init__.py | 10 | __all__ = [ | CODE |
| LOW | livekit-agents/livekit/agents/cli/readchar.py | 7 | __all__ = ["readchar", "readkey", "key"] | CODE |
| LOW | livekit-agents/livekit/agents/cli/__init__.py | 3 | __all__ = ["run_app", "AgentsConsole"] | CODE |
| LOW | livekit-agents/livekit/agents/cli/_legacy.py | 562 | def set_microphone_enabled(self, enable: bool, *, device: int | str | None = None) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/cli/_legacy.py | 597 | def set_speaker_enabled(self, enable: bool, *, device: int | str | None = None) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/cli/_legacy.py | 1611 | def _set_dev_mode(ctx: typer.Context) -> None: | CODE |
| LOW | …vekit-agents/livekit/agents/voice/keyterm_detection.py | 215 | def set_static_keyterms(self, terms: list[str]) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/voice/agent_session.py | 1411 | def update_agent(self, agent: Agent) -> None: | CODE |
| LOW | livekit-agents/livekit/agents/voice/agent_session.py | 1642 | def _set_user_away_timer(self) -> None: | CODE |
| LOW⚡ | livekit-agents/livekit/agents/voice/agent_activity.py | 454 | async def update_instructions(self, instructions: str) -> None: | CODE |
| 191 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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_endpointing.py | 481 | # between_turn_delay=0.15, between_utterance_delay=0.35 | 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/voice_agents/otel_trace.py | 21 | from livekit.agents.voice import MetricsCollectedEvent | COMMENT |
| LOW | examples/hotel_receptionist/scenarios.yaml | 1 | # Assumptions: | COMMENT |
| LOW | examples/hotel_receptionist/fake_data/seed.py | 61 | # offset < 0 and offset+nights > 0 -> in-house now; offset > 0 -> upcoming; else departed. | COMMENT |
| LOW | examples/hotel_receptionist/fake_data/seed.py | 81 | ("Paul", "Greer", "paul.greer@gmail.com", "+1 415 555 0356", "PG11", "203", 0, 1, 1, [], "2218", "confirmed"), | COMMENT |
| LOW | examples/frontdesk/scenarios.yaml | 1 | # These scenarios use absolute dates against a fixed clock: | COMMENT |
| LOW | .github/convert_html_docs.py | 901 | COMMENT | |
| LOW | livekit-agents/livekit/agents/worker.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/version.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/job.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/__init__.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/language.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/_language_data.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/llm/tool_context.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/llm/chat_context.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/codecs/decoder.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/codecs/__init__.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/images/__init__.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/utils/images/image.py | 1 | # Copyright 2024 LiveKit, Inc. | COMMENT |
| LOW | livekit-agents/livekit/agents/cli/_legacy.py | 81 | COMMENT | |
| LOW | livekit-agents/livekit/agents/tts/_provider_format.py | 121 | COMMENT | |
| LOW | livekit-agents/livekit/agents/inference/vad.py | 1 | # Copyright 2026 LiveKit, Inc. | COMMENT |
| LOW | …ugins-smallestai/livekit/plugins/smallestai/version.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/tts.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …gins-smallestai/livekit/plugins/smallestai/__init__.py | 1 | # Copyright 2023 LiveKit, Inc. | COMMENT |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …t-plugins-cerebras/livekit/plugins/cerebras/version.py | 1 | # Copyright 2026 LiveKit, Inc. | COMMENT |
| LOW | …-plugins-cerebras/livekit/plugins/cerebras/__init__.py | 1 | # Copyright 2026 LiveKit, Inc. | COMMENT |
| LOW | …vekit-plugins-cerebras/livekit/plugins/cerebras/llm.py | 1 | # Copyright 2026 LiveKit, Inc. | COMMENT |
| LOW | …vekit-plugins-sarvam/livekit/plugins/sarvam/version.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/tts.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …ekit-plugins-sarvam/livekit/plugins/sarvam/__init__.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1 | # Copyright 2025 LiveKit, Inc. | COMMENT |
| 192 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_amd_classifier.py | 27 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 303 | CODE | |
| LOW | livekit-agents/livekit/agents/worker.py | 857 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/address.py | 26 | CODE | |
| LOW | …it-agents/livekit/agents/beta/workflows/credit_card.py | 584 | CODE | |
| LOW | …t-agents/livekit/agents/beta/workflows/phone_number.py | 63 | CODE | |
| LOW | …-agents/livekit/agents/beta/workflows/email_address.py | 27 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/dob.py | 61 | CODE | |
| LOW | livekit-agents/livekit/agents/beta/workflows/name.py | 74 | CODE | |
| LOW | …-agents/livekit/agents/beta/workflows/warm_transfer.py | 40 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/turn.py | 336 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent_session.py | 259 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent_activity.py | 1302 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent.py | 40 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/agent.py | 753 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/amd/detector.py | 160 | CODE | |
| LOW | livekit-agents/livekit/agents/voice/amd/classifier.py | 106 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 219 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 238 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 257 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 276 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 295 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 314 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 333 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/tts.py | 351 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/interruption.py | 264 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 338 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 355 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 372 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 389 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 406 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 423 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 440 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 458 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 475 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/stt.py | 491 | CODE | |
| LOW | livekit-agents/livekit/agents/inference/eot/detector.py | 34 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/tts.py | 63 | CODE | |
| LOW | …t-plugins-smallestai/livekit/plugins/smallestai/stt.py | 104 | CODE | |
| LOW | …vekit-plugins-cerebras/livekit/plugins/cerebras/llm.py | 103 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/tts.py | 460 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/tts.py | 736 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 488 | CODE | |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 753 | CODE | |
| LOW | …it-plugins-sarvam/livekit/plugins/sarvam/llm/client.py | 54 | CODE | |
| LOW | …plugins/livekit-plugins-aws/livekit/plugins/aws/tts.py | 56 | CODE | |
| LOW | …plugins/livekit-plugins-aws/livekit/plugins/aws/llm.py | 52 | CODE | |
| LOW | …plugins/livekit-plugins-aws/livekit/plugins/aws/stt.py | 98 | CODE | |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 316 | CODE | |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 375 | CODE | |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 419 | CODE | |
| LOW | …ugins/livekit-plugins-lmnt/livekit/plugins/lmnt/tts.py | 69 | CODE | |
| LOW | …kit-plugins-neuphonic/livekit/plugins/neuphonic/tts.py | 74 | CODE | |
| LOW | …ugins/livekit-plugins-slng/livekit/plugins/slng/tts.py | 157 | CODE | |
| LOW | …ugins/livekit-plugins-slng/livekit/plugins/slng/stt.py | 108 | CODE | |
| LOW | …s/livekit-plugins-nvidia/livekit/plugins/nvidia/stt.py | 43 | CODE | |
| LOW | …ugins/livekit-plugins-murf/livekit/plugins/murf/tts.py | 75 | CODE | |
| LOW | …plugins-fireworksai/livekit/plugins/fireworksai/stt.py | 96 | CODE | |
| LOW | …plugins-fireworksai/livekit/plugins/fireworksai/stt.py | 218 | CODE | |
| LOW | …plugins-fireworksai/livekit/plugins/fireworksai/stt.py | 289 | CODE | |
| 104 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | livekit-agents/livekit/agents/utils/env.py | 8 | Resolve an environment variable from a list of potential sources. Args: val: The value to resolve. | STRING |
| HIGH | livekit-agents/livekit/agents/utils/participant.py | 16 | Wait for an agent participant to join the room. Args: room: The room to wait for the agent in. | STRING |
| HIGH | livekit-agents/livekit/agents/utils/audio.py | 279 | 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 | 1382 | Commit the user turn and generate a reply. Returns a future that resolves with the user's audio transcript once | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 328 | Access a specific event or range for assertions. Args: key (int | slice): Index or slice o | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 678 | Verify this event is a function call with matching details. Args: name (str, optional): Ex | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 714 | Verify this event is a function call output with matching details. Args: output (str, opti | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 744 | Verify this event is a message from the given role. Args: role (ChatRole, optional): Expec | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 773 | Verify this event is an agent handoff. Args: new_agent_type (type, optional): Expected new | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 814 | Assert that a function call matching criteria exists in the event range. Args: name (str, | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 847 | Assert that a message matching criteria exists in the event range. Args: role (ChatRole, o | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 880 | Assert that a function call output matching criteria exists in the event range. Args: outp | STRING |
| HIGH | livekit-agents/livekit/agents/voice/run_result.py | 911 | Assert that an agent handoff matching criteria exists in the event range. Args: new_agent_ | STRING |
| HIGH | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 191 | 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 | 225 | 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 | 632 | Recognize speech using Sarvam.ai API. Args: buffer: Audio buffer containing speech data | STRING |
| HIGH | …it-plugins/livekit-durable/livekit/durable/registry.py | 55 | Register a function in the in-memory function registry. When serializing a registered function, a reference to the | STRING |
| HIGH | …it-plugins/livekit-durable/livekit/durable/registry.py | 94 | Lookup a registered function by key. Args: key: Unique identifier for the function. Returns: R | STRING |
| HIGH | …kit-plugins-protoface/livekit/plugins/protoface/api.py | 73 | Create a hosted Protoface avatar session. Args: avatar_id: Protoface avatar ID to render. | STRING |
| HIGH | …kit-plugins-protoface/livekit/plugins/protoface/api.py | 97 | Request a graceful end for a hosted Protoface session. Args: session_id: Protoface session ID retur | STRING |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 393 | Initialize a Realtime model client for OpenAI or Azure OpenAI. Args: model (str): Realtime | STRING |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 561 | Create a RealtimeModel configured for Azure OpenAI. Args: azure_deployment (str): Azure Op | STRING |
| HIGH | …ekit-plugins-cambai/livekit/plugins/cambai/__init__.py | 36 | List available voices from Camb.ai. Args: api_key: Camb.ai API key (or use CAMB_API_KEY env var). | STRING |
| HIGH | …vekit-plugins-avatario/livekit/plugins/avatario/api.py | 99 | Make a POST request to the Avatario API with retry logic. Args: payload: JSON payload for | STRING |
| HIGH | …s/livekit-plugins-silero/livekit/plugins/silero/vad.py | 75 | Load and initialize the Silero VAD model. This method loads the ONNX model and prepares it for inferen | STRING |
| HIGH | …vekit-plugins-cartesia/livekit/plugins/cartesia/stt.py | 108 | Create a new instance of Cartesia STT. Model ``ink-2`` supports: - Streaming - | STRING |
| HIGH | …ins/livekit-plugins-tavus/livekit/plugins/tavus/api.py | 166 | Make a POST request to the Tavus API with retry logic. Args: endpoint: API endpoint path ( | STRING |
| HIGH | …t-plugins-lemonslice/livekit/plugins/lemonslice/api.py | 211 | Make a POST request to the LemonSlice API with retry logic. Args: payload: JSON payload fo | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | 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 | …plugins-fireworksai/livekit/plugins/fireworksai/stt.py | 0 | run a single websocket connection to baseten and make sure to reconnect when something went wrong. | STRING |
| HIGH | …livekit-plugins-gradium/livekit/plugins/gradium/stt.py | 0 | run a single websocket connection to baseten and make sure to reconnect when something went wrong. | STRING |
| HIGH | …livekit-plugins-baseten/livekit/plugins/baseten/stt.py | 0 | run a single websocket connection to baseten and make sure to reconnect when something went wrong. | STRING |
| HIGH | …s/livekit-plugins-openai/livekit/plugins/openai/tts.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …s/livekit-plugins-openai/livekit/plugins/openai/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …plugins-openai/livekit/plugins/openai/responses/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …t-plugins-perplexity/livekit/plugins/perplexity/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …perplexity/livekit/plugins/perplexity/responses/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …/livekit-plugins-groq/livekit/plugins/groq/services.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …livekit-plugins-baseten/livekit/plugins/baseten/llm.py | 0 | create a new instance of groq stt. ``api_key`` must be set to your groq api key, either using the argument or by setting | STRING |
| HIGH | …lugins-elevenlabs/livekit/plugins/elevenlabs/_utils.py | 0 | create a new periodic collector that accumulates values and calls the callback after the specified duration if there are | STRING |
| HIGH | …it-plugins-deepgram/livekit/plugins/deepgram/_utils.py | 0 | create a new periodic collector that accumulates values and calls the callback after the specified duration if there are | STRING |
| HIGH | …ivekit-plugins-gladia/livekit/plugins/gladia/_utils.py | 0 | create a new periodic collector that accumulates values and calls the callback after the specified duration if there are | STRING |
| HIGH | …lugins-elevenlabs/livekit/plugins/elevenlabs/_utils.py | 0 | force callback to be called with current total if non-zero | STRING |
| HIGH | …it-plugins-deepgram/livekit/plugins/deepgram/_utils.py | 0 | force callback to be called with current total if non-zero | STRING |
| HIGH | …ivekit-plugins-gladia/livekit/plugins/gladia/_utils.py | 0 | force callback to be called with current total if non-zero | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/README.md | 64 | LIVEKIT_API_KEY="your_api_key" | CODE |
| HIGH | examples/other/transcription/README.md | 19 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH⚡ | livekit-plugins/livekit-plugins-gnani/README.md | 29 | export GNANI_API_KEY="your-api-key" | CODE |
| HIGH⚡ | livekit-plugins/livekit-plugins-gnani/README.md | 35 | stt = STT(api_key="your-api-key", language="hi-IN") | CODE |
| HIGH⚡ | livekit-plugins/livekit-plugins-gnani/README.md | 36 | tts = TTS(api_key="your-api-key") | CODE |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 599 | api_key="your-api-key", | STRING |
| HIGH | …enai/livekit/plugins/openai/realtime/realtime_model.py | 625 | api_key="your-api-key", | STRING |
| HIGH | livekit-plugins/livekit-plugins-cambai/README.md | 88 | api_key="your-api-key", # Or use CAMB_API_KEY env var | CODE |
| HIGH | livekit-plugins/livekit-plugins-fishaudio/README.md | 20 | FISH_API_KEY=<your_api_key> | CODE |
| HIGH | livekit-plugins/livekit-plugins-did/README.md | 24 | -H "Authorization: Basic <YOUR_API_KEY>" \ | CODE |
| HIGH | livekit-plugins/livekit-plugins-did/README.md | 24 | -H "Authorization: Basic <YOUR_API_KEY>" \ | CODE |
| HIGH | livekit-plugins/livekit-plugins-gladia/README.md | 35 | api_key="your-api-key-here", # or use GLADIA_API_KEY env var | CODE |
| HIGH | livekit-plugins/livekit-plugins-gladia/README.md | 96 | api_key="your-api-key-here", | CODE |
| HIGH | livekit-plugins/livekit-plugins-resemble/README.md | 30 | api_key="your_api_key", # or set RESEMBLE_API_KEY environment variable | CODE |
| HIGH | livekit-plugins/livekit-plugins-resemble/README.md | 73 | api_key="your_api_key", | CODE |
| HIGH | livekit-plugins/livekit-plugins-resemble/README.md | 105 | api_key="your_api_key", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …s/livekit-plugins-openai/livekit/plugins/openai/tts.py | 233 | oai_stream = self._tts._client.audio.speech.with_streaming_response.create( | CODE |
| CRITICAL | …s/livekit-plugins-openai/livekit/plugins/openai/tts.py | 277 | oai_stream = self._tts._client.audio.speech.with_streaming_response.create( | CODE |
| CRITICAL | …kit-plugins-mistralai/livekit/plugins/mistralai/tts.py | 156 | stream = await self._tts._client.audio.speech.complete_async( | CODE |
| CRITICAL | …kit-plugins-mistralai/livekit/plugins/mistralai/tts.py | 165 | stream = await self._tts._client.audio.speech.complete_async( | CODE |
| CRITICAL | …ugins-google/livekit/plugins/google/beta/gemini_tts.py | 205 | response = await self._tts._client.aio.models.generate_content_stream( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_convert_html_docs.py | 299 | # Create a path that would have .. in relative parts | COMMENT |
| MEDIUM | tests/concurrency.py | 924 | # This module is loaded as a *global* plugin (`-p tests.concurrency` in pyproject), not via | COMMENT |
| MEDIUM | tests/test_drain_timeout.py | 121 | # Create a fake proc whose join() never completes (stuck process) | COMMENT |
| MEDIUM | tests/test_speaker_id_grouping.py | 34 | # Create a SpeakerSpeechData object and get formatted text | COMMENT |
| MEDIUM | livekit-agents/livekit/agents/voice/agent_activity.py | 586 | # 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 | 869 | # Create a fresh session for this stream to avoid conflicts | COMMENT |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 576 | # Create main task to manage session lifecycle | COMMENT |
| MEDIUM | …ivekit-plugins-krisp/examples/krisp_minimal_example.py | 41 | # Create the frame processor with explicit license auth (no framework | COMMENT |
| MEDIUM | …ivekit-plugins-krisp/examples/krisp_minimal_example.py | 52 | # Create a test audio frame (10ms @ 16kHz = 160 samples) | COMMENT |
| MEDIUM | …ugins-speechmatics/livekit/plugins/speechmatics/stt.py | 392 | # Create the stream | COMMENT |
| MEDIUM | …ugins-speechmatics/livekit/plugins/speechmatics/stt.py | 647 | # Create the Voice Agent client | COMMENT |
| MEDIUM | …s/livekit-plugins-gladia/livekit/plugins/gladia/stt.py | 440 | # Create a speech event from the collected final utterances | COMMENT |
| MEDIUM | …s/livekit-plugins-google/livekit/plugins/google/stt.py | 77 | # This class is only be used internally to encapsulate the options | COMMENT |
| MEDIUM | …plugins-simplismart/livekit/plugins/simplismart/stt.py | 292 | # Create a fresh session for this stream to avoid conflicts | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 652 | # Step 1: Wait for assistant to finish speaking (AUDIO contentEnd with END_TURN) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 661 | # Step 2: Wait for audio to fully stop (no new audio for 1 second) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 675 | # Step 3: Send close events to trigger completionEnd from Nova Sonic | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 682 | # Step 4: Wait for completionEnd and let _done_fut resolve | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 703 | # Step 1: Drain any pending tool results | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 717 | # Step 2: Signal tasks to stop | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 720 | # Step 3: Wait for response task to exit naturally, then cancel if needed | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 734 | # Step 4: Cancel audio input task (blocked on channel, won't exit naturally) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 742 | # Step 5: Close the stream (close events already sent in _session_recycle_timer) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 750 | # Step 6: Reset state for new session | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 985 | # Step 1: Send session init events (session start, prompt start, system prompt) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 993 | # Step 2: Send history events with small delays between them | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 998 | # Step 3: Start response reader first (calls await_output, sets _stream_ready) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1003 | # Step 4: Start audio input (waits for _stream_ready before sending audio_content_start) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1008 | # Step 5: Allow audio contentStart to be sent before unblocking | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1014 | # Step 6: If we popped a user message from history, send it as | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 764 | # Step 7: Start new session with preserved state | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 652 | # Step 1: Wait for assistant to finish speaking (AUDIO contentEnd with END_TURN) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 661 | # Step 2: Wait for audio to fully stop (no new audio for 1 second) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 675 | # Step 3: Send close events to trigger completionEnd from Nova Sonic | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 682 | # Step 4: Wait for completionEnd and let _done_fut resolve | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 703 | # Step 1: Drain any pending tool results | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 717 | # Step 2: Signal tasks to stop | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 720 | # Step 3: Wait for response task to exit naturally, then cancel if needed | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 734 | # Step 4: Cancel audio input task (blocked on channel, won't exit naturally) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 742 | # Step 5: Close the stream (close events already sent in _session_recycle_timer) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 750 | # Step 6: Reset state for new session | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 985 | # Step 1: Send session init events (session start, prompt start, system prompt) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 993 | # Step 2: Send history events with small delays between them | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 998 | # Step 3: Start response reader first (calls await_output, sets _stream_ready) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1003 | # Step 4: Start audio input (waits for _stream_ready before sending audio_content_start) | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1008 | # Step 5: Allow audio contentStart to be sent before unblocking | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1014 | # Step 6: If we popped a user message from history, send it as | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 764 | # 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 | 215 | # Check if a tracer provider is not set and set one up | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1202 | # Check if session is still valid | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1259 | # Check if reconnection was requested | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1353 | # Check if we have enough data for a chunk | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1400 | # Check if Sarvam VAD triggered flush | COMMENT |
| LOW | …s/livekit-plugins-sarvam/livekit/plugins/sarvam/stt.py | 1680 | # Set flag to trigger flush when Sarvam detects end of speech | COMMENT |
| LOW⚡ | …it/plugins/aws/experimental/realtime/realtime_model.py | 1377 | # Check if this is END_TURN (assistant finished speaking) | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 1784 | # Check if this is an audio message (already transcribed by Nova) | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 2084 | # Check if generate_reply is supported (requires mixed modalities) | COMMENT |
| LOW⚡ | …it-plugins-bithuman/livekit/plugins/bithuman/avatar.py | 70 | # Check if string is empty after cleaning | COMMENT |
| LOW⚡ | …it-plugins-bithuman/livekit/plugins/bithuman/avatar.py | 79 | # Check if string contains only valid base64 characters | COMMENT |
| LOW | …ugins-speechmatics/livekit/plugins/speechmatics/stt.py | 514 | # Check if diarization is enabled | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 735 | # Check if restart is needed | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 771 | # Check if restart is needed | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 1135 | # Check if we have a current generation before processing audio | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/drive-thru/database.py | 633 | # explicitely saying there is no `size` for this item, otherwise the LLM seems to hallucinate quite often | COMMENT |
| MEDIUM | examples/voice_agents/README.md | 39 | ### RAG & Knowledge Management | COMMENT |
| MEDIUM | examples/voice_agents/llamaindex-rag/README.md | 1 | # RAG Example using LlamaIndex | COMMENT |
| MEDIUM | …kit-plugins-anthropic/livekit/plugins/anthropic/llm.py | 299 | 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 | 465 | # Empty text would make the server hallucinate audio; handle the two cases locally. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_ipc.py | 121 | token="fake_token", | CODE |
| LOW⚡ | tests/test_stt_context.py | 180 | d = _detector(static_keyterms=["Acme Corp"], llm=fake) | CODE |
| LOW⚡ | tests/test_stt_context.py | 186 | assert "Acme Corp" in applied_section | CODE |
| LOW | examples/hotel_receptionist/README.md | 11 | python 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 | 12 | 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 | 31 | "keyterms": ["LiveKit", "Acme Corp"], | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/other/chat-stream-receiver.py | 79 | # in cli we don't actually overwrite the line, just add a flag | COMMENT |
| LOW | …it/plugins/aws/experimental/realtime/realtime_model.py | 600 | # Static credentials - just use the max session duration | COMMENT |
| MEDIUM | …google/livekit/plugins/google/realtime/realtime_api.py | 1500 | # TODO(dz): this isn't a seamless reconnection just yet | COMMENT |
| LOW | …ox/livekit/plugins/ultravox/realtime/realtime_model.py | 798 | # If we're already closing due to send loop shutdown, just return | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/healthcare/agent.py | 93 | - Assistant: I'm unable to help with that, would you like to speak to a human agent? | STRING |
| MEDIUM | examples/warm-transfer/warm_transfer.py | 47 | - Assistant: I'm unable to help with that, would you like to speak to a human agent? | STRING |
| LOW | livekit-agents/livekit/agents/llm/utils.py | 543 | # The following make sure to use the default value when we receive None. | COMMENT |
| LOW | …t-plugins-assemblyai/livekit/plugins/assemblyai/stt.py | 556 | # the recv task will then make sure to process the remaining audio and stop | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 2095 | CODE | |
| MEDIUM | …it/plugins/aws/experimental/realtime/realtime_model.py | 2099 | CODE |
| 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 |