Open Source framework for voice agents, multimodal apps, and realtime AI. Maintained by Daily and the community.
This report summarizes scanner evidence for pipecat-ai/pipecat, a Python project with 16,344 GitHub stars. SynthScan examined 484,958 lines of code across 1906 source files, recording 10953 pattern matches distributed across 27 syntactic categories. The legacy adjusted pattern signal is 36.3 (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? 8126 finding(s).
Are imports declared and package/API names verified? 306 finding(s).
Are wrappers, guards, and repeated structures necessary? 9741 finding(s).
Which changes need focused human review? 10953 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 10953 distinct pattern matches across 27 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 | CHANGELOG.md | 1850 | async def on_user_turn_inference_triggered(controller, strategy, | CODE |
| LOW | CHANGELOG.md | 15905 | async def on_conversation_item_created(llm, item_id, item): | CODE |
| LOW | CHANGELOG.md | 15909 | async def on_conversation_item_updated(llm, item_id, item): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 61 | def test_parses_completed_sentinel_result(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 70 | def test_returns_none_for_regular_user_message(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 73 | def test_returns_none_for_regular_assistant_message(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 76 | def test_returns_none_for_regular_tool_message(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 91 | def test_returns_none_for_developer_message_without_payload(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 100 | def test_returns_none_for_invalid_json_content(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 103 | def test_returns_none_for_non_dict_json(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 106 | def test_returns_none_for_wrong_payload_type(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 117 | def test_returns_none_when_tool_call_id_missing(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 128 | def test_returns_none_when_status_invalid(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 141 | def test_returns_none_for_non_string_content(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 150 | def test_returns_none_for_missing_role(self): | CODE |
| LOW⚡ | tests/test_async_tool_messages.py | 157 | def test_started_message_shape(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 170 | def test_intermediate_message_shape(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 194 | def test_final_message_with_completed_sentinel(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 207 | def test_cancelled_message_shape(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 218 | def test_cancelled_round_trip(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 238 | def test_intermediate_round_trip(self): | CODE |
| LOW | tests/test_async_tool_messages.py | 256 | def test_non_ascii_result_is_not_escaped(self): | CODE |
| LOW | tests/test_ttfb_metrics.py | 36 | async def test_reports_a_normal_interval(self): | CODE |
| LOW | tests/test_ttfb_metrics.py | 50 | async def test_does_not_report_output_that_predates_the_request(self): | CODE |
| LOW | tests/test_ttfb_metrics.py | 59 | async def test_a_refused_measurement_does_not_linger(self): | CODE |
| LOW | tests/test_ttfb_metrics.py | 74 | async def test_reports_nothing_when_no_measurement_is_running(self): | CODE |
| LOW | tests/test_ttfb_metrics.py | 105 | async def test_measures_to_the_last_transcript(self, service): | CODE |
| LOW | tests/test_ttfb_metrics.py | 114 | async def test_a_transcript_from_before_speech_ended_reports_nothing(self, service): | CODE |
| LOW | tests/test_ttfb_metrics.py | 134 | async def test_an_utterance_with_no_transcript_at_all_reports_nothing(self, service): | CODE |
| LOW | tests/test_ttfb_metrics.py | 143 | async def test_an_utterance_with_no_transcript_closes_the_measurement(self, service): | CODE |
| LOW | tests/test_nova_sonic_usage_metrics.py | 36 | def test_can_generate_metrics(self): | CODE |
| LOW | tests/test_nova_sonic_usage_metrics.py | 41 | async def test_usage_event_reports_collapsed_delta(self): | CODE |
| LOW | tests/test_nova_sonic_usage_metrics.py | 71 | async def test_usage_event_with_no_tokens_is_skipped(self): | CODE |
| LOW | tests/test_nova_sonic_usage_metrics.py | 92 | async def test_usage_event_with_missing_details_is_safe(self): | CODE |
| LOW⚡ | tests/test_openai_realtime_reasoning.py | 32 | def test_session_properties_accepts_reasoning_object(): | CODE |
| LOW⚡ | tests/test_openai_realtime_reasoning.py | 38 | def test_session_properties_coerces_reasoning_dict(): | CODE |
| LOW⚡ | tests/test_openai_realtime_reasoning.py | 45 | def test_reasoning_accepts_future_effort_strings(): | CODE |
| LOW⚡ | tests/test_openai_realtime_reasoning.py | 51 | def test_reasoning_serializes_into_session_update(): | CODE |
| LOW | tests/test_openai_realtime_reasoning.py | 89 | async def test_outgoing_session_update_strips_reasoning_on_unsupported_model(): | CODE |
| LOW | tests/test_openai_realtime_reasoning.py | 119 | async def test_outgoing_session_update_keeps_reasoning_on_supported_model(): | CODE |
| LOW | tests/test_openai_realtime_reasoning.py | 143 | async def test_supported_model_variant_keeps_reasoning(): | CODE |
| LOW | tests/test_openai_realtime_reasoning.py | 168 | async def test_no_warning_when_reasoning_is_unset_on_unsupported_model(): | CODE |
| LOW⚡ | tests/test_openai_realtime_reasoning.py | 193 | async def test_runtime_settings_update_with_reasoning_triggers_session_update(): | CODE |
| LOW | tests/test_openai_realtime_reasoning.py | 224 | async def test_runtime_settings_update_strips_reasoning_on_unsupported_model(): | CODE |
| LOW | tests/test_xtts_tts_voice.py | 29 | def test_missing_or_blank_voice_is_rejected(voice): | CODE |
| LOW | tests/test_evals_judge_jev.py | 126 | async def test_a_reply_is_asked_as_a_choice_over_the_conversation(self): | CODE |
| LOW | tests/test_evals_judge_jev.py | 149 | async def test_a_call_is_asked_as_a_yes_or_no(self): | CODE |
| LOW | tests/test_evals_judge_jev.py | 159 | async def test_a_run_asks_the_goal_and_every_turn_at_once(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 191 | async def test_a_timeout_is_asked_again(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 196 | async def test_a_rejected_question_is_asked_again(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 201 | async def test_a_second_failure_fails_the_question(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 207 | async def test_the_connection_is_opened_when_the_judge_is_created(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 215 | async def test_close_releases_a_connection_the_judge_opened(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 221 | async def test_close_leaves_a_connection_the_judge_was_given_open(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 229 | async def test_service_typesafe_judges_with_jev_and_explains_with_an_llm(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 236 | async def test_explainer_false_builds_no_explainer(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 241 | async def test_the_explainer_follows_allow_continue(self): | CODE |
| LOW⚡ | tests/test_evals_judge_jev.py | 247 | def test_a_missing_api_key_is_an_error(self): | CODE |
| LOW | tests/test_markdown_text_filter.py | 17 | async def test_basic_markdown_removal(self): | CODE |
| LOW | tests/test_markdown_text_filter.py | 59 | async def test_repeated_character_removal(self): | STRING |
| 7078 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CHANGELOG.md | 0 | write a long research report on a topic. args: topic: what the report should cover. | STRING |
| HIGH | …ion-calling/function-calling-openai-responses-async.py | 0 | write a long research report on a topic. args: topic: what the report should cover. | STRING |
| HIGH | …ples/function-calling/function-calling-google-async.py | 0 | write a long research report on a topic. args: topic: what the report should cover. | STRING |
| HIGH | …ples/function-calling/function-calling-openai-async.py | 0 | write a long research report on a topic. args: topic: what the report should cover. | STRING |
| HIGH | …s/function-calling/function-calling-anthropic-async.py | 0 | write a long research report on a topic. args: topic: what the report should cover. | STRING |
| HIGH | CONTRIBUTING.md | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | src/pipecat/transports/base_input.py | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | src/pipecat/transports/base_output.py | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | src/pipecat/transports/lemonslice/transport.py | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | src/pipecat/transports/tavus/transport.py | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | src/pipecat/services/heygen/client.py | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | src/pipecat/transports/daily/transport.py | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | src/pipecat/audio/vad/vad_analyzer.py | 0 | get the output audio sample rate. returns: the output sample rate in hz. | STRING |
| HIGH | COMMUNITY_INTEGRATIONS.md | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/cartesia/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/cartesia/turns/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/inworld/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/asyncai/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/speechmatics/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/azure/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/rime/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/google/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/google/gemini_live/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/speechify/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/soniox/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/soniox/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/deepgram/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/deepgram/flux/stt_base.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/deepgram/sagemaker/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/deepgram/sagemaker/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/camb/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/groq/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/tavus/video.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/smallest/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/minimax/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/elevenlabs/tts_base.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/elevenlabs/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/neuphonic/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/gradium/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/piper/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/nvidia/sagemaker/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/nvidia/sagemaker/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/bland/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/resembleai/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/sarvam/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/sarvam/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/xtts/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/aws/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/fish/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/mistral/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/openai/tts.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/openai/base_llm.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | src/pipecat/services/openai/stt.py | 0 | check if this service can generate processing metrics. returns: true, as fish audio service supports metrics generation. | STRING |
| HIGH | tests/test_deepgram_tts.py | 0 | build the exception `websockets` raises when a handshake is rejected. | STRING |
| HIGH | tests/test_websocket_service_usable.py | 0 | build the exception `websockets` raises when a handshake is rejected. | STRING |
| HIGH | tests/test_processor_usable.py | 0 | build the exception `websockets` raises when a handshake is rejected. | STRING |
| HIGH | tests/test_cartesia_stt.py | 0 | build the exception `websockets` raises when a handshake is rejected. | STRING |
| HIGH | tests/test_openai_realtime_audio_frames.py | 0 | async-iterable websocket that yields scripted json strings. | STRING |
| HIGH | tests/test_openai_live_service.py | 0 | async-iterable websocket that yields scripted json strings. | STRING |
| HIGH | tests/test_azure_voice_live_frames.py | 0 | async-iterable websocket that yields scripted json strings. | STRING |
| 1108 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_openai_realtime_reasoning.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_reasoning.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_reasoning.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_reasoning.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_reasoning.py | 187 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_reasoning.py | 189 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 554 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 556 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 822 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 824 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 909 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 911 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 1017 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 1019 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 1051 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 1053 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 1101 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 1103 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 2133 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_moq_transport.py | 2135 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_moq_transport.py | 82 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_moq_transport.py | 84 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_moq_transport.py | 179 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_moq_transport.py | 181 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_moq_transport.py | 457 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_moq_transport.py | 459 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_service_init.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_service_init.py | 61 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_service_init.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_service_init.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_service_init.py | 138 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_service_init.py | 140 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_service_init.py | 161 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_service_init.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_realtime_audio_frames.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_realtime_audio_frames.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 152 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 154 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 193 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 195 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 225 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 227 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 279 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 281 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 322 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_realtime_audio_frames.py | 324 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 178 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 180 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 517 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 519 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 663 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 665 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 895 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_openai_live_service.py | 897 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_live_service.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_live_service.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_live_service.py | 463 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_live_service.py | 465 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_live_service.py | 1071 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_openai_live_service.py | 1073 | # --------------------------------------------------------------------------- | COMMENT |
| 420 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | COMMUNITY_INTEGRATIONS.md | 627 | except Exception as e: | CODE |
| LOW⚡ | tests/test_service_init.py | 80 | except Exception: | CODE |
| LOW⚡ | tests/test_service_init.py | 175 | except Exception: | CODE |
| LOW | tests/test_pgmq_bus.py | 30 | except Exception: | CODE |
| LOW | tests/test_fastapi_websocket.py | 178 | except Exception: | CODE |
| MEDIUM | tests/test_fastapi_websocket.py | 174 | def receive_loop(): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 231 | def setUp(self): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 289 | def setUp(self): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 359 | def setUp(self): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 447 | def setUp(self): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 521 | def _daily_input(self, camera_state="playable"): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 562 | def test_daily_waiting_requests_when_the_bot_leaves(self): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 575 | def _smallwebrtc_input(self, enabled=True): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 605 | def test_smallwebrtc_transport_answers_only_when_video_turns_off(self): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 631 | def setUp(self): | CODE |
| MEDIUM | tests/test_video_in_sources.py | 728 | def _transport_cls(self, module, name): | CODE |
| LOW⚡ | tests/test_video_in_sources.py | 565 | except Exception as e: | CODE |
| LOW⚡ | tests/test_video_in_sources.py | 578 | except Exception as e: | CODE |
| LOW⚡ | tests/test_video_in_sources.py | 608 | except Exception as e: | CODE |
| LOW⚡ | tests/test_video_in_sources.py | 731 | except Exception as e: | CODE |
| LOW | tests/test_video_in_sources.py | 234 | except Exception as e: | CODE |
| LOW | tests/test_video_in_sources.py | 292 | except Exception as e: | CODE |
| LOW | tests/test_video_in_sources.py | 362 | except Exception as e: | CODE |
| LOW | tests/test_video_in_sources.py | 450 | except Exception as e: | CODE |
| LOW | tests/test_video_in_sources.py | 524 | except Exception as e: | CODE |
| LOW | tests/test_video_in_sources.py | 634 | except Exception as e: | CODE |
| LOW | tests/test_video_in_sources.py | 695 | except Exception as e: | CODE |
| LOW⚡ | tests/test_pgmq_backends.py | 35 | except Exception: | CODE |
| LOW | tests/openclaw_fake_gateway.py | 143 | except Exception: | CODE |
| LOW⚡ | tests/test_speechmatics_stt.py | 601 | except Exception as inner: | CODE |
| LOW⚡ | tests/test_speechmatics_stt.py | 646 | except Exception as inner: | CODE |
| LOW | tests/test_redis_bus.py | 27 | except Exception: | CODE |
| LOW | docs/api/conf.py | 355 | except Exception as e: | CODE |
| LOW | examples/transcription/transcription-google-llm.py | 188 | except Exception as e: | STRING |
| LOW | examples/features/features-gpu-container-local-bot.py | 158 | except Exception as e: | CODE |
| MEDIUM | examples/features/features-gpu-container-local-bot.py | 140 | def on_app_message(transport, message, sender): | CODE |
| LOW | examples/multi-worker/code-assistant/code_worker.py | 84 | except Exception as e: | CODE |
| LOW | examples/multi-worker/code-assistant/code_worker.py | 106 | except Exception as e: | CODE |
| LOW | examples/rag/rag-mem0.py | 100 | except Exception as e: | CODE |
| LOW | examples/realtime/realtime-gemini-live-files-api.py | 161 | except Exception as e: | STRING |
| LOW | examples/realtime/realtime-gemini-live-files-api.py | 234 | except Exception as e: | STRING |
| LOW | examples/realtime/realtime-gemini-live-files-api.py | 241 | except Exception as e: | STRING |
| LOW | examples/voice/voice-aws-strands.py | 115 | except Exception as e: | CODE |
| LOW | …les/persistent-context/persistent-context-anthropic.py | 87 | except Exception as e: | CODE |
| LOW | …les/persistent-context/persistent-context-anthropic.py | 105 | except Exception as e: | CODE |
| LOW | …sistent-context/persistent-context-openai-responses.py | 87 | except Exception as e: | CODE |
| LOW | …sistent-context/persistent-context-openai-responses.py | 106 | except Exception as e: | CODE |
| LOW | …amples/persistent-context/persistent-context-gemini.py | 114 | except Exception as e: | CODE |
| LOW | …amples/persistent-context/persistent-context-gemini.py | 135 | except Exception as e: | CODE |
| LOW | …rsistent-context/persistent-context-openai-realtime.py | 91 | except Exception as e: | CODE |
| LOW | …rsistent-context/persistent-context-openai-realtime.py | 114 | except Exception as e: | CODE |
| LOW | …amples/persistent-context/persistent-context-openai.py | 87 | except Exception as e: | CODE |
| LOW | …amples/persistent-context/persistent-context-openai.py | 106 | except Exception as e: | CODE |
| LOW | …nt-context/persistent-context-openai-responses-http.py | 87 | except Exception as e: | CODE |
| LOW | …nt-context/persistent-context-openai-responses-http.py | 106 | except Exception as e: | CODE |
| LOW | …ersistent-context/persistent-context-aws-nova-sonic.py | 107 | except Exception as e: | CODE |
| LOW | …ersistent-context/persistent-context-aws-nova-sonic.py | 135 | except Exception as e: | CODE |
| LOW | …persistent-context-openai-live-responses-delegation.py | 104 | except Exception as e: | CODE |
| LOW | …persistent-context-openai-live-responses-delegation.py | 132 | except Exception as e: | CODE |
| LOW | …persistent-context/persistent-context-grok-realtime.py | 91 | except Exception as e: | CODE |
| 660 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | evals/judges.py | 36 | TypeSafe's Jev, a hosted classifier that answers in a few hundred milliseconds. Args: config: The ``judge.e | STRING |
| HIGH | evals/judges.py | 61 | Cloudflare's Clef, a classifier on Workers AI that answers in a few hundred milliseconds. Args: config: The | STRING |
| HIGH | evals/judges.py | 92 | OpenAI's Decisions API, a classifier that answers in a few hundred milliseconds. Args: config: The ``judge. | STRING |
| HIGH | .claude/skills/docstring/SKILL.md | 136 | One-line summary of what method does. [Longer description if behavior isn't obvious.] Args: param1: De | STRING |
| HIGH | .claude/skills/cleanup/SKILL.md | 104 | Process incoming data with optional configuration. Args: data: The input data to process. options: | STRING |
| HIGH | examples/flows/python/utils.py | 18 | Create an LLM service instance based on environment configuration. Args: provider: LLM provider name. If No | STRING |
| HIGH | scripts/krisp/audio_file_utils.py | 14 | Read an audio file and convert to int16 mono format. This function: - Detects the audio format from the file he | STRING |
| HIGH | src/pipecat/pipeline/job_context.py | 73 | Fold the deprecated per-argument job spelling into a params object. Dispatch methods accept a params object and, un | STRING |
| HIGH | src/pipecat/evals/simulation.py | 235 | Parse a simulation's mapping, as read from ``path``. Args: data: The simulation's top-level mapping. | STRING |
| HIGH | src/pipecat/evals/services.py | 59 | A config's optional ``language`` as a :class:`Language`; a code string is accepted too. Args: cfg: A ``user | STRING |
| HIGH | src/pipecat/evals/services.py | 358 | Build the classifier a ``judge.eval:`` block names. A ``factory`` (a dotted path to a callable taking the config) b | STRING |
| HIGH | src/pipecat/evals/services.py | 399 | Build an LLM service from a ``service:`` block, the judge's or a persona's. A ``factory`` (a dotted path to a calla | STRING |
| HIGH | src/pipecat/evals/matcher.py | 75 | Wait for the expected event and verify it. Stale bot output is not filtered here: the stream drops it on an | STRING |
| HIGH | src/pipecat/evals/events.py | 241 | Pop the next queued event, whatever its type. Args: deadline: Monotonic time to give up at. | STRING |
| HIGH | src/pipecat/evals/events.py | 259 | Pop events until one of ``event_type`` arrives. Events of other types are dropped from the queue, so a scenario | STRING |
| HIGH | src/pipecat/evals/session.py | 255 | Build a ready-to-run session for a scenario of either kind. A scripted scenario gets an :class:`~pipeca | STRING |
| HIGH | src/pipecat/evals/scenario.py | 219 | Read a scenario file, parsing each scenario as whichever kind it is. A file in the deprecated shape, a scenario | STRING |
| HIGH | src/pipecat/evals/scenario.py | 302 | Load a file holding one scenario, as whichever kind it is. .. deprecated:: 1.11.0 Use :meth:`EvalScenarioFi | STRING |
| HIGH | src/pipecat/evals/judge.py | 495 | Build a judge from a scenario's ``judge.eval:`` block. The block names an LLM, ``ollama`` by default, and the j | STRING |
| HIGH | src/pipecat/evals/audio.py | 22 | Read an audio file as the PCM a user turn is sent as. The file keeps its own sample rate; the bot resamples on its | STRING |
| HIGH | src/pipecat/evals/script.py | 645 | Parse a scripted scenario's mapping, as read from ``path``. Args: data: The scenario's top-level mapping. | STRING |
| HIGH | src/pipecat/runner/run.py | 1772 | Parse ICE server configuration into a list of plain dictionaries. Accepts either the raw ``PIPECAT_ICE_SERVERS`` en | STRING |
| HIGH | src/pipecat/runner/utils.py | 115 | Parse telephony WebSocket messages and return transport type and call data. Args: websocket: FastAPI WebSoc | STRING |
| HIGH | src/pipecat/runner/utils.py | 494 | Get transport parameters from factory function. Args: transport_key: The transport key to look up t | STRING |
| HIGH | src/pipecat/runner/utils.py | 632 | Create a transport from runner arguments using factory functions. This function uses the clean transport_params fac | STRING |
| HIGH | src/pipecat/runner/daily.py | 93 | Configure Daily room URL and token with optional SIP capabilities. This function will either: 1. Use an existin | STRING |
| HIGH | src/pipecat/runner/livekit.py | 144 | Configure LiveKit room with command-line argument parsing. Args: parser: Optional argument parser. If None, | STRING |
| HIGH | src/pipecat/transports/lemonslice/api.py | 55 | Create a new session with the specified agent_id, agent_image_url, or agent_image. Args: agent_imag | STRING |
| HIGH | src/pipecat/transports/smallwebrtc/transport.py | 125 | Add audio bytes to the buffer for transmission. Args: audio_bytes: Raw audio data to queue for tran | STRING |
| HIGH | src/pipecat/transports/smallwebrtc/transport.py | 296 | Convert a video frame to RGB format based on the input format. Args: frame_array: The input frame a | STRING |
| HIGH | src/pipecat/transports/smallwebrtc/request_handler.py | 165 | Handle a SmallWebRTC request and resolve the pending answer. This method will: - Reuse an existing We | STRING |
| HIGH | src/pipecat/transports/daily/utils.py | 272 | Create a new Daily room. Args: params: Room configuration parameters. Returns: | STRING |
| HIGH | src/pipecat/transports/daily/utils.py | 309 | Generate a meeting token for user to join a Daily room. Args: room_url: Daily room URL. | STRING |
| HIGH | src/pipecat/transports/daily/utils.py | 378 | Delete a room using its name. Args: room_name: Name of the room to delete. Returns: | STRING |
| HIGH | src/pipecat/transports/livekit/utils.py | 68 | Delete a LiveKit room by name. This will forcibly disconnect all participants currently in the room. A | STRING |
| HIGH | src/pipecat/transports/whatsapp/client.py | 132 | Handle a verify webhook request from WhatsApp. Args: params: Dictionary containing webhook paramete | STRING |
| HIGH | src/pipecat/transports/whatsapp/client.py | 193 | Handle a webhook request from WhatsApp. This method processes incoming webhook requests and handles both | STRING |
| HIGH | src/pipecat/transports/whatsapp/client.py | 319 | Handle a CONNECT event by establishing WebRTC connection and accepting the call. This method: 1. Create | STRING |
| HIGH | src/pipecat/tests/utils.py | 137 | Run a test pipeline with the specified processor and validate frame flow. This function creates a test pipeline wit | STRING |
| HIGH | src/pipecat/utils/types.py | 78 | Extract a value that must have been provided. Intended for reads where ``NOT_GIVEN`` should never appear, such as a | STRING |
| HIGH | src/pipecat/utils/types.py | 102 | Extract a value that must have been provided and must not be empty. Like :func:`assert_given`, but also rejects ``N | STRING |
| HIGH | src/pipecat/utils/asyncio/task_manager.py | 173 | Creates and schedules a new asyncio Task that runs the given coroutine. The task is added to a global set of cr | STRING |
| HIGH | src/pipecat/cli/registry/service_loader.py | 18 | Extract the extra names from a package string. Args: package: Package string like "pipecat-ai[deepgram]", " | STRING |
| HIGH | src/pipecat/cli/generators/project.py | 77 | Generate the complete project structure. Args: output_dir: Optional directory to create project in | STRING |
| HIGH | src/pipecat/adapters/base_llm_adapter.py | 275 | Return the content to inline for a ``file_url`` item, or None when the URL passes through. Args: fi | STRING |
| HIGH | src/pipecat/adapters/services/gemini_adapter.py | 114 | Recursively adapt a JSON schema to the subset Gemini accepts. Tool schemas are JSON Schema, but Gemini take | STRING |
| HIGH | src/pipecat/adapters/services/gemini_adapter.py | 442 | Convert standard universal context message to Google Content object. Handles conversion of text, images, and fu | STRING |
| HIGH | src/pipecat/adapters/services/bedrock_adapter.py | 333 | Convert standard format message to AWS Bedrock format. Handles conversion of text content, tool calls, and tool | STRING |
| HIGH | src/pipecat/adapters/services/anthropic_adapter.py | 321 | Convert standard universal context message to Anthropic format. Handles conversion of text content, tool calls, | STRING |
| HIGH | src/pipecat/serializers/telnyx.py | 130 | Serializes a Pipecat frame to Telnyx WebSocket format. Handles conversion of various frame types to Telnyx WebS | STRING |
| HIGH | src/pipecat/serializers/telnyx.py | 243 | Deserializes Telnyx WebSocket data to Pipecat frames. Handles conversion of Telnyx media events to appropriate | STRING |
| HIGH | src/pipecat/serializers/genesys.py | 315 | Create a protocol message with common fields. Based on the Genesys AudioHook protocol, responses include: | STRING |
| HIGH | src/pipecat/audio/utils.py | 182 | Calculate the loudness level of audio data using ITU-R BS.1770. Args: audio: Audio data as raw bytes (16-bi | STRING |
| HIGH | src/pipecat/audio/krisp_instance.py | 44 | Convert integer sample rate to Krisp SDK enum value. Args: sample_rate: Sample rate in Hz (e.g., 16000, 240 | STRING |
| HIGH | src/pipecat/audio/krisp_instance.py | 64 | Convert integer frame duration to Krisp SDK enum value. Args: frame_duration_ms: Frame duration in millisec | STRING |
| HIGH | src/pipecat/audio/filters/aic_filter.py | 131 | Get or load a Model and increment its reference count. Call this when starting a filter. Store the returned key | STRING |
| HIGH | src/pipecat/audio/turn/krisp_viva_turn.py | 162 | Create a turn detection session with the specified sample rate. Args: sample_rate: Sample rate for | STRING |
| HIGH | src/pipecat/audio/vad/krisp_viva_vad.py | 95 | Create a Krisp VAD session with a specific sample rate. Args: sample_rate: Sample rate for the sess | STRING |
| HIGH | src/pipecat/transcriptions/language.py | 623 | Resolve a Language enum to a service-specific language code. Checks the language map first, then falls back to extr | STRING |
| HIGH | src/pipecat/workers/base_worker.py | 1050 | Wait for workers to be ready, create a job group, and send requests. Waits for all workers to be registered as | STRING |
| 46 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_xai_tts.py | 139 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_xai_tts.py | 217 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_xai_tts.py | 316 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_xai_tts.py | 388 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_xai_tts.py | 445 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_smallwebrtc_transport.py | 225 | except BaseException: | CODE |
| HIGH | tests/test_smallwebrtc_transport.py | 282 | except BaseException: | CODE |
| HIGH | tests/test_smallwebrtc_transport.py | 303 | except BaseException: | CODE |
| HIGH | tests/test_fastapi_websocket.py | 178 | except Exception: | CODE |
| HIGH | tests/test_base_worker.py | 755 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_websocket_proxy.py | 174 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_websocket_proxy.py | 203 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_websocket_proxy.py | 285 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_websocket_proxy.py | 313 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_websocket_server_transport.py | 124 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_deepgram_flux_tts.py | 115 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_bland_tts.py | 135 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_bland_tts.py | 924 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_bland_tts.py | 993 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_bland_tts.py | 1076 | except websockets.ConnectionClosed: | CODE |
| HIGH | tests/test_runner.py | 102 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_runner.py | 196 | except asyncio.CancelledError: | CODE |
| HIGH | tests/openclaw_fake_gateway.py | 143 | except Exception: | CODE |
| HIGH | tests/test_evals_client_transport.py | 51 | except asyncio.CancelledError: | CODE |
| HIGH | tests/test_pipeline.py | 418 | except TimeoutError: | CODE |
| HIGH | tests/test_pipeline.py | 446 | except TimeoutError: | CODE |
| HIGH | tests/test_pipeline.py | 475 | except TimeoutError: | CODE |
| HIGH | tests/test_pipeline.py | 517 | except TimeoutError: | CODE |
| HIGH | examples/flows/python/warm_transfer.py | 705 | except: | CODE |
| HIGH | examples/flows/python/assets/hold_music/hold_music.py | 114 | except asyncio.CancelledError: | CODE |
| HIGH | scripts/daily/mock_tavus_server.py | 27 | except asyncio.InvalidStateError: | CODE |
| HIGH | scripts/daily/mock_tavus_server.py | 101 | except asyncio.CancelledError: | CODE |
| HIGH | scripts/provider-watch/probe.py | 185 | except ValueError: | CODE |
| HIGH | src/pipecat/evals/client.py | 902 | except Exception: | CODE |
| HIGH | src/pipecat/evals/client.py | 532 | except OSError: | CODE |
| HIGH | src/pipecat/evals/client.py | 619 | except (asyncio.CancelledError, Exception): | CODE |
| HIGH | src/pipecat/evals/judge.py | 1163 | except (json.JSONDecodeError, AttributeError): | CODE |
| HIGH | src/pipecat/evals/judge.py | 1256 | except (json.JSONDecodeError, AttributeError): | CODE |
| HIGH | src/pipecat/runner/run.py | 549 | except ImportError: | CODE |
| HIGH | src/pipecat/runner/utils.py | 196 | except json.JSONDecodeError: | CODE |
| HIGH | src/pipecat/runner/utils.py | 206 | except json.JSONDecodeError: | CODE |
| HIGH | src/pipecat/transports/websocket/fastapi.py | 222 | except asyncio.CancelledError: | CODE |
| HIGH | src/pipecat/transports/daily/transport.py | 1772 | except FuturesCancelledError: | CODE |
| HIGH | src/pipecat/transports/daily/transport.py | 447 | except asyncio.InvalidStateError: | CODE |
| HIGH | src/pipecat/transports/vonage/client.py | 918 | except asyncio.QueueEmpty: | CODE |
| HIGH | src/pipecat/transports/vonage/video_connector.py | 185 | except Exception: | CODE |
| HIGH | src/pipecat/transports/vonage/video_connector.py | 323 | except Exception: | CODE |
| HIGH | src/pipecat/transports/moq/transport.py | 1630 | except asyncio.CancelledError: | CODE |
| HIGH | src/pipecat/transports/moq/transport.py | 1678 | except asyncio.CancelledError: | CODE |
| HIGH | src/pipecat/transports/moq/transport.py | 821 | except Exception: | CODE |
| HIGH | src/pipecat/utils/base_object.py | 223 | except ValueError: | CODE |
| HIGH | src/pipecat/utils/context/llm_context_summarization.py | 416 | except (json.JSONDecodeError, ValueError): | CODE |
| HIGH | src/pipecat/utils/context/llm_context_summarization.py | 500 | except (json.JSONDecodeError, ValueError): | CODE |
| HIGH | …pecat/processors/aggregators/llm_response_universal.py | 983 | except AttributeError: | CODE |
| HIGH | src/pipecat/serializers/telnyx.py | 222 | except Exception: | CODE |
| HIGH | src/pipecat/serializers/genesys.py | 300 | except ValueError: | CODE |
| HIGH | src/pipecat/serializers/twilio.py | 256 | except Exception: | CODE |
| HIGH | src/pipecat/transcriptions/language.py | 675 | except ValueError: | CODE |
| HIGH | src/pipecat/workers/base_worker.py | 409 | except asyncio.CancelledError: | CODE |
| HIGH | src/pipecat/workers/base_worker.py | 1418 | except asyncio.CancelledError: | CODE |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_user_bot_latency_observer.py | 1233 | CODE | |
| LOW | tests/test_deepgram_flux_sagemaker_tts.py | 77 | CODE | |
| LOW | tests/test_deepgram_flux_tts.py | 41 | CODE | |
| LOW | tests/test_deepgram_flux_tts.py | 55 | CODE | |
| LOW | tests/test_bland_tts.py | 58 | CODE | |
| LOW | tests/test_bland_tts.py | 884 | CODE | |
| LOW | tests/test_bland_tts.py | 964 | CODE | |
| LOW | tests/test_bland_tts.py | 1026 | CODE | |
| LOW | tests/test_bland_tts.py | 70 | CODE | |
| LOW | tests/test_bland_tts.py | 890 | CODE | |
| LOW | tests/test_bland_tts.py | 968 | CODE | |
| LOW | tests/test_bland_tts.py | 1029 | CODE | |
| LOW | tests/test_get_llm_invocation_params.py | 609 | CODE | |
| LOW | tests/test_get_llm_invocation_params.py | 4171 | CODE | |
| LOW | tests/test_gemini_live_user_audio.py | 53 | CODE | |
| LOW | tests/test_xai_realtime_events.py | 104 | CODE | |
| LOW | tests/test_backend_llm_worker.py | 89 | CODE | |
| LOW | tests/cli/test_client_generation.py | 340 | CODE | |
| LOW | tests/cli/test_project_generation.py | 59 | CODE | |
| LOW | tests/cli/test_project_generation.py | 414 | CODE | |
| LOW | examples/transcription/transcription-google-llm.py | 95 | CODE | |
| LOW | examples/transcription/transcription-google-llm.py | 132 | CODE | |
| LOW | examples/features/features-custom-frame-processor.py | 40 | CODE | |
| LOW | examples/multi-worker/code-assistant/code_worker.py | 80 | CODE | |
| LOW | examples/multi-worker/openclaw-agent/openclaw_worker.py | 103 | CODE | |
| LOW | …es/realtime/realtime-gemini-live-grounding-metadata.py | 85 | CODE | |
| LOW | examples/voice/voice-google-audio-in.py | 87 | CODE | |
| LOW | examples/voice/voice-google-audio-in.py | 129 | CODE | |
| LOW | examples/voice/voice-aicoustics-vad-only.py | 121 | CODE | |
| LOW | examples/flows/python/llm_switching.py | 100 | CODE | |
| LOW | scripts/cli/imports/import_generator.py | 19 | CODE | |
| LOW | scripts/cli/imports/import_generator.py | 56 | CODE | |
| LOW | scripts/cli/imports/import_generator.py | 138 | CODE | |
| LOW | scripts/cli/imports/import_generator.py | 285 | CODE | |
| LOW | scripts/cli/imports/import_generator.py | 381 | CODE | |
| LOW | scripts/cli/configs/config_generator.py | 257 | CODE | |
| LOW | scripts/cli/configs/config_generator.py | 376 | CODE | |
| LOW | scripts/provider-watch/probe.py | 284 | CODE | |
| LOW | scripts/provider-watch/probe.py | 332 | CODE | |
| LOW | scripts/provider-watch/inventory.py | 138 | CODE | |
| LOW | scripts/provider-watch/inventory.py | 171 | CODE | |
| LOW | scripts/provider-watch/inventory.py | 199 | CODE | |
| LOW | scripts/provider-watch/inventory.py | 369 | CODE | |
| LOW | scripts/krisp/test_krisp_viva_filter_audiofile.py | 88 | CODE | |
| LOW | scripts/krisp/test_krisp_viva_turn_audiofile.py | 68 | CODE | |
| LOW | scripts/deprecations/scan.py | 135 | CODE | |
| LOW | scripts/deprecations/scan.py | 333 | CODE | |
| LOW | scripts/deprecations/scan.py | 407 | CODE | |
| LOW | scripts/deprecations/scan.py | 349 | CODE | |
| LOW | src/pipecat/pipeline/worker.py | 276 | CODE | |
| LOW | src/pipecat/pipeline/worker.py | 946 | CODE | |
| LOW | src/pipecat/pipeline/worker.py | 1007 | CODE | |
| LOW | src/pipecat/pipeline/worker.py | 1056 | CODE | |
| LOW | src/pipecat/pipeline/worker.py | 1481 | CODE | |
| LOW | src/pipecat/pipeline/worker.py | 1546 | CODE | |
| LOW | src/pipecat/pipeline/job_decorator.py | 51 | CODE | |
| LOW | src/pipecat/pipeline/sync_parallel_pipeline.py | 252 | CODE | |
| LOW | src/pipecat/pipeline/sync_parallel_pipeline.py | 291 | CODE | |
| LOW | src/pipecat/pipeline/worker_observer.py | 245 | CODE | |
| LOW | src/pipecat/pipeline/llm_with_backend.py | 586 | CODE | |
| 292 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_markdown_text_filter.py | 216 | # Create a filter with all features disabled | COMMENT |
| MEDIUM | tests/test_frame_processor.py | 329 | # Create a frame with mutable fields to test shallow copying | COMMENT |
| MEDIUM | tests/test_ivr_navigation.py | 28 | # Create a mock LLM service | COMMENT |
| MEDIUM | tests/test_krisp_viva_filter.py | 56 | # Create a temporary .kef model file for testing | COMMENT |
| MEDIUM | tests/test_piper_tts.py | 63 | # Create an aiohttp test server | COMMENT |
| MEDIUM | tests/test_krisp_viva_vad.py | 55 | # Create a temporary .kef model file for testing | COMMENT |
| MEDIUM⚡ | tests/test_vonage_video_connector.py | 1009 | # Create an event that will block but can be interrupted | COMMENT |
| MEDIUM⚡ | tests/test_vonage_video_connector.py | 2969 | # Create a simple RGB image with distinct colors | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 799 | # Create an event that will block but can be interrupted | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 1088 | # Create a mock coroutine to queue | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 1225 | # Create a test RGB image (640x480, 3 channels) | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 1875 | # Create a test RGB video frame (4x4, 3 channels) | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 2206 | # Create a mock audio frame | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 2224 | # Create a test video frame | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 2256 | # Create a test video frame | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 2287 | # Create a video frame with incorrect size | COMMENT |
| MEDIUM | tests/test_vonage_video_connector.py | 2313 | # Create a video frame with incorrect size | COMMENT |
| MEDIUM | tests/test_service_switcher.py | 500 | # Create a pipeline with both switchers: switcher1 -> switcher2 | COMMENT |
| MEDIUM | tests/test_openai_llm_timeout.py | 84 | # Create a context frame to process | COMMENT |
| MEDIUM | tests/test_context_summarization.py | 650 | # Create a minimal LLM service - base class raises NotImplementedError | COMMENT |
| MEDIUM | tests/test_get_llm_invocation_params.py | 293 | # Create a message with complex content structure (text + image) | COMMENT |
| MEDIUM | tests/test_get_llm_invocation_params.py | 305 | # Create a message with multiple text blocks | COMMENT |
| MEDIUM | tests/test_get_llm_invocation_params.py | 614 | # Create a message with complex content structure (text + image) | COMMENT |
| MEDIUM | tests/test_get_llm_invocation_params.py | 629 | # Create a message with multiple text blocks | COMMENT |
| MEDIUM | tests/test_get_llm_invocation_params.py | 639 | # Create a message with audio input (text + audio) | COMMENT |
| MEDIUM | tests/test_get_llm_invocation_params.py | 1588 | # Create a complex message with both text and image content | COMMENT |
| MEDIUM | tests/test_get_llm_invocation_params.py | 2351 | # Create a complex message with both text and image content | COMMENT |
| MEDIUM | …ideo-processing/video-processing-custom-video-track.py | 157 | # Create a blue-tinted copy for the custom destination. | COMMENT |
| MEDIUM | examples/transports/transports-small-webrtc.py | 102 | # Create a transport using the WebRTC connection | COMMENT |
| MEDIUM | examples/rag/rag-mem0.py | 85 | # Create a personalized greeting based on memories | COMMENT |
| MEDIUM | examples/realtime/realtime-azure-voice-live.py | 145 | # Create a standard LLM context object using the normal messages format. The | COMMENT |
| MEDIUM | examples/realtime/realtime-openai.py | 153 | # Create a standard OpenAI LLM context object using the normal messages format. The | COMMENT |
| MEDIUM | examples/realtime/realtime-openai-text.py | 150 | # Create a standard OpenAI LLM context object using the normal messages format. The | COMMENT |
| MEDIUM | examples/realtime/realtime-inworld.py | 114 | # Create the Inworld Realtime LLM service. | COMMENT |
| MEDIUM | examples/realtime/realtime-openai-video.py | 117 | # Create a standard OpenAI LLM context object using the normal messages format. The | COMMENT |
| MEDIUM | examples/realtime/realtime-grok.py | 155 | # Create the Grok Realtime LLM service | COMMENT |
| MEDIUM | …es/realtime/realtime-gemini-live-grounding-metadata.py | 126 | # Create a processor to capture grounding metadata | COMMENT |
| MEDIUM | examples/realtime/realtime-azure.py | 140 | # Create a standard LLM context object using the normal messages format. The | COMMENT |
| MEDIUM | examples/realtime/realtime-aws-nova-sonic.py | 95 | # Create the AWS Nova Sonic LLM service | COMMENT |
| MEDIUM | examples/realtime/realtime-gemini-live-files-api.py | 92 | # Create a temporary file | STRING |
| MEDIUM | examples/realtime/realtime-gemini-live-files-api.py | 101 | # Create a sample file to upload | STRING |
| MEDIUM | examples/update-settings/stt/stt-whisper-api.py | 64 | # This file is meant to exercise Whisper API-based STT services, so we use | COMMENT |
| MEDIUM | examples/getting-started/04-sync-speech-and-image.py | 121 | # Create an HTTP session for API calls | COMMENT |
| MEDIUM | examples/voice/voice-neuphonic-http.py | 67 | # Create an HTTP session | COMMENT |
| MEDIUM | examples/voice/voice-elevenlabs-http.py | 67 | # Create an HTTP session | COMMENT |
| MEDIUM | examples/voice/voice-bland-http.py | 67 | # Create an HTTP session | COMMENT |
| MEDIUM | examples/voice/voice-aicoustics.py | 161 | # Create the WAV file | COMMENT |
| MEDIUM | examples/voice/voice-xtts.py | 66 | # Create an HTTP session | COMMENT |
| MEDIUM | examples/voice/voice-asyncai-http.py | 67 | # Create an HTTP session | COMMENT |
| MEDIUM | examples/voice/voice-sarvam-vad-http.py | 68 | # Create an HTTP session | COMMENT |
| MEDIUM | examples/voice/voice-minimax.py | 68 | # Create an HTTP session | COMMENT |
| MEDIUM | examples/voice/voice-rime-http.py | 67 | # Create an HTTP session | COMMENT |
| MEDIUM | …persistent-context/persistent-context-grok-realtime.py | 116 | # Define the tools schema | COMMENT |
| MEDIUM | scripts/cli/imports/update_imports.py | 173 | # Create the complete file content | STRING |
| MEDIUM | .github/workflows/update-docs.yml | 152 | ### Creating the docs PR | COMMENT |
| MEDIUM | src/pipecat/pipeline/worker.py | 879 | # Create the worker's tasks and wait for the push task, which | COMMENT |
| MEDIUM | src/pipecat/runner/daily.py | 208 | # Create a new room | COMMENT |
| MEDIUM | src/pipecat/transports/websocket/server.py | 263 | # Create a task to monitor the websocket connection | COMMENT |
| MEDIUM | src/pipecat/utils/base_object.py | 258 | # Create the task. Note that this is a task per each function | COMMENT |
| MEDIUM | src/pipecat/utils/tracing/turn_trace_observer.py | 136 | # Create a new span for this conversation | COMMENT |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_stt_usage_metrics.py | 167 | CODE | |
| LOW | tests/test_eager_user_turn_strategies.py | 10 | CODE | |
| LOW | tests/test_eager_user_turn_strategies.py | 10 | CODE | |
| LOW | tests/test_speculation_gate.py | 7 | CODE | |
| LOW | tests/test_speculation_gate.py | 9 | CODE | |
| LOW | tests/test_speculation_gate.py | 11 | CODE | |
| LOW | tests/test_runner_run.py | 41 | CODE | |
| LOW | tests/test_runner_run.py | 42 | CODE | |
| LOW | tests/test_runner_utils.py | 27 | CODE | |
| LOW | tests/test_bus_network.py | 14 | CODE | |
| LOW | tests/test_bus_network.py | 21 | CODE | |
| LOW | scripts/release-changelog.py | 29 | CODE | |
| LOW | scripts/provider-watch/digest.py | 20 | CODE | |
| LOW | scripts/provider-watch/plan.py | 19 | CODE | |
| LOW | scripts/provider-watch/probe.py | 46 | CODE | |
| LOW | scripts/provider-watch/publish.py | 40 | CODE | |
| LOW | scripts/provider-watch/inventory.py | 26 | CODE | |
| LOW | scripts/krisp/test_krisp_viva_filter_audiofile.py | 28 | CODE | |
| LOW | scripts/krisp/test_krisp_viva_turn_audiofile.py | 26 | CODE | |
| LOW | scripts/deprecations/generate.py | 23 | CODE | |
| LOW | scripts/deprecations/scan.py | 20 | CODE | |
| LOW | scripts/deprecations/generate_removals.py | 30 | CODE | |
| LOW | src/pipecat/pipeline/job_context.py | 9 | CODE | |
| LOW | src/pipecat/pipeline/task.py | 15 | CODE | |
| LOW | src/pipecat/pipeline/task.py | 15 | CODE | |
| LOW | src/pipecat/pipeline/task.py | 15 | CODE | |
| LOW | src/pipecat/pipeline/task.py | 15 | CODE | |
| LOW | src/pipecat/pipeline/task.py | 15 | CODE | |
| LOW | src/pipecat/evals/harness.py | 17 | CODE | |
| LOW | src/pipecat/evals/harness.py | 18 | CODE | |
| LOW | src/pipecat/evals/harness.py | 18 | CODE | |
| LOW | src/pipecat/evals/harness.py | 18 | CODE | |
| LOW | src/pipecat/evals/harness.py | 18 | CODE | |
| LOW | src/pipecat/evals/harness.py | 18 | CODE | |
| LOW | src/pipecat/evals/harness.py | 18 | CODE | |
| LOW | src/pipecat/evals/harness.py | 26 | CODE | |
| LOW | src/pipecat/evals/harness.py | 26 | CODE | |
| LOW | src/pipecat/evals/harness.py | 27 | CODE | |
| LOW | src/pipecat/evals/harness.py | 27 | CODE | |
| LOW | src/pipecat/evals/harness.py | 28 | CODE | |
| LOW | src/pipecat/evals/harness.py | 29 | CODE | |
| LOW | src/pipecat/evals/harness.py | 29 | CODE | |
| LOW | src/pipecat/evals/session.py | 28 | CODE | |
| LOW | src/pipecat/evals/session.py | 34 | CODE | |
| LOW | src/pipecat/evals/session.py | 48 | CODE | |
| LOW | src/pipecat/evals/session.py | 51 | CODE | |
| LOW | src/pipecat/evals/session.py | 52 | CODE | |
| LOW | src/pipecat/evals/session.py | 53 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 120 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 120 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 121 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 133 | CODE | |
| LOW | src/pipecat/evals/scenario.py | 133 | CODE | |
| 207 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | evals/release/manifest.yaml | 352 | # harness connects; the scenario waits for the image. | COMMENT |
| MEDIUM | evals/release/manifest.yaml | 392 | # LLM responds to, so the harness can assert on the resulting transcription and | COMMENT |
| MEDIUM | …ls/release/scenarios/scripted/food_ordering_sushi.yaml | 30 | # pipeline down before the farewell llm_response reaches the harness. | COMMENT |
| MEDIUM | evals/release/scenarios/scripted/hello_world.yaml | 13 | # pipeline down before the farewell llm_response reaches the harness. | COMMENT |
| MEDIUM | …ls/release/scenarios/scripted/food_ordering_pizza.yaml | 38 | # pipeline down before the farewell llm_response reaches the harness. | COMMENT |
| MEDIUM | …ls/release/scenarios/scripted/acme_handoff_voices.yaml | 55 | # reaches the harness, so assert the call alone. | COMMENT |
| MEDIUM | …release/scenarios/scripted/restaurant_reservation.yaml | 8 | # farewell llm_response reaches the harness. | COMMENT |
| MEDIUM | evals/release/scenarios/scripted/generate_image.yaml | 3 | # The bot generates an image from a fixed prompt when the harness connects. The | COMMENT |
| MEDIUM | evals/release/scenarios/scripted/insurance_quote.yaml | 44 | # pipeline down before the farewell llm_response reaches the harness. | COMMENT |
| MEDIUM | evals/release/scenarios/scripted/acme_handoff.yaml | 34 | # reaches the harness, so assert the call alone. | COMMENT |
| MEDIUM | evals/release/scenarios/scripted/language_switch.yaml | 6 | # survives the bot's TTS and the harness's STT. | COMMENT |
| MEDIUM | …ase/scenarios/scripted/capital_question_recording.yaml | 5 | # than the harness's TTS voice. The clip is 24 kHz where bots take 16 kHz input, | COMMENT |
| MEDIUM | evals/release/scenarios/scripted/keenable.yaml | 26 | # the judged answer is robust over time. | COMMENT |
| MEDIUM | …s/release/scenarios/scripted/multi_worker_handoff.yaml | 10 | # reaches the harness. | COMMENT |
| MEDIUM | evals/release/scenarios/scripted/capital_question.yaml | 8 | # robust to transcription than arithmetic: numbers are homophone-prone on both | COMMENT |
| MEDIUM⚡ | tests/test_evals_session.py | 233 | # The bot's reports about the harness (its raw VAD and turn-level speaking) | COMMENT |
| MEDIUM⚡ | tests/test_evals_session.py | 1495 | # The harness streams user audio only when audio output is enabled, so | COMMENT |
| MEDIUM | tests/test_evals_session.py | 1590 | # The harness streams the user's side continuously (silence | COMMENT |
| MEDIUM | tests/test_tts_frame_ordering.py | 1697 | # — an ordering quirk of the test harness sending everything nearly | COMMENT |
| MEDIUM⚡ | tests/test_word_completion_tracker.py | 3102 | text = "---\n\n### **Summary**\nThe provided images are comprehensive." | CODE |
| MEDIUM⚡ | tests/test_word_completion_tracker.py | 3105 | ["---.", "###", "**Summary**.", "The", "provided", "images", "are", "comprehensive."], | CODE |
| MEDIUM | tests/test_pipeline.py | 534 | # is a guaranteed lower bound, so this is robust to scheduling jitter while | COMMENT |
| MEDIUM | tests/test_evals_serializer.py | 206 | # Already at the harness STT rate (16 kHz): passes through unchanged. | COMMENT |
| MEDIUM | tests/test_evals_serializer.py | 220 | # A different rate is resampled to the harness STT rate for the pipeline VAD/STT. | COMMENT |
| MEDIUM | tests/cli/test_project_generation.py | 865 | # schema (EvalScenarioFile.load is the loader the harness itself uses). | COMMENT |
| MEDIUM | tests/cli/test_project_generation.py | 875 | # The project env carries what the harness needs via the `evals` extra: the | COMMENT |
| LOW | …s/function-calling/function-calling-moondream-video.py | 97 | # For all other frames, just pass them through | COMMENT |
| LOW | examples/transcription/transcription-google-llm.py | 156 | # keep the token count down, but for now, we'll just use the whole thing. | STRING |
| MEDIUM | examples/features/features-add-tool-change-messages.py | 123 | # what we want for this validation harness. Pull it with | COMMENT |
| MEDIUM | examples/realtime/realtime-aws-nova-sonic.py | 107 | # Session continuation is enabled by default, allowing seamless | COMMENT |
| MEDIUM | scripts/provider-watch/probe.py | 281 | # ---------------------------------------------------------------------- harness | COMMENT |
| MEDIUM | src/pipecat/evals/simulation.py | 131 | # What a measured metric can measure, computed by the harness from the run. | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/suite.py | 131 | # How long to wait for a freshly spawned bot to start listening (the harness | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/suite.py | 134 | # How long to wait for a bot subprocess to exit after the harness asks it to | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/suite.py | 137 | # Safety net for a hung harness worker. The harness's own per-expectation timeouts | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/suite.py | 146 | # The harness runs three sub-pipelines in-process and tags each one's logs with an | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/suite.py | 147 | # ``eval_pipeline`` context value via logger.contextualize (see harness.py), | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/suite.py | 149 | # connection, harness internals) falls through to "harness". The label is the | COMMENT |
| MEDIUM | src/pipecat/evals/suite.py | 1167 | # The worker crashed before writing a result; its traceback is in the harness log. | COMMENT |
| MEDIUM | src/pipecat/evals/results.py | 37 | "error", # the harness itself raised (a sub-pipeline, the judge, ...), not the bot | CODE |
| MEDIUM | src/pipecat/evals/transport.py | 97 | # The harness sends the image encoded over the wire, but a real camera | COMMENT |
| MEDIUM | src/pipecat/evals/client.py | 316 | # The harness's own pipeline reported an error: a service in it (the persona | COMMENT |
| MEDIUM | src/pipecat/evals/client.py | 599 | # Write the recording first: the recorder is harness-owned and fed raw | COMMENT |
| MEDIUM | src/pipecat/evals/session.py | 162 | # Timestamped trace of the harness's own decisions, for diagnosing flakes. | COMMENT |
| MEDIUM | src/pipecat/evals/_session_subprocess.py | 48 | # harness's per-pipeline loguru output -- now in this worker process. | COMMENT |
| MEDIUM | src/pipecat/evals/client_transport.py | 269 | # the harness recorder aligns tracks by wall-clock, so a continuous | COMMENT |
| MEDIUM | src/pipecat/evals/judge.py | 484 | # The conversation the judge evaluates against, grown by the harness over | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 54 | # ``CancelWorkerFrame``, so the harness can end a scenario by gracefully tearing down the | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 63 | # without a real camera. The harness sends the image encoded over the wire; the | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 70 | # so the harness reader sees it; the harness transcribes the audio locally. | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 77 | # Rate the harness resamples the bot's audio to before its pipeline VAD/STT see | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 79 | # the harness configures its input transport at this rate to match. | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 98 | # wire so the harness can observe semantic events. | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 107 | # flood the harness. | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 109 | # The most recent image the harness registered (still-encoded bytes, MIME | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 259 | # The bot's reports about *the user it is talking to* (i.e. about the harness): | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 261 | # harness surfaces these as scenario events, but does not let them drive its own | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 265 | # computed locally by the harness's own user aggregator from the bot's audio (a | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 266 | # different signal than the bot's VAD on the harness's audio). Routing the reports | COMMENT |
| MEDIUM⚡ | src/pipecat/evals/serializer.py | 276 | # doesn't become an InterruptionFrame, which the harness's own user | COMMENT |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/test_livekit_transport.py | 799 | transport._client.room.remote_participants.get.assert_not_called() | CODE |
| CRITICAL | tests/test_livekit_transport.py | 817 | transport._client.room.remote_participants.get.assert_not_called() | CODE |
| CRITICAL | tests/test_sarvam_llm.py | 344 | service._client.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/test_sarvam_llm.py | 417 | service._client.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/test_sarvam_llm.py | 474 | service._client.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/test_sarvam_llm.py | 501 | service._client.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/test_sarvam_llm.py | 541 | service._client.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/test_sarvam_llm.py | 617 | service._client.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/test_sarvam_llm.py | 657 | service._client.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/test_anthropic_thinking_defaults.py | 38 | return service._client.beta.messages.create.call_args.kwargs.get("thinking") | CODE |
| CRITICAL | tests/test_run_inference.py | 81 | service._client.chat.completions.create.assert_called_once_with( | CODE |
| CRITICAL | tests/test_run_inference.py | 193 | service._client.beta.messages.create.assert_called_once_with( | CODE |
| CRITICAL | tests/test_run_inference.py | 263 | service._client.aio.models.generate_content.assert_called_once() | CODE |
| CRITICAL | src/pipecat/services/openai/tts.py | 282 | async with self._client.audio.speech.with_streaming_response.create( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 261 | # prescribes trio.Path or anyio.path for filesystem work; pipecat runs on | COMMENT |
| LOW | evals/release/run.sh | 1 | #!/usr/bin/env sh | COMMENT |
| LOW | evals/release/manifest.yaml | 1 | # Release evals manifest: which scenarios each bot runs. | COMMENT |
| LOW | evals/release/manifest.yaml | 381 | # | COMMENT |
| LOW | evals/release/manifest.yaml | 401 | # | COMMENT |
| LOW | evals/release/manifest.yaml | 441 | # Web search: the bot answers a current-events question by calling Keenable's | COMMENT |
| LOW | …ls/release/scenarios/scripted/acme_handoff_voices.yaml | 1 | # Each worker brings its own TTS and its own voice, so a hand-off is two | COMMENT |
| LOW | evals/release/scenarios/scripted/empty_user_turn.yaml | 1 | name: empty_user_turn | COMMENT |
| LOW | …s/release/scenarios/scripted/multi_worker_handoff.yaml | 41 | eval: "the bot confirms a reservation is available at the requested time" | COMMENT |
| LOW | …elease/scenarios/scripted/async_tool_cancellation.yaml | 41 | # rounds the turn off — confirming the cancellation, or asking what else it can | COMMENT |
| LOW | evals/turn-completion/run.sh | 1 | #!/usr/bin/env sh | COMMENT |
| LOW | tests/test_aggregated_frame_sequencer.py | 1321 | tts_frames[0].includes_inter_frame_spaces, | COMMENT |
| LOW | tests/test_word_completion_tracker.py | 1981 | COMMENT | |
| LOW | tests/test_rtvi_processor.py | 61 | # TODO: enable this once RTVI 2.0.0 is supported by all our client SDKs, and we start to emit the warnings again. | COMMENT |
| LOW | tests/test_websocket_transport.py | 1 | # | COMMENT |
| LOW | tests/test_websocket_transport.py | 21 | # self.serialized_sample_frame = self.transport._serializer.serialize( | COMMENT |
| LOW | tests/test_websocket_transport.py | 41 | # mock_websocket.send.call_args[0][0], self.serialized_sample_frame) | COMMENT |
| LOW | tests/test_websocket_transport.py | 61 | # TTSStartFrame(), | COMMENT |
| LOW | tests/test_websocket_transport.py | 81 | # async def test_serializer_parameter(self): | COMMENT |
| LOW | tests/test_websocket_transport.py | 101 | # self.transport = WebsocketTransport( | COMMENT |
| LOW | …/multi-worker/ui-worker/document-review/client/main.js | 41 | // In-flight review groups, keyed by job_id. Rendered as cards above | COMMENT |
| LOW | examples/rag/rag-mem0.py | 181 | COMMENT | |
| LOW | examples/realtime/realtime-openai.py | 201 | logger.info("Adding tools") | COMMENT |
| LOW | examples/realtime/realtime-openai.py | 221 | # ) | COMMENT |
| LOW | examples/realtime/realtime-gemini-live.py | 141 | context = LLMContext() | COMMENT |
| LOW | examples/realtime/realtime-grok.py | 181 | # Create context with initial message and tools | COMMENT |
| LOW | examples/realtime/realtime-grok.py | 201 | context, | COMMENT |
| LOW | examples/realtime/realtime-ultravox.py | 181 | ) | COMMENT |
| LOW | examples/realtime/realtime-grok-async-tool.py | 121 | # of a user's turn; uncomment the below imports and user_params to | COMMENT |
| LOW | …es/realtime/realtime-gemini-live-grounding-metadata.py | 121 | voice="Charon", # Aoede, Charon, Fenrir, Kore, Puck | COMMENT |
| LOW | examples/realtime/realtime-azure.py | 141 | # OpenAIRealtimeBetaLLMService will convert this internally to messages that the | COMMENT |
| LOW | examples/realtime/realtime-aws-nova-sonic.py | 121 | # AWS Nova Sonic drives the conversation server-side. | COMMENT |
| LOW | examples/realtime/realtime-gemini-live-video.py | 81 | { | COMMENT |
| LOW | examples/update-settings/llm/llm-gemini-live.py | 61 | settings=GeminiLiveLLMService.Settings( | COMMENT |
| LOW | examples/thinking/thinking-google.py | 121 | # Kick off the conversation. | COMMENT |
| LOW | examples/thinking/thinking-google-vertex.py | 121 | logger.info("Client connected") | COMMENT |
| LOW | examples/getting-started/04-sync-speech-and-image.py | 141 | key=os.getenv("FAL_KEY"), | COMMENT |
| LOW | …t/turn-management-filter-incomplete-turns-user-idle.py | 101 | context = LLMContext() | COMMENT |
| LOW | …-management/turn-management-filter-incomplete-turns.py | 101 | # with one of: | COMMENT |
| LOW | …management-filter-incomplete-turns-function-calling.py | 121 | COMMENT | |
| LOW | …-management/turn-management-smart-turn-local-coreml.py | 41 | # | COMMENT |
| LOW | examples/flows/python/warm_transfer.py | 81 | COMMENT | |
| LOW | examples/flows/python/warm_transfer.py | 101 | # - continued_customer_interaction | COMMENT |
| LOW | scripts/deprecations/scan.py | 41 | # The first reference in a directive body (role or backtick) — the replacement, | COMMENT |
| LOW | .github/PULL_REQUEST_TEMPLATE.md | 1 | #### Please describe the changes in your PR. If it is addressing an issue, please reference that as well. | COMMENT |
| LOW | src/pipecat/pipeline/worker.py | 581 | self._sink = PipelineSink(self._sink_push_frame, name=f"{self}::Sink") | COMMENT |
| LOW | src/pipecat/pipeline/parallel_pipeline.py | 141 | COMMENT | |
| LOW | src/pipecat/pipeline/llm_with_backend.py | 81 | RELAY_NOTE = ( | COMMENT |
| LOW | src/pipecat/evals/events.py | 101 | # arrival of its first token (``started_at``), for the timing measures. | COMMENT |
| LOW | src/pipecat/evals/serializer.py | 41 | COMMENT | |
| LOW | src/pipecat/evals/serializer.py | 61 | # transport hands it back as a ``UserImageRawFrame`` when the bot asks for a user | COMMENT |
| LOW | src/pipecat/evals/script.py | 301 | COMMENT | |
| LOW | src/pipecat/transports/base_output.py | 461 | # came from frames with the same ``interruptible`` flag, so a chunk | COMMENT |
| LOW | src/pipecat/transports/smallwebrtc/connection.py | 41 | raise ImportError(f"Missing module: {e}") from e | COMMENT |
| LOW | src/pipecat/transports/smallwebrtc/connection.py | 61 | # SCTP retransmits at the same size, and the data channel silently stalls. | COMMENT |
| LOW | src/pipecat/transports/moq/transport.py | 61 | # checkers resolve it as a non-Exception type even though the Exception | COMMENT |
| LOW | src/pipecat/transports/moq/transport.py | 261 | # Transport-level fields on every transcript record. The transcript is a | COMMENT |
| LOW | src/pipecat/transports/moq/transport.py | 281 | # A dropped connection ends the peer's subscriptions a beat before the | COMMENT |
| LOW | src/pipecat/transports/moq/transport.py | 301 | # absorbed as that much measured jitter in the player's delay floor — | COMMENT |
| LOW | src/pipecat/transports/moq/transport.py | 641 | # snapshot helper (publish_json_snapshot) would collapse to the | COMMENT |
| 73 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_markdown_text_filter.py | 52 | # Check if spaces are in the same positions | STRING |
| LOW | tests/test_flows_context_strategies.py | 325 | # Set nodes to trigger summary generation | COMMENT |
| LOW | tests/test_flows_context_strategies.py | 361 | # Set nodes to trigger summary generation | COMMENT |
| LOW | tests/test_get_llm_invocation_params.py | 688 | # Check if it's image or audio based on the text content | COMMENT |
| LOW | tests/test_aic_filter.py | 16 | # Check if aic_sdk is available | COMMENT |
| LOW | tests/test_aic_quail_vad.py | 12 | # Check if aic_sdk is available | COMMENT |
| LOW | docs/api/build-docs.sh | 15 | # Check if sphinx-build is available | COMMENT |
| LOW | scripts/cli/imports/import_generator.py | 89 | # Check if this file contains the class | COMMENT |
| LOW | scripts/cli/imports/import_generator.py | 336 | # Check if this is a standard library module that should be imported directly | COMMENT |
| LOW | scripts/cli/configs/config_generator.py | 182 | # Check if parameter has a default value | COMMENT |
| LOW | scripts/cli/configs/config_generator.py | 259 | # Check if this service has manual_config flag in metadata | COMMENT |
| LOW | scripts/cli/configs/config_generator.py | 263 | # Check if this is a special case that needs manual handling | COMMENT |
| LOW | scripts/cli/configs/config_generator.py | 285 | # Check if this service uses the Settings pattern | COMMENT |
| LOW | scripts/cli/configs/config_generator.py | 359 | # Check if this service has a manual config | COMMENT |
| LOW | scripts/cli/configs/config_generator.py | 397 | # Check if multi-line | COMMENT |
| LOW | scripts/krisp/test_krisp_viva_filter_audiofile.py | 119 | # Check if sample rate is supported | COMMENT |
| LOW | scripts/krisp/test_krisp_viva_turn_audiofile.py | 92 | # Check if sample rate is supported | COMMENT |
| LOW | scripts/krisp/test_krisp_viva_turn_audiofile.py | 214 | # Print results | COMMENT |
| LOW | .github/workflows/generate-changelog.yml | 103 | # Check if type is valid | COMMENT |
| LOW | src/pipecat/pipeline/worker_observer.py | 102 | # Add the observer to the list. | COMMENT |
| LOW | src/pipecat/runner/run.py | 540 | # Check if it has a bot function | COMMENT |
| LOW | src/pipecat/transports/base_output.py | 542 | # Check if we have an audio mixer for our destination. | COMMENT |
| LOW | src/pipecat/utils/string.py | 228 | # Check if any start tag appears in the text | COMMENT |
| LOW | src/pipecat/utils/tracing/setup.py | 16 | # Check if OpenTelemetry is available | COMMENT |
| LOW | src/pipecat/utils/tracing/service_decorators.py | 1013 | # Check if tools is not None and not NOT_GIVEN | COMMENT |
| LOW | src/pipecat/utils/context/llm_context_summarization.py | 533 | # Check if the first message is a system message (initial system prompt). | COMMENT |
| LOW | src/pipecat/utils/text/pattern_pair_aggregator.py | 227 | # Check if this pattern was already processed | COMMENT |
| LOW | src/pipecat/utils/text/pattern_pair_aggregator.py | 328 | # Check if we have incomplete patterns | COMMENT |
| LOW | src/pipecat/cli/registry/service_loader.py | 169 | # Check if it's in SERVICE_CONFIGS | COMMENT |
| LOW | src/pipecat/cli/registry/service_loader.py | 173 | # Check if it's a transport | COMMENT |
| LOW | src/pipecat/cli/registry/service_loader.py | 296 | # Check if config exists | COMMENT |
| LOW | src/pipecat/cli/registry/service_loader.py | 300 | # Check if imports exist | COMMENT |
| LOW | src/pipecat/cli/generators/project.py | 64 | # Check if the new name is available | COMMENT |
| LOW | src/pipecat/cli/generators/project.py | 118 | # Check if project already exists | COMMENT |
| LOW | src/pipecat/cli/generators/project.py | 248 | # Check if any service config contains "session=" parameter | COMMENT |
| LOW | src/pipecat/cli/generators/project.py | 252 | # Check if the config contains session= or aiohttp_session= | COMMENT |
| LOW | src/pipecat/cli/generators/project.py | 299 | # Check if we need aiohttp session and add import if needed | COMMENT |
| LOW | src/pipecat/cli/generators/project.py | 538 | # Check if this is Daily PSTN or Twilio + Daily SIP (special handling) | COMMENT |
| LOW | src/pipecat/adapters/services/gemini_adapter.py | 416 | # Check if we only have function-related messages (no regular text) | COMMENT |
| LOW | …pecat/processors/aggregators/llm_response_universal.py | 2210 | # Check if this image is a result of a function call. | COMMENT |
| LOW | …pecat/processors/aggregators/llm_context_summarizer.py | 281 | # Check if we've reached the token limit | COMMENT |
| LOW | …pecat/processors/aggregators/llm_context_summarizer.py | 285 | # Check if we've exceeded max unsummarized messages | COMMENT |
| LOW | …pecat/processors/aggregators/llm_context_summarizer.py | 414 | # Check if this is the result we're waiting for. Both auto and manual | COMMENT |
| LOW | …pecat/processors/aggregators/llm_context_summarizer.py | 449 | # Check if we still have enough messages | COMMENT |
| LOW | src/pipecat/serializers/vonage.py | 128 | # Check if this is binary audio data | COMMENT |
| LOW | src/pipecat/audio/filters/rnnoise_filter.py | 134 | # Check if output is float (needs scaling) or int16 (ready) | COMMENT |
| LOW | src/pipecat/audio/turn/krisp_viva_turn.py | 319 | # Check if turn is complete based on probability threshold | COMMENT |
| LOW | src/pipecat/audio/turn/smart_turn/http_smart_turn.py | 75 | # Check if successful | COMMENT |
| LOW | src/pipecat/transcriptions/language.py | 660 | # Check if language is in the verified map | COMMENT |
| LOW | src/pipecat/observers/loggers/metrics_log_observer.py | 108 | # Check if this metrics type should be logged | COMMENT |
| LOW | src/pipecat/observers/loggers/debug_log_observer.py | 151 | # Check if this frame type is in our filters | COMMENT |
| LOW | src/pipecat/observers/loggers/debug_log_observer.py | 182 | # Check if we should log this frame | COMMENT |
| LOW⚡ | src/pipecat/flows/manager.py | 550 | # Check if all function calls are complete using Pipecat's state | COMMENT |
| LOW | src/pipecat/services/websocket_service.py | 300 | # Check if the connection died too quickly after being established. This | COMMENT |
| LOW | src/pipecat/services/asyncai/tts.py | 380 | # Check if this message belongs to the current context. | COMMENT |
| LOW | src/pipecat/services/speechmatics/tts.py | 219 | # Increment attempt | COMMENT |
| LOW | src/pipecat/services/speechmatics/tts.py | 222 | # Check if we've exceeded the maximum number of attempts | COMMENT |
| LOW | src/pipecat/services/azure/tts.py | 518 | # Check if language starts with CJK language codes | COMMENT |
| LOW | src/pipecat/services/google/tts.py | 837 | # Check if the voice is a Chirp voice (including Chirp 3) or Journey voice | COMMENT |
| LOW | src/pipecat/services/google/vertex/llm.py | 117 | # Check if user incorrectly passed api_key, which is used by parent | COMMENT |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 220 | # CLI project-scaffolding templates (jinja + client TS/JS/JSON/CSS trees). The | COMMENT |
| MEDIUM | README.md | 50 | The [Pipecat CLI](https://docs.pipecat.ai/api-reference/cli/overview) ships with `pipecat-ai` — install it with `uv tool | CODE |
| MEDIUM | README.md | 62 | Use [Pipecat Skills](https://github.com/pipecat-ai/skills) with [Claude Code](https://claude.ai/code) to scaffold projec | CODE |
| MEDIUM | tests/test_llm_service.py | 142 | # The tool was not advertised, so this is treated as a hallucination | COMMENT |
| MEDIUM⚡ | tests/cli/test_quickstart.py | 49 | # quickstart is a fixed preset; combining it with scaffold flags should warn rather | COMMENT |
| MEDIUM⚡ | tests/cli/test_quickstart.py | 50 | # than silently ignore them — but still scaffold the canned (web) bot. | COMMENT |
| MEDIUM | tests/cli/test_init_interactive.py | 53 | # The build-method prompt returns "scaffold", so init runs the wizard in-place, | COMMENT |
| MEDIUM | tests/cli/test_init_interactive.py | 70 | # init initializes for agent-led dev before scaffolding. | COMMENT |
| MEDIUM | tests/cli/test_project_generation.py | 684 | # Mirror the scaffold_quickstart config from cli/scaffold.py. | COMMENT |
| MEDIUM⚡ | tests/cli/test_init_agent_ready.py | 230 | # Its one still-useful piece (Context Hub setup) lives in the scaffold's README. | COMMENT |
| MEDIUM⚡ | tests/cli/test_init_agent_ready.py | 274 | # The scaffold lands in init's target dir, in-place, named after it. | COMMENT |
| MEDIUM⚡ | tests/cli/test_init_agent_ready.py | 277 | # skipped — its place is taken by the scaffold's README (see test_quickstart_*). | COMMENT |
| MEDIUM | tests/cli/test_init_agent_ready.py | 171 | # The scaffold path skips the from-scratch developer guide. | COMMENT |
| MEDIUM | tests/cli/test_init_agent_ready.py | 298 | # Re-running init to refresh the guide in a scaffolded project must not offer to scaffold. | COMMENT |
| MEDIUM⚡ | tests/cli/test_init_in_place.py | 51 | # The scaffold path skips GETTING_STARTED.md — the README is the start-here. | COMMENT |
| MEDIUM | examples/features/features-add-tool-change-messages.py | 122 | # hallucination-prone of the easily accessible models — exactly | COMMENT |
| MEDIUM | src/pipecat/cli/main.py | 87 | # coding-agent guide and can scaffold a runnable bot (interactively or from flags/a | COMMENT |
| MEDIUM | src/pipecat/cli/commands/init.py | 70 | # `--help` panels grouping the scaffold flags, so `pipecat init --help` reads as | COMMENT |
| MEDIUM | src/pipecat/cli/commands/init.py | 505 | # Scaffold now: run the wizard in-place. The scaffold lands in the same directory that | COMMENT |
| MEDIUM | src/pipecat/cli/commands/init.py | 554 | # Scaffold options that, when present, switch `init` to non-interactive scaffolding. | COMMENT |
| MEDIUM | src/pipecat/cli/commands/init.py | 565 | # Every scaffold/feature option, by parameter name — used to detect flags the user | COMMENT |
| MEDIUM⚡ | src/pipecat/cli/commands/init.py | 757 | pipecat init my-bot --config project-config.json # scaffold from a config file | CODE |
| MEDIUM⚡ | src/pipecat/cli/commands/init.py | 761 | # `pipecat init quickstart`: scaffold the canned bot in-place, with the coding-agent guide. | STRING |
| MEDIUM⚡ | src/pipecat/cli/commands/init.py | 763 | # quickstart is a fixed preset — scaffold flags don't apply. Say so instead of | STRING |
| MEDIUM | src/pipecat/cli/commands/init.py | 815 | # No scaffold options: write the guide and route to a build method. | STRING |
| MEDIUM | src/pipecat/cli/agent_templates/AGENTS.md | 19 | ## 1. Start by scaffolding | COMMENT |
| MEDIUM | src/pipecat/cli/agent_templates/AGENTS.md | 31 | # Headless: any scaffold flag (--bot-type, a service, or --config) switches off the wizard. | COMMENT |
| MEDIUM | src/pipecat/cli/agent_templates/AGENTS.md | 292 | [Pipecat Cloud](https://www.daily.co/products/pipecat-cloud/) is a **hosted** option — deploying there is optional (run | CODE |
| MEDIUM | src/pipecat/services/google/gemini_live/llm.py | 1453 | # Add context window compression to configuration, if enabled. | COMMENT |
| MEDIUM | src/pipecat/services/google/gemini_live/llm.py | 319 | trigger_tokens: int | None = Field(default=None) # None = use default (80% of context window) | CODE |
| MEDIUM | src/pipecat/services/whisper/stt.py | 609 | # Drop likely hallucinations | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/pipecat/pipeline/worker.py | 276 | CODE | |
| LOW | src/pipecat/evals/suite.py | 525 | CODE | |
| LOW | src/pipecat/evals/session.py | 173 | CODE | |
| LOW | src/pipecat/evals/session.py | 194 | CODE | |
| LOW | src/pipecat/evals/session.py | 215 | CODE | |
| LOW | src/pipecat/evals/session.py | 236 | CODE | |
| LOW | src/pipecat/evals/script_session.py | 131 | CODE | |
| LOW | src/pipecat/runner/daily.py | 77 | CODE | |
| LOW | src/pipecat/transports/lemonslice/api.py | 41 | CODE | |
| LOW | src/pipecat/tests/utils.py | 123 | CODE | |
| LOW | src/pipecat/bus/network/pgmq.py | 80 | CODE | |
| LOW | src/pipecat/utils/string.py | 348 | CODE | |
| LOW | src/pipecat/utils/tracing/service_attributes.py | 122 | CODE | |
| LOW | src/pipecat/utils/tracing/service_attributes.py | 186 | CODE | |
| LOW | src/pipecat/utils/tracing/service_attributes.py | 279 | CODE | |
| LOW | src/pipecat/utils/tracing/service_attributes.py | 384 | CODE | |
| LOW | src/pipecat/utils/text/transforms/voice_formatter.py | 32 | CODE | |
| LOW | src/pipecat/cli/config_validator.py | 38 | CODE | |
| LOW | src/pipecat/cli/commands/eval.py | 385 | CODE | |
| LOW | src/pipecat/cli/commands/eval.py | 1142 | CODE | |
| LOW | src/pipecat/cli/commands/init.py | 587 | CODE | |
| LOW | src/pipecat/audio/resamplers/resampy_resampler.py | 64 | CODE | |
| LOW | src/pipecat/audio/resamplers/soxr_stream_resampler.py | 119 | CODE | |
| LOW | src/pipecat/audio/resamplers/soxr_resampler.py | 59 | CODE | |
| LOW | src/pipecat/audio/vad/aic_quail_vad.py | 75 | CODE | |
| LOW | src/pipecat/workers/runner.py | 109 | CODE | |
| LOW | src/pipecat/services/tts_service.py | 159 | CODE | |
| LOW | src/pipecat/services/cartesia/tts.py | 268 | CODE | |
| LOW | src/pipecat/services/cartesia/tts.py | 829 | CODE | |
| LOW | src/pipecat/services/inworld/tts.py | 174 | CODE | |
| LOW | src/pipecat/services/inworld/tts.py | 633 | CODE | |
| LOW | src/pipecat/services/inworld/realtime/llm.py | 258 | CODE | |
| LOW | src/pipecat/services/asyncai/tts.py | 106 | CODE | |
| LOW | src/pipecat/services/asyncai/tts.py | 508 | CODE | |
| LOW | src/pipecat/services/openclaw/gateway.py | 67 | CODE | |
| LOW | src/pipecat/services/openclaw/client.py | 227 | CODE | |
| LOW | src/pipecat/services/speechmatics/stt.py | 394 | CODE | |
| LOW | src/pipecat/services/azure/tts.py | 299 | CODE | |
| LOW | src/pipecat/services/rime/tts.py | 175 | CODE | |
| LOW | src/pipecat/services/rime/tts.py | 915 | CODE | |
| LOW | src/pipecat/services/gladia/stt.py | 215 | CODE | |
| LOW | src/pipecat/services/google/tts.py | 1074 | CODE | |
| LOW | src/pipecat/services/google/tts.py | 1314 | CODE | |
| LOW | src/pipecat/services/google/llm.py | 211 | CODE | |
| LOW | src/pipecat/services/google/stt.py | 888 | CODE | |
| LOW | src/pipecat/services/google/vertex/llm.py | 66 | CODE | |
| LOW | src/pipecat/services/google/gemini_live/llm.py | 620 | CODE | |
| LOW | src/pipecat/services/google/gemini_live/vertex/llm.py | 60 | CODE | |
| LOW | src/pipecat/services/soniox/stt.py | 281 | CODE | |
| LOW | src/pipecat/services/fal/stt.py | 188 | CODE | |
| LOW | src/pipecat/services/deepgram/stt.py | 69 | CODE | |
| LOW | src/pipecat/services/deepgram/stt.py | 302 | CODE | |
| LOW | src/pipecat/services/deepgram/flux/stt.py | 109 | CODE | |
| LOW | src/pipecat/services/deepgram/flux/sagemaker/stt.py | 99 | CODE | |
| LOW | src/pipecat/services/deepgram/sagemaker/stt.py | 98 | CODE | |
| LOW | src/pipecat/services/groq/stt.py | 40 | CODE | |
| LOW | src/pipecat/services/elevenlabs/tts.py | 280 | CODE | |
| LOW | src/pipecat/services/elevenlabs/tts.py | 739 | CODE | |
| LOW | src/pipecat/services/elevenlabs/stt.py | 514 | CODE | |
| LOW | src/pipecat/services/neuphonic/tts.py | 112 | CODE | |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_ui_worker.py | 81 | async def _settle() -> None: | CODE |
| LOW | tests/test_vonage_video_connector.py | 356 | def _setup_audio_ready_callback(self, client: VonageClient, call_ready_for_audio: bool) -> None: | CODE |
| LOW | tests/test_vonage_video_connector.py | 378 | def _setup_subscriber_callbacks(self, client: VonageClient) -> None: | CODE |
| LOW | tests/test_vonage_video_connector.py | 440 | async def set_event_when_drained() -> None: | CODE |
| LOW | tests/test_xai_stt.py | 23 | def _setup_service(service: XAISTTService, monkeypatch, sample_rate: int) -> None: | CODE |
| LOW | tests/test_gemini_live_interaction_status.py | 99 | async def _setup_service(service: GeminiLiveLLMService) -> None: | CODE |
| LOW | tests/test_assemblyai_stt.py | 32 | def _setup_service(service: AssemblyAISTTService, monkeypatch, sample_rate: int) -> None: | CODE |
| LOW | tests/aic_mocks.py | 51 | def set_parameter(self, param: Any, value: float) -> None: | CODE |
| LOW | tests/aic_mocks.py | 74 | def set_parameter(self, param: Any, value: float) -> None: | CODE |
| LOW | examples/multi-worker/sensor-controller/sensor.py | 98 | def set_target(self, value: float) -> None: | CODE |
| LOW | examples/multi-worker/sensor-controller/sensor.py | 102 | def set_response_rate(self, rate: float) -> None: | CODE |
| LOW | src/pipecat/pipeline/task.py | 23 | __all__ = [ | CODE |
| LOW | src/pipecat/pipeline/runner.py | 20 | __all__ = ["PipelineRunner", "WorkerRunner"] | CODE |
| LOW | src/pipecat/evals/events.py | 199 | def _update_bot_transcribed(self) -> None: | CODE |
| LOW | src/pipecat/evals/scenario.py | 142 | __all__ = [ | CODE |
| LOW | src/pipecat/evals/judge.py | 745 | async def _setup(self) -> None: | CODE |
| LOW⚡ | src/pipecat/evals/serializer.py | 113 | def set_capture_audio(self, capture: bool) -> None: | CODE |
| LOW⚡ | src/pipecat/evals/serializer.py | 117 | def set_capture_images(self, capture: bool) -> None: | CODE |
| LOW | src/pipecat/evals/audio.py | 18 | __all__ = ["load_user_audio"] | CODE |
| LOW | src/pipecat/transports/smallwebrtc/connection.py | 168 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | src/pipecat/bus/__init__.py | 58 | __all__ = [ | CODE |
| LOW | src/pipecat/bus/ui/__init__.py | 21 | __all__ = [ | CODE |
| LOW | src/pipecat/bus/network/pgmq_backends.py | 342 | __all__ = [ | CODE |
| LOW | src/pipecat/bus/network/__init__.py | 20 | __all__ = ["PgmqBus", "RedisBus"] | CODE |
| LOW | src/pipecat/bus/local/__init__.py | 11 | __all__ = ["AsyncQueueBus"] | CODE |
| LOW | src/pipecat/bus/adapters/__init__.py | 17 | __all__ = [ | CODE |
| LOW | src/pipecat/bus/serializers/__init__.py | 16 | __all__ = [ | CODE |
| LOW | src/pipecat/utils/deprecation.py | 73 | __all__ = [ | CODE |
| LOW | src/pipecat/utils/http.py | 18 | __all__ = ["AsyncHTTPClient", "TIMEOUT_EXCEPTIONS", "connection_limits"] | CODE |
| LOW | src/pipecat/utils/errors.py | 17 | __all__ = [ | CODE |
| LOW | src/pipecat/utils/context/aggregated_frame_sequencer.py | 84 | def set_language(self, language: str | None) -> None: | CODE |
| LOW | src/pipecat/utils/text/base_text_aggregator.py | 106 | def set_language(self, language: str | None) -> None: | CODE |
| LOW | src/pipecat/utils/text/transforms/__init__.py | 38 | __all__ = [ | CODE |
| LOW | src/pipecat/cli/registry/__init__.py | 19 | __all__ = [ | CODE |
| LOW | src/pipecat/cli/prompts/__init__.py | 11 | __all__ = ["ProjectConfig", "ask_project_questions"] | CODE |
| LOW | src/pipecat/cli/commands/__init__.py | 11 | __all__ = ["init"] | CODE |
| LOW | src/pipecat/cli/commands/init.py | 418 | def _setup_context_hub() -> None: | CODE |
| LOW | src/pipecat/cli/generators/__init__.py | 11 | __all__ = ["ProjectGenerator"] | CODE |
| LOW | src/pipecat/extensions/ivr/ivr_navigator.py | 101 | def update_saved_messages(self, messages: list[LLMContextMessage]) -> None: | CODE |
| LOW | src/pipecat/processors/frameworks/rtvi/__init__.py | 27 | __all__ = [ | CODE |
| LOW | src/pipecat/serializers/genesys.py | 243 | def set_output_variables(self, variables: dict[str, Any]) -> None: | CODE |
| LOW | src/pipecat/audio/vad/aic_quail_vad.py | 247 | def set_sample_rate(self, sample_rate: int) -> None: | CODE |
| LOW | src/pipecat/registry/__init__.py | 11 | __all__ = [ | CODE |
| LOW | src/pipecat/workers/runner.py | 373 | async def _setup_session(self) -> None: | CODE |
| LOW | src/pipecat/workers/runner.py | 538 | def _setup_sigint(self) -> None: | CODE |
| LOW | src/pipecat/workers/runner.py | 547 | def _setup_sigterm(self) -> None: | CODE |
| LOW | src/pipecat/workers/ui/__init__.py | 35 | __all__ = [ | CODE |
| LOW | src/pipecat/workers/llm/__init__.py | 14 | __all__ = [ | CODE |
| LOW | src/pipecat/workers/proxy/__init__.py | 14 | __all__ = [ | CODE |
| LOW | src/pipecat/workers/proxy/websocket/__init__.py | 12 | __all__ = [ | CODE |
| LOW | src/pipecat/turns/user_start/__init__.py | 19 | __all__ = [ | CODE |
| LOW | src/pipecat/turns/user_stop/__init__.py | 17 | __all__ = [ | CODE |
| LOW | src/pipecat/turns/user_mute/__init__.py | 15 | __all__ = [ | CODE |
| LOW | src/pipecat/flows/__init__.py | 53 | __all__ = [ | CODE |
| LOW | src/pipecat/flows/manager.py | 608 | async def set_node_from_config(self, node_config: NodeConfig) -> None: | CODE |
| LOW | src/pipecat/flows/manager.py | 673 | async def _set_node(self, node_id: str, node_config: NodeConfig) -> None: | STRING |
| LOW | src/pipecat/services/deepgram/flux/tts.py | 29 | __all__ = [ | CODE |
| LOW | src/pipecat/services/deepgram/flux/stt.py | 31 | __all__ = [ | CODE |
| LOW | src/pipecat/services/elevenlabs/tts.py | 63 | __all__ = [ | CODE |
| LOW | src/pipecat/services/hume/tts.py | 266 | async def update_setting(self, key: str, value: Any) -> None: | CODE |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | COMMUNITY_INTEGRATIONS.md | 17 | ### Step 1: Build Your Integration | COMMENT |
| LOW | COMMUNITY_INTEGRATIONS.md | 21 | ### Step 2: Set Up Your Repository | COMMENT |
| LOW | COMMUNITY_INTEGRATIONS.md | 39 | ### Step 3: Join Discord | COMMENT |
| LOW | COMMUNITY_INTEGRATIONS.md | 43 | ### Step 4: Submit Your Documentation | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 33 | ### Step 1: Resolve docs path and profile | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 45 | ### Step 2: Create docs branch | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 63 | ### Step 3: Detect changed source files | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 90 | ### Step 4: Map source files to doc pages | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 109 | ### Step 5: Analyze each source-doc pair | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 128 | ### Step 6: Make targeted edits | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 214 | ### Step 7: Update guides | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 234 | ### Step 8: Identify doc gaps | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 266 | ### Step 9: Format and regenerate llms.txt | COMMENT |
| LOW | .claude/skills/update-docs/SKILL.md | 290 | ### Step 10: Output summary | COMMENT |
| LOW⚡ | .claude/skills/provider-research-digest/SKILL.md | 20 | ### Step 1: Sync the reports checkout | COMMENT |
| LOW⚡ | .claude/skills/provider-research-digest/SKILL.md | 24 | ### Step 2: Render a draft | COMMENT |
| LOW⚡ | .claude/skills/provider-research-digest/SKILL.md | 32 | ### Step 3: Author the highlights | COMMENT |
| LOW⚡ | .claude/skills/provider-research-digest/SKILL.md | 36 | ### Step 4: Render the final digest and hand off | COMMENT |
| LOW | .claude/skills/provider-research/SKILL.md | 28 | ### Step 1: Resolve paths and prerequisites | COMMENT |
| LOW | .claude/skills/provider-research/SKILL.md | 44 | ### Step 2: Build the unit list | COMMENT |
| LOW | .claude/skills/provider-research/SKILL.md | 52 | ### Step 3: Research in batches | COMMENT |
| LOW | .claude/skills/provider-research/SKILL.md | 81 | ### Step 4: Clean up and summarize | COMMENT |
| LOW | src/pipecat/adapters/services/perplexity_adapter.py | 129 | # Step 1: Convert non-initial system messages to "user". | COMMENT |
| LOW | src/pipecat/adapters/services/perplexity_adapter.py | 140 | # Step 2: Merge consecutive same-role messages. | COMMENT |
| LOW | src/pipecat/adapters/services/perplexity_adapter.py | 166 | # Step 3: Remove trailing assistant messages. | COMMENT |
| LOW⚡ | src/pipecat/adapters/services/mistral_adapter.py | 109 | # Step 1: ensure every "tool" message is followed by an "assistant". | COMMENT |
| LOW⚡ | src/pipecat/adapters/services/mistral_adapter.py | 119 | # Step 2: convert non-initial system messages to "user". | COMMENT |
| LOW⚡ | src/pipecat/adapters/services/mistral_adapter.py | 129 | # Step 3: set prefix on a trailing assistant message so Mistral will | COMMENT |
| LOW⚡ | src/pipecat/services/google/gemini_live/file_api.py | 74 | # Step 1: Initial resumable request to get upload URL | COMMENT |
| LOW | src/pipecat/services/google/gemini_live/file_api.py | 100 | # Step 2: Upload the actual file data | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/pipecat/services/together/tts.py | 94 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/together/stt.py | 57 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/deepgram/flux/stt.py | 173 | stt = DeepgramFluxSTTService(api_key="your-api-key") | STRING |
| HIGH | src/pipecat/services/deepgram/flux/stt.py | 178 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/deepgram/flux/stt.py | 191 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/camb/tts.py | 171 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/camb/tts.py | 179 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/smallest/tts.py | 133 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/smallest/stt.py | 144 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/sarvam/tts.py | 347 | api_key="your-api-key", | STRING |
| HIGH | src/pipecat/services/sarvam/tts.py | 721 | api_key="your-api-key", | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_azure_voice_live_events.py | 23 | """The service sends an empty string, not null, for the first item.""" | STRING |
| HIGH⚡ | tests/test_runner_run.py | 1174 | _parse_ice_servers('{"urls": "stun:stun.example.com:3478", "username": null}'), | CODE |
| HIGH | src/pipecat/services/azure/voice_live/llm.py | 1140 | # `.get` returns None when the key is present and null, so the default | COMMENT |
| HIGH⚡ | src/pipecat/services/openai/realtime/llm.py | 1234 | - return true | STRING |
| HIGH⚡ | src/pipecat/services/openai/realtime/llm.py | 1236 | - return false | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_flows_direct_functions.py | 27 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 249 | async def my_function(flow_manager: DummyFlowManager, name: str, age: int): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 270 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 280 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 290 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 320 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 330 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 366 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW⚡ | tests/test_flows_direct_functions.py | 381 | async def my_function(flow_manager: FlowManager): | CODE |
| LOW | tests/test_flows_direct_functions.py | 190 | async def my_function(flow_manager: FlowManager, name: str, age: int, height: float | None): | CODE |
| LOW⚡ | tests/test_direct_functions.py | 17 | async def my_function(params: FunctionCallParams): | CODE |
| LOW | tests/test_direct_functions.py | 156 | async def my_function( | CODE |
| LOW⚡ | tests/test_direct_functions.py | 212 | async def my_function(params: DummyParams, name: str, age: int): | CODE |
| LOW | …js/src/app/api/sessions/[sessionId]/[...path]/route.ts | 3 | async function handleRequest( | CODE |
| LOW | src/pipecat/workers/llm/llm_worker.py | 77 | async def my_function(self, params, arg: str): | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/pipecat/adapters/services/perplexity_adapter.py | 129 | # Step 1: Convert non-initial system messages to "user". | COMMENT |
| LOW | src/pipecat/adapters/services/perplexity_adapter.py | 140 | # Step 2: Merge consecutive same-role messages. | COMMENT |
| LOW | src/pipecat/adapters/services/perplexity_adapter.py | 166 | # Step 3: Remove trailing assistant messages. | COMMENT |
| LOW⚡ | src/pipecat/adapters/services/mistral_adapter.py | 109 | # Step 1: ensure every "tool" message is followed by an "assistant". | COMMENT |
| LOW⚡ | src/pipecat/adapters/services/mistral_adapter.py | 119 | # Step 2: convert non-initial system messages to "user". | COMMENT |
| LOW⚡ | src/pipecat/adapters/services/mistral_adapter.py | 129 | # Step 3: set prefix on a trailing assistant message so Mistral will | COMMENT |
| LOW⚡ | src/pipecat/services/google/gemini_live/file_api.py | 74 | # Step 1: Initial resumable request to get upload URL | COMMENT |
| LOW | src/pipecat/services/google/gemini_live/file_api.py | 100 | # Step 2: Upload the actual file data | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_stt_service.py | 43 | CODE | |
| MEDIUM | tests/test_anthropic_thinking_defaults.py | 134 | CODE | |
| MEDIUM | src/pipecat/services/stt_service.py | 348 | CODE | |
| MEDIUM | src/pipecat/services/vision_service.py | 63 | CODE | |
| MEDIUM | src/pipecat/services/tts_service.py | 591 | CODE | |
| MEDIUM | src/pipecat/services/image_service.py | 61 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_voice_formatting.py | 299 | result = await email_to_speech("user@example.com", "*") | CODE |
| LOW⚡ | tests/test_voice_formatting.py | 304 | result = await email_to_speech("user@example.com", "*") | CODE |
| LOW | tests/test_deepgram_stt.py | 381 | service = DeepgramSTTService(api_key="fake-key-offline-test") | CODE |
| LOW | tests/test_get_llm_invocation_params.py | 1474 | "source": {"type": "base64", "media_type": "image/jpeg", "data": "fake_data"}, | CODE |
| LOW | tests/genesys/conftest.py | 129 | "name": "John Doe", | CODE |
| LOW⚡ | tests/genesys/test_genesys_serializer.py | 304 | assert serializer.participant["name"] == "John Doe" | CODE |
| LOW | examples/features/features-text-transforms.py | 24 | - email_to_speech "user@example.com" → "user at example dot com" | STRING |
| LOW | …ipecat/cli/templates/client/vanilla-js-vite/src/app.js | 58 | 'placeholder', | CODE |
| LOW | …ipecat/cli/templates/client/vanilla-js-vite/src/app.js | 197 | if (role === 'placeholder') { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/realtime/realtime-openai-video.py | 110 | # In this example we provide tools through the context, but you could | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/realtime/realtime-gemini-live.py | 146 | # frames, but you can add supplemental local turn frames for consumption | STRING |
| MEDIUM | examples/realtime/realtime-ultravox.py | 189 | # frames, but you can add supplemental local turn frames for consumption | STRING |
| MEDIUM | examples/realtime/realtime-aws-nova-sonic.py | 125 | # frames, but you can add supplemental local turn frames for consumption | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/pipecat/services/google/gemini_live/llm.py | 1119 | # TODO: implement runtime tool updates for Gemini Live. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/pipecat/services/piper/tts.py | 198 | # Usage: | COMMENT |