* fix(guardrails): scan text on /guardrails/apply_guardrail for Azure Content Safety
The two Azure Content Safety guardrails never implemented apply_guardrail, so the
endpoint fell through to the base no-op and answered 200 with the caller's text
echoed back, having scanned nothing.
Implementing that method also flips the proxy's unified-vs-native dispatch, which
would move request traffic off these guardrails' own hooks. Add an opt-out that
keeps every lifecycle event on the native hooks, so only the endpoint changes.
* test(guardrails): cover the remaining native-hook opt-out dispatch sites
Adds regression tests for the parallel post-call path, the MCP post-call hook, and
the policy engine step, so every read of the opt-out flag fails when removed.
* azure content enhancement...
* rafactored to increase confidence score
* improvements based on additional feedback
* removed unused import
* Force-split any word longer than max length allowed
* preserve whitespace in text splitting
* moving common initialization to base class
* consolidate enforcement into async_make_request as single point, remove redundant caller-side checks, extract shared init/HTTP logic into base, and fix stale log messages
* clean up
* clean up tests
* feat(azure/prompt_shield.py): initial commit adding prompt shield guardrail + auto discovery mechanism for guardrails
reduces amount of code needed outside of guardrail integration for instrumentation
* feat(azure/prompt_shield.py): working azure prompt shield guardrail integration
Addresses https://github.com/BerriAI/litellm/issues/12254
* test: unit tests for prompt_shield
* fix(prompt_shield.py): add event hook validation for prompt shield guardrail
ensures prompt shield guardrail raises error if asked to run post_call (only runs on user prompt)
* feat(azure/): working text_moderation integration
* fix(text_moderation.py): suppress linting error
* test(test_azure_text_moderation.py): add unit test
* test(test_azure_text_moderation.py): add unit test for responses
* fix(text_moderation.py): return streaming error correctly
ensures error returned to user
* fix: fix linting error
* fix: fix linting check
* test: change mistral model
service tier exceeded
* fix(exception_mapping_utils.py): cover mistral in exception mapping