// src/pages/agent-office/components/TokenTab.jsx import { useState, useEffect } from 'react'; import { getAgentTokenUsage } from '../../../api'; export default function TokenTab({ agentId }) { const [usage, setUsage] = useState(null); const [days, setDays] = useState(1); useEffect(() => { let cancelled = false; getAgentTokenUsage(agentId, days).then(data => { if (!cancelled) setUsage(data); }); return () => { cancelled = true; }; }, [agentId, days]); if (!usage) return
Loading...
; const inputTokens = usage.input_tokens || 0; const outputTokens = usage.output_tokens || 0; const cacheRead = usage.cache_read || 0; const cacheWrite = usage.cache_write || 0; const total = inputTokens + outputTokens; const cacheHitRate = inputTokens > 0 ? Math.round((cacheRead / inputTokens) * 100) : 0; return (
{[1, 7, 30].map(d => ( ))}
Input Tokens
{inputTokens.toLocaleString()}
Output Tokens
{outputTokens.toLocaleString()}
Total
{total.toLocaleString()}
Cache Hit Rate
{cacheHitRate}%
{/* Simple bar chart */}
Input vs Output
0 ? `${(inputTokens / total) * 100}%` : '0%' }} />
0 ? `${(outputTokens / total) * 100}%` : '0%' }} />
Input Output
{cacheRead > 0 && (
Cache Read: {cacheRead.toLocaleString()} Cache Write: {cacheWrite.toLocaleString()}
)}
); }