Entry 3 had metadata.status='failure' and no exception, but DID have
error_information.error_message='No api key passed in.' Now we surface
that actual error message instead of the generic 'status: failure'.
Priority: exception > error_message > generic status.
Entry 3 in our logs had metadata.status='failure' but no exception string,
so it was incorrectly shown as ✅ OK. Now checks both exception AND
metadata.status == 'failure'. Also updates failed count in summary.
New function litellm_history(limit=20, show_cost=True) hits /spend/logs,
sorts by startTime descending, and shows the most recent N requests with:
- Model name (stripped of provider prefix)
- Call type (chat/embed/image)
- Status (✅/❌ based on exception)
- Duration
- Token counts (prompt→completion, compact format)
- Cache hit percentage (💾 indicator)
- Per-request cost (optional)
Limit capped at 50. Bumps version to 1.1.0.
- Strip common provider prefixes (gemini/, openai/, anthropic/, mistral/, cohere/)
- Truncate names > 24 chars with ellipsis (…) instead of hardcoded abbreviations
- Works generically for any LiteLLM model, not just our Gemini config