@@ -21,9 +21,9 @@ export interface StatsCommandContext {
2121
2222function 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+
5469function 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