@@ -23,6 +23,7 @@ import type { ToolUseContext } from '../../Tool.js'
2323import type { LocalCommandCall } from '../../types/command.js'
2424import type { Message } from '../../types/message.js'
2525import { hasExactErrorMessage } from '../../utils/errors.js'
26+ import { formatTokens } from '../../utils/format.js'
2627import { executePreCompactHooks } from '../../utils/hooks.js'
2728import { logError } from '../../utils/log.js'
2829import { getMessagesAfterCompactBoundary } from '../../utils/messages.js'
@@ -78,7 +79,10 @@ export const call: LocalCommandCall = async (args, context) => {
7879 return {
7980 type : 'compact' ,
8081 compactionResult : sessionMemoryResult ,
81- displayText : buildDisplayText ( context ) ,
82+ displayText : buildDisplayText ( context , undefined , {
83+ pre : sessionMemoryResult . preCompactTokenCount ,
84+ post : sessionMemoryResult . truePostCompactTokenCount ,
85+ } ) ,
8286 }
8387 }
8488 }
@@ -121,7 +125,10 @@ export const call: LocalCommandCall = async (args, context) => {
121125 return {
122126 type : 'compact' ,
123127 compactionResult : result ,
124- displayText : buildDisplayText ( context , result . userDisplayMessage ) ,
128+ displayText : buildDisplayText ( context , result . userDisplayMessage , {
129+ pre : result . preCompactTokenCount ,
130+ post : result . truePostCompactTokenCount ,
131+ } ) ,
125132 }
126133 } catch ( error ) {
127134 if ( abortController . signal . aborted ) {
@@ -218,7 +225,10 @@ async function compactViaReactive(
218225 ...outcome . result ! ,
219226 userDisplayMessage : combinedMessage ,
220227 } ,
221- displayText : buildDisplayText ( context , combinedMessage ) ,
228+ displayText : buildDisplayText ( context , combinedMessage , {
229+ pre : outcome . result ! . preCompactTokenCount ,
230+ post : outcome . result ! . truePostCompactTokenCount ,
231+ } ) ,
222232 }
223233 } finally {
224234 context . setStreamMode ?.( 'requesting' )
@@ -231,17 +241,23 @@ async function compactViaReactive(
231241function buildDisplayText (
232242 context : ToolUseContext ,
233243 userDisplayMessage ?: string ,
244+ tokenCounts ?: { pre ?: number ; post ?: number } ,
234245) : string {
235246 const upgradeMessage = getUpgradeMessage ( 'tip' )
236247 const expandShortcut = getShortcutDisplay (
237248 'app:toggleTranscript' ,
238249 'Global' ,
239250 'ctrl+o' ,
240251 )
252+ const tokenLine =
253+ tokenCounts ?. pre !== undefined && tokenCounts . post !== undefined
254+ ? `Context: ~${ formatTokens ( tokenCounts . pre ) } \u2192 ~${ formatTokens ( tokenCounts . post ) } tokens`
255+ : undefined
241256 const dimmed = [
242257 ...( context . options . verbose
243258 ? [ ]
244259 : [ `(${ expandShortcut } to see full summary)` ] ) ,
260+ ...( tokenLine ? [ tokenLine ] : [ ] ) ,
245261 ...( userDisplayMessage ? [ userDisplayMessage ] : [ ] ) ,
246262 ...( upgradeMessage ? [ upgradeMessage ] : [ ] ) ,
247263 ]
0 commit comments