From d91fd084f7140f53cee67696fbd70edf84818a9a Mon Sep 17 00:00:00 2001 From: tin-berri Date: Tue, 28 Jul 2026 10:12:00 -0700 Subject: [PATCH 1/2] Fix cache leakage card layout to keep date picker on right (#34885) * Fix cache leakage card layout to keep date picker on right and prevent content overlap Removes flex-wrap and mt-3 to ensure date picker stays pinned to the right side of the card header regardless of zoom level, preventing it from covering card content below * Remove overflow-hidden from Card to allow dropdowns and overlays to display fully Fixes date picker dropdown being clipped when opened in cards like the Cache Leakage Card. By removing overflow-hidden from the Card container, popovers, dropdowns, and other overflow content can now display properly without being clipped by the card boundaries. * Make cache leakage card descriptions consistent with line clamping Adds line-clamp-2 to ensure both 'by model' and 'by virtual key' cards maintain consistent height. Removes conditional anthropic-specific text that caused height variations between dimensions. --- .../cost-optimization/_components/CacheLeakageCard.tsx | 4 +--- ui/litellm-dashboard/src/components/ui/card.tsx | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx b/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx index 4f1cfc49569..bb2cb865877 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx @@ -105,10 +105,9 @@ const CacheLeakageCard: React.FC = ({ activity }) => {
Cache leakage by {dimension === "model" ? "model" : "virtual key"} -

+

{subject} sending large volumes of uncached input with a low cache hit rate are likely missing prompt caching. Potential savings is approximate: uncached input priced at the realized cache-read discount. - {dimension === "model" ? " Limited to Anthropic (Claude) models, which support prompt caching." : ""}

@@ -118,7 +117,6 @@ const CacheLeakageCard: React.FC = ({ activity }) => { setDimension(value === "model" ? "model" : "key")} - className="mt-3" > By virtual key diff --git a/ui/litellm-dashboard/src/components/ui/card.tsx b/ui/litellm-dashboard/src/components/ui/card.tsx index 3fc0aa65264..1490c2ee908 100644 --- a/ui/litellm-dashboard/src/components/ui/card.tsx +++ b/ui/litellm-dashboard/src/components/ui/card.tsx @@ -9,7 +9,7 @@ const Card = React.forwardRefimg:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", + "group/card flex flex-col gap-(--card-spacing) rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground shadow-xs ring-1 ring-foreground/10 [--card-spacing:--spacing(6)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", className, )} {...props} From b930e2fc2b6502e0cbc37e5078710a0b1edeff6a Mon Sep 17 00:00:00 2001 From: ryan-crabbe-berri Date: Tue, 28 Jul 2026 10:22:49 -0700 Subject: [PATCH 2/2] fix(gateway): route /a2a through the gateway component (#34958) * fix(gateway): route /a2a through the gateway component A2A message-send runs the completion bridge, an outbound LLM call, but the ingress only listed /v1/a2a so the serving routes at /a2a/{agent_id} fell to the backend catch-all. Backend pods hold no provider credentials, so every invocation died with a missing-provider-key auth error while the same call succeeds on the gateway fleet. Adds /a2a to the ingress gateway prefixes and the gateway route allowlist, plus a parity test so an ingress prefix that the gateway trims can never reappear * revert(test): drop the allowlist parity tests --------- Co-authored-by: yuneng-jiang --- gateway/routes/allowlist.py | 1 + helm/litellm/templates/ingress.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gateway/routes/allowlist.py b/gateway/routes/allowlist.py index 792a56a2cd8..a80bbc9ca19 100644 --- a/gateway/routes/allowlist.py +++ b/gateway/routes/allowlist.py @@ -54,6 +54,7 @@ GATEWAY_PATH_PREFIXES: tuple[str, ...] = ( "/messages", "/v1/skills", "/v1/a2a/", + "/a2a/", # LiteLLM-native LLM surface "/v1/rerank", "/v2/rerank", diff --git a/helm/litellm/templates/ingress.yaml b/helm/litellm/templates/ingress.yaml index 30a8e7c974b..b7c78d3fdad 100644 --- a/helm/litellm/templates/ingress.yaml +++ b/helm/litellm/templates/ingress.yaml @@ -19,7 +19,7 @@ "/v1/fine-tuning" "/fine-tuning" "/v1/responses" "/responses" "/v1/threads" "/threads" "/v1/assistants" "/assistants" "/v1/vector_stores" "/vector_stores" "/v1/indexes" "/v1/models" "/models" "/openai" "/engines" - "/v1/messages" "/messages" "/v1/skills" "/v1/a2a" + "/v1/messages" "/messages" "/v1/skills" "/v1/a2a" "/a2a" "/v1/rerank" "/v2/rerank" "/rerank" "/v1/ocr" "/ocr" "/v1/rag" "/rag" "/v1/video" "/v1/videos" "/video" "/videos" "/v1/search" "/search" "/v1/containers" "/containers" "/v1/evals" "/v1/memory" "/queue/chat"