11import type { Logger } from "../logger"
22import type { SessionState } from "../state"
33import {
4+ buildCompressionGraphData ,
5+ formatCompressionGraph ,
46 formatPrunedItemsList ,
57 formatStatsHeader ,
68 formatTokenCount ,
7- formatSessionMap ,
89} from "./utils"
9- import { ToolParameterEntry } from "../state"
10+ import { ToolParameterEntry , WithParts } from "../state"
1011import { PluginConfig } from "../config"
1112import { clog , C } from "../compress-logger"
1213
@@ -139,11 +140,7 @@ export async function sendCompressNotification(
139140 topic : string ,
140141 summary : string ,
141142 summaryTokens : number ,
142- totalSessionTokens : number ,
143- compressedTokens : number ,
144- sessionMessageIds : string [ ] ,
145- weights : Map < string , number > ,
146- totalMessages : number ,
143+ messages : WithParts [ ] ,
147144 params : any ,
148145) : Promise < boolean > {
149146 if ( config . pruneNotification === "off" ) {
@@ -158,26 +155,24 @@ export async function sendCompressNotification(
158155 } else {
159156 message = formatStatsHeader ( state . stats . totalPruneTokens , state . stats . pruneTokenCounter )
160157
161- const pruneTokenCounterStr = `~${ formatTokenCount ( compressedTokens ) } `
158+ const newIds = new Set ( messageIds )
159+ const newToolIds = new Set ( toolIds )
160+ const graphData = buildCompressionGraphData ( state , messages , newIds , newToolIds )
161+ const progressBar = formatCompressionGraph ( graphData , 50 )
162+ const pruneTokenCounterStr = `~${ formatTokenCount ( graphData . recentCompressedTokens ) } `
163+ const reduction =
164+ graphData . totalSessionTokens > 0
165+ ? Math . round (
166+ ( graphData . recentCompressedTokens / graphData . totalSessionTokens ) * 100 ,
167+ )
168+ : 0
162169
163- clog . info ( C . COMPRESS , `sendCompressNotification inputs` , {
164- totalSessionTokens,
165- compressedTokens,
170+ clog . info ( C . COMPRESS , `sendCompressNotification graph` , {
166171 summaryTokens,
167- ratio :
168- totalSessionTokens > 0 ? ( compressedTokens / totalSessionTokens ) . toFixed ( 4 ) : "N/A" ,
172+ reductionPercent : reduction ,
173+ ... graphData ,
169174 } )
170175
171- const newIds = new Set ( messageIds )
172- const progressBar = formatSessionMap (
173- sessionMessageIds ,
174- state . prune . messages ,
175- newIds ,
176- weights ,
177- 50 ,
178- )
179- const reduction =
180- totalSessionTokens > 0 ? Math . round ( ( compressedTokens / totalSessionTokens ) * 100 ) : 0
181176 message += `\n\n${ progressBar } `
182177 message += `\n▣ Compressing (${ pruneTokenCounterStr } removed, ${ reduction } % reduction)`
183178 message += `\n→ Topic: ${ topic } `
0 commit comments