Skip to content

Commit 37ed1dd

Browse files
stats changes
1 parent 43dbee0 commit 37ed1dd

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

lib/commands/stats.ts

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ export interface StatsCommandContext {
2121

2222
function formatStatsMessage(
2323
sessionTokens: number,
24+
sessionSummaryTokens: number,
2425
sessionTools: number,
2526
sessionMessages: number,
26-
sessionSummaryTokens: number,
2727
sessionDurationMs: number,
2828
allTime: AggregatedStats,
2929
): string {
@@ -33,13 +33,15 @@ function formatStatsMessage(
3333
lines.push("│ DCP Statistics │")
3434
lines.push("╰───────────────────────────────────────────────────────────╯")
3535
lines.push("")
36-
lines.push("Session:")
36+
lines.push("Compression:")
3737
lines.push("─".repeat(60))
38-
lines.push(` Tokens pruned: ~${formatTokenCount(sessionTokens)}`)
39-
lines.push(` Tools pruned: ${sessionTools}`)
40-
lines.push(` Messages pruned: ${sessionMessages}`)
41-
lines.push(` Summary tokens: ~${formatTokenCount(sessionSummaryTokens)}`)
42-
lines.push(` Compression time: ${formatCompressionTime(sessionDurationMs)}`)
38+
lines.push(
39+
` Tokens in|out: ~${formatTokenCount(sessionTokens)} | ~${formatTokenCount(sessionSummaryTokens)}`,
40+
)
41+
lines.push(` Ratio: ${formatCompressionRatio(sessionTokens, sessionSummaryTokens)}`)
42+
lines.push(` Time: ${formatCompressionTime(sessionDurationMs)}`)
43+
lines.push(` Messages: ${sessionMessages}`)
44+
lines.push(` Tools: ${sessionTools}`)
4345
lines.push("")
4446
lines.push("All-time:")
4547
lines.push("─".repeat(60))
@@ -51,6 +53,19 @@ function formatStatsMessage(
5153
return lines.join("\n")
5254
}
5355

56+
function formatCompressionRatio(inputTokens: number, outputTokens: number): string {
57+
if (inputTokens <= 0) {
58+
return "0:1"
59+
}
60+
61+
if (outputTokens <= 0) {
62+
return "∞:1"
63+
}
64+
65+
const ratio = Math.max(1, Math.round(inputTokens / outputTokens))
66+
return `${ratio}:1`
67+
}
68+
5469
function formatCompressionTime(ms: number): string {
5570
const safeMs = Math.max(0, Math.round(ms))
5671
if (safeMs < 1000) {
@@ -110,9 +125,9 @@ export async function handleStatsCommand(ctx: StatsCommandContext): Promise<void
110125

111126
const message = formatStatsMessage(
112127
sessionTokens,
128+
sessionSummaryTokens,
113129
sessionTools,
114130
sessionMessages,
115-
sessionSummaryTokens,
116131
sessionDurationMs,
117132
allTime,
118133
)
@@ -122,9 +137,9 @@ export async function handleStatsCommand(ctx: StatsCommandContext): Promise<void
122137

123138
logger.info("Stats command executed", {
124139
sessionTokens,
140+
sessionSummaryTokens,
125141
sessionTools,
126142
sessionMessages,
127-
sessionSummaryTokens,
128143
sessionDurationMs,
129144
allTimeTokens: allTime.totalTokens,
130145
allTimeTools: allTime.totalTools,

0 commit comments

Comments
 (0)