@@ -22,6 +22,7 @@ function formatStatsMessage(
2222 sessionTokens : number ,
2323 sessionTools : number ,
2424 sessionMessages : number ,
25+ sessionCompressionTimeMs : number ,
2526 allTime : AggregatedStats ,
2627) : string {
2728 const lines : string [ ] = [ ]
@@ -35,6 +36,7 @@ function formatStatsMessage(
3536 lines . push ( ` Tokens pruned: ~${ formatTokenCount ( sessionTokens ) } ` )
3637 lines . push ( ` Tools pruned: ${ sessionTools } ` )
3738 lines . push ( ` Messages pruned: ${ sessionMessages } ` )
39+ lines . push ( ` LLM summary time: ${ formatCompressionTime ( sessionCompressionTimeMs ) } ` )
3840 lines . push ( "" )
3941 lines . push ( "All-time:" )
4042 lines . push ( "─" . repeat ( 60 ) )
@@ -46,11 +48,21 @@ function formatStatsMessage(
4648 return lines . join ( "\n" )
4749}
4850
51+ function formatCompressionTime ( ms : number ) : string {
52+ if ( ms < 1000 ) {
53+ return `${ ms } ms`
54+ }
55+
56+ const seconds = ms / 1000
57+ return `${ seconds . toFixed ( seconds < 10 ? 2 : 1 ) } s`
58+ }
59+
4960export async function handleStatsCommand ( ctx : StatsCommandContext ) : Promise < void > {
5061 const { client, state, logger, sessionId, messages } = ctx
5162
5263 // Session stats from in-memory state
5364 const sessionTokens = state . stats . totalPruneTokens
65+ const sessionCompressionTimeMs = state . stats . compressionTimeMs
5466
5567 const prunedToolIds = new Set < string > ( state . prune . tools . keys ( ) )
5668 for ( const block of state . prune . messages . blocksById . values ( ) ) {
@@ -72,7 +84,13 @@ export async function handleStatsCommand(ctx: StatsCommandContext): Promise<void
7284 // All-time stats from storage files
7385 const allTime = await loadAllSessionStats ( logger )
7486
75- const message = formatStatsMessage ( sessionTokens , sessionTools , sessionMessages , allTime )
87+ const message = formatStatsMessage (
88+ sessionTokens ,
89+ sessionTools ,
90+ sessionMessages ,
91+ sessionCompressionTimeMs ,
92+ allTime ,
93+ )
7694
7795 const params = getCurrentParams ( state , messages , logger )
7896 await sendIgnoredMessage ( client , sessionId , message , params , logger )
@@ -81,6 +99,7 @@ export async function handleStatsCommand(ctx: StatsCommandContext): Promise<void
8199 sessionTokens,
82100 sessionTools,
83101 sessionMessages,
102+ sessionCompressionTimeMs,
84103 allTimeTokens : allTime . totalTokens ,
85104 allTimeTools : allTime . totalTools ,
86105 allTimeMessages : allTime . totalMessages ,
0 commit comments