mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-12 03:48:56 +00:00
|
Some checks failed
GitHub Actions Security Analysis / zizmor (push) Has been cancelled
Publish lint base counts / publish (basedpyright, scripts/type_check_gate.py) (push) Has been cancelled
Publish lint base counts / publish (ruff-strict, scripts/ruff_strict_gate.py) (push) Has been cancelled
CodSpeed Benchmarks / benchmarks (push) Has been cancelled
Publish lint base counts / publish (test-quality, scripts/test_quality_gate.py) (push) Has been cancelled
Publish lint base counts / publish (type-discipline, scripts/type_discipline_gate.py) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
Terraform Provider / gofmt, vet, build, test (push) Has been cancelled
Terraform Provider / Provider endpoints vs proxy OpenAPI schema (push) Has been cancelled
unit / rust-bridge (push) Has been cancelled
unit / assert-shard-coverage (push) Has been cancelled
unit / ui-unit (push) Has been cancelled
unit / docs (push) Has been cancelled
unit / helm (push) Has been cancelled
unit / OpenAI 2.20.0 compatibility (push) Has been cancelled
unit / OpenAI 3.0.0 compatibility (push) Has been cancelled
unit / OpenAI 3.25.0 compatibility (push) Has been cancelled
unit / proxy-infra-root (push) Has been cancelled
unit / router (push) Has been cancelled
unit / router-unit-tests (push) Has been cancelled
unit / budgets (push) Has been cancelled
unit / custom-logging (push) Has been cancelled
unit / proxy-infra (push) Has been cancelled
unit / responses-caching-types (push) Has been cancelled
unit / rust-bridge-harness (push) Has been cancelled
unit / auth-checks (push) Has been cancelled
unit / db-and-spend (push) Has been cancelled
unit / endpoints-and-responses (push) Has been cancelled
unit / enterprise-routing (push) Has been cancelled
unit / guardrails-hooks (push) Has been cancelled
unit / guardrails-tests (push) Has been cancelled
unit / jwt-and-keys (push) Has been cancelled
unit / key-generation (push) Has been cancelled
unit / logging-misc (push) Has been cancelled
unit / mcp-oauth (push) Has been cancelled
unit / proxy-runtime (push) Has been cancelled
unit / proxy-server-core (push) Has been cancelled
unit / root (push) Has been cancelled
unit / proxy-utils (push) Has been cancelled
unit / proxy-endpoints (push) Has been cancelled
unit / proxy-extras (push) Has been cancelled
unit / proxy-feature-endpoints (push) Has been cancelled
unit / proxy-hooks-client (push) Has been cancelled
unit / lens-python-310 (push) Has been cancelled
unit / endpoints (push) Has been cancelled
unit / enterprise-managed-files (push) Has been cancelled
unit / proxy-server (push) Has been cancelled
unit / caching-local (push) Has been cancelled
unit / core-utils (push) Has been cancelled
unit / enterprise-package (push) Has been cancelled
unit / enterprise-repositories-secrets (push) Has been cancelled
unit / integrations (push) Has been cancelled
unit / llms-anthropic (push) Has been cancelled
unit / llms-bedrock (push) Has been cancelled
unit / llms-openai-meta (push) Has been cancelled
unit / llms-providers (push) Has been cancelled
unit / llms-vertex-ai (push) Has been cancelled
unit / mcp-elicitation (push) Has been cancelled
unit / proxy-auth (push) Has been cancelled
unit / coverage (push) Has been cancelled
unit / unit passed (push) Has been cancelled
* fix(realtime): only inject response.create when a transcript guardrail suppressed VAD auto-response The proxy sent `response.create` to the backend after every `conversation.item.input_audio_transcription.completed`, whether or not a `realtime_input_transcription` guardrail had disabled the backend's server-VAD auto-response. Without such a guardrail the backend already created the turn's response, so the injected one was a duplicate and the backend answered every user turn with `conversation_already_has_active_response`. Gate the re-trigger on the same predicate as the suppress side (`_has_audio_transcription_guardrails`), via `_proxy_drives_turns()`, in both the raw-backend and the provider_config paths. Guardrails still run on every transcript; only the injection is gated. Transcription-only sessions keep skipping the injection as before. Flip the unit test that asserted the old behaviour and add a provider-path regression test. Fixes #31726 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * test(realtime): assert guardrail-gated response.create on the provider_config path Mirror of test_realtime_guardrail_allows_clean_transcript for backends that go through provider_config. With a realtime_input_transcription guardrail the proxy disabled the backend's auto-response, so a clean transcript must trigger exactly one response.create. Locks in the other half of the suppress/re-trigger pair introduced for #31726. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * test(realtime): type the passthrough provider_config helper's frame argument * test(realtime): expect no proxy response.create on an unguarded voice session in the integration suite * test(realtime): audit cells for client-owned turns without a transcript guardrail * test(realtime): wait for the killed worker to exit, not for its parent to reap it * test(realtime): pin each worker-kill session's outcome to the worker that accepted it * test(realtime): drive the provider_config path through a concrete passthrough realtime config --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: mateo-berri <277851410+mateo-berri@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| _assistants_route_errors_support.py | ||
| _cache_control_marks_support.py | ||
| _count_tokens_system_lift.py | ||
| _gemini_tts_voice_support.py | ||
| _mantle_gpt_prompt_cache_support.py | ||
| _responses_bridge_prompt_cache_breakpoint.py | ||
| test_anthropic_count_tokens_system_lift_wire.py | ||
| test_anthropic_system_cache_control_wire.py | ||
| test_anthropic_thinking_signature_logging_wire.py | ||
| test_anthropic_thinking_signature_stream_wire.py | ||
| test_assistants_route_errors_chaos.py | ||
| test_assistants_route_errors_wire.py | ||
| test_audit_any_sweep_harness_endpoint.py | ||
| test_audit_any_sweep_vector_store.py | ||
| test_azure_ai_chat_wire.py | ||
| test_azure_ai_flux2_image_wire.py | ||
| test_azure_ai_rerank_auth_wire.py | ||
| test_bedrock_anthropic_beta_header_wire.py | ||
| test_bedrock_auth_wire.py | ||
| test_bedrock_batch_blank_s3_env_wire.py | ||
| test_bedrock_batch_files_wire.py | ||
| test_bedrock_batch_retrieve_status_wire.py | ||
| test_bedrock_claude_thinking_wire.py | ||
| test_bedrock_converse_client_metadata_wire.py | ||
| test_bedrock_converse_config_blocks_wire.py | ||
| test_bedrock_converse_lookaround_regex_chaos.py | ||
| test_bedrock_converse_lookaround_regex_wire.py | ||
| test_bedrock_converse_missing_content_wire.py | ||
| test_bedrock_converse_stream_event_frames_wire.py | ||
| test_bedrock_deepseek_reasoning_wire.py | ||
| test_bedrock_embedding_wire.py | ||
| test_bedrock_gpt5_reasoning_wire.py | ||
| test_bedrock_gpt_responses_native_wire.py | ||
| test_bedrock_invoke_cache_usage_wire.py | ||
| test_bedrock_kimi_k3_cache_point_wire.py | ||
| test_bedrock_knowledge_base_user_context_wire.py | ||
| test_bedrock_mantle_claude_chat_chaos.py | ||
| test_bedrock_mantle_claude_chat_wire.py | ||
| test_bedrock_mantle_codex_input_wire.py | ||
| test_bedrock_mantle_count_tokens_wire.py | ||
| test_bedrock_mantle_gpt_prompt_cache_breakpoint_wire.py | ||
| test_bedrock_mantle_responses_wire.py | ||
| test_bedrock_mantle_wire.py | ||
| test_bedrock_marengo_embed_3_wire.py | ||
| test_bedrock_model_discovery_chaos.py | ||
| test_bedrock_model_discovery_wire.py | ||
| test_bedrock_passthrough_stream_wire.py | ||
| test_bedrock_rerank_wire.py | ||
| test_bedrock_role_configuration.py | ||
| test_bedrock_runtime_chat_completions_chaos.py | ||
| test_bedrock_runtime_chat_completions_sad_wire.py | ||
| test_bedrock_runtime_chat_completions_wire.py | ||
| test_bedrock_stream_timeout_chaos.py | ||
| test_bedrock_stream_timeout_wire.py | ||
| test_bedrock_thinking_tokens_wire.py | ||
| test_cache_control_tool_call_marks_owned_proxy.py | ||
| test_cache_control_tool_call_marks_wire.py | ||
| test_chatgpt_responses_caller_stream_chaos.py | ||
| test_chatgpt_responses_caller_stream_wire.py | ||
| test_container_file_routes_wire.py | ||
| test_dashscope_chat_wire.py | ||
| test_databricks_chat_wire.py | ||
| test_databricks_decisions_wire.py | ||
| test_databricks_oauth_wire.py | ||
| test_decisions_chaos.py | ||
| test_decisions_openai_format_wire.py | ||
| test_decisions_wire.py | ||
| test_deepseek_vision_wire.py | ||
| test_device_code_login_guard_boot.py | ||
| test_device_code_login_guard_wire.py | ||
| test_fal_ai_chat_wire.py | ||
| test_fal_ai_image_wire.py | ||
| test_fal_ai_passthrough_wire.py | ||
| test_fal_ai_video_wire.py | ||
| test_fireworks_ai_router_slug_wire.py | ||
| test_fireworks_ai_session_affinity_wire.py | ||
| test_gemini_chat_video_metadata_wire.py | ||
| test_gemini_embedding_file_block_chaos.py | ||
| test_gemini_embedding_file_block_wire.py | ||
| test_gemini_image_config_and_usage_wire.py | ||
| test_gemini_thinking_replay_chaos.py | ||
| test_gemini_thinking_replay_wire.py | ||
| test_gemini_tts_voice_mapping_owned_proxy.py | ||
| test_gemini_tts_voice_mapping_wire.py | ||
| test_hosted_vllm_reasoning_content_chaos.py | ||
| test_hosted_vllm_reasoning_content_wire.py | ||
| test_image_gen_drop_params_wire.py | ||
| test_interactions_openai_bridge_wire.py | ||
| test_internal_params_wire.py | ||
| test_nvidia_nim_ranking_wire.py | ||
| test_ocr_router_wire.py | ||
| test_ollama_prompt_tools_chaos.py | ||
| test_ollama_prompt_tools_wire.py | ||
| test_openai_chat_wire.py | ||
| test_openai_dialect_prompt_cache_breakpoint_owned_proxy.py | ||
| test_openai_image_edit_wire.py | ||
| test_openai_passthrough_files_wire.py | ||
| test_openai_realtime_transcription_url.py | ||
| test_openai_responses_websocket_wire.py | ||
| test_openai_stream_text_usage_wire.py | ||
| test_provider_lookup_status.py | ||
| test_realtime_transcription_guardrail_session_update.py | ||
| test_realtime_unguarded_voice_turns.py | ||
| test_request_boundary.py | ||
| test_rerank_latency_headers_wire.py | ||
| test_responses_bridge_incomplete.py | ||
| test_responses_bridge_input_audio_wire.py | ||
| test_responses_bridge_namespace_tools.py | ||
| test_responses_bridge_prompt_cache_breakpoint.py | ||
| test_responses_bridge_prompt_cache_breakpoint_chaos.py | ||
| test_responses_bridge_prompt_cache_breakpoint_wire.py | ||
| test_responses_bridge_prompt_cache_breakpoint_wire_chaos.py | ||
| test_responses_bridge_stream_output_items_wire.py | ||
| test_responses_client_header_forwarding_wire.py | ||
| test_responses_error_status_wire.py | ||
| test_responses_minted_reasoning_replay_chaos.py | ||
| test_responses_minted_reasoning_replay_wire.py | ||
| test_responses_reasoning_item_wire.py | ||
| test_responses_websocket_session_limit.py | ||
| test_s3_wire.py | ||
| test_sagemaker_chat_wire.py | ||
| test_tencent_chat_wire.py | ||
| test_validated_reply_boundaries_under_faults.py | ||
| test_vertex_anthropic_inline_tools_beta_wire.py | ||
| test_vertex_batch_output_info_wire.py | ||
| test_vertex_embedding_batch_file_block_wire.py | ||
| test_vertex_embedding_file_block_wire.py | ||
| test_vertex_gemini_fragmented_stream_wire.py | ||
| test_vertex_gemini_function_call_wire.py | ||
| test_vertex_partner_count_tokens_wire.py | ||
| test_vertex_realtime_multi_region_host.py | ||
| test_voyage_mongodb_host_wire.py | ||
| test_xai_server_tool_usage_wire.py | ||
| test_xai_web_search_wire.py | ||
| test_xiaomi_mimo_wire.py | ||