// 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()}
)}
);
}