summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/SessionSummaryDisplay.tsx
diff options
context:
space:
mode:
authorAbhi <[email protected]>2025-06-30 20:28:49 -0400
committerGitHub <[email protected]>2025-07-01 00:28:49 +0000
commitf91927569c6980a3884674f5f1ab581fcb00f2ce (patch)
tree5f551cb4d2c5411142c7c3db43d6a5f7e4458825 /packages/cli/src/ui/components/SessionSummaryDisplay.tsx
parent3587054d32372874a4e067ae050f861ad1cec2b4 (diff)
refactor(ui): revamp exit stats display (#2771)
Diffstat (limited to 'packages/cli/src/ui/components/SessionSummaryDisplay.tsx')
-rw-r--r--packages/cli/src/ui/components/SessionSummaryDisplay.tsx95
1 files changed, 4 insertions, 91 deletions
diff --git a/packages/cli/src/ui/components/SessionSummaryDisplay.tsx b/packages/cli/src/ui/components/SessionSummaryDisplay.tsx
index a009f3d8..34e3cc72 100644
--- a/packages/cli/src/ui/components/SessionSummaryDisplay.tsx
+++ b/packages/cli/src/ui/components/SessionSummaryDisplay.tsx
@@ -5,101 +5,14 @@
*/
import React from 'react';
-import { Box, Text } from 'ink';
-import Gradient from 'ink-gradient';
-import { Colors } from '../colors.js';
-import { formatDuration } from '../utils/formatters.js';
-import { useSessionStats } from '../contexts/SessionContext.js';
-import { computeSessionStats } from '../utils/computeStats.js';
-import { FormattedStats, StatRow, StatsColumn } from './Stats.js';
-
-// --- Prop and Data Structures ---
+import { StatsDisplay } from './StatsDisplay.js';
interface SessionSummaryDisplayProps {
duration: string;
}
-// --- Main Component ---
-
export const SessionSummaryDisplay: React.FC<SessionSummaryDisplayProps> = ({
duration,
-}) => {
- const { stats } = useSessionStats();
- const { metrics } = stats;
- const computed = computeSessionStats(metrics);
-
- const cumulativeFormatted: FormattedStats = {
- inputTokens: Object.values(metrics.models).reduce(
- (acc, model) => acc + model.tokens.prompt,
- 0,
- ),
- outputTokens: Object.values(metrics.models).reduce(
- (acc, model) => acc + model.tokens.candidates,
- 0,
- ),
- toolUseTokens: Object.values(metrics.models).reduce(
- (acc, model) => acc + model.tokens.tool,
- 0,
- ),
- thoughtsTokens: Object.values(metrics.models).reduce(
- (acc, model) => acc + model.tokens.thoughts,
- 0,
- ),
- cachedTokens: Object.values(metrics.models).reduce(
- (acc, model) => acc + model.tokens.cached,
- 0,
- ),
- totalTokens: Object.values(metrics.models).reduce(
- (acc, model) => acc + model.tokens.total,
- 0,
- ),
- };
-
- const totalRequests = Object.values(metrics.models).reduce(
- (acc, model) => acc + model.api.totalRequests,
- 0,
- );
-
- const title = 'Agent powering down. Goodbye!';
-
- return (
- <Box
- borderStyle="round"
- borderColor="gray"
- flexDirection="column"
- paddingY={1}
- paddingX={2}
- alignSelf="flex-start"
- >
- <Box marginBottom={1} flexDirection="column">
- {Colors.GradientColors ? (
- <Gradient colors={Colors.GradientColors}>
- <Text bold>{title}</Text>
- </Gradient>
- ) : (
- <Text bold>{title}</Text>
- )}
- </Box>
-
- <Box marginTop={1}>
- <StatsColumn
- title={`Cumulative Stats (${totalRequests} API calls)`}
- stats={cumulativeFormatted}
- isCumulative={true}
- >
- <Box marginTop={1} flexDirection="column">
- <StatRow
- label="Total duration (API)"
- value={formatDuration(computed.totalApiTime)}
- />
- <StatRow
- label="Total duration (Tools)"
- value={formatDuration(computed.totalToolTime)}
- />
- <StatRow label="Total duration (wall)" value={duration} />
- </Box>
- </StatsColumn>
- </Box>
- </Box>
- );
-};
+}) => (
+ <StatsDisplay title="Agent powering down. Goodbye!" duration={duration} />
+);