(
sessionTokens: number,
sessionSummaryTokens: number,
sessionTools: number,
sessionMessages: number,
sessionDurationMs: number,
allTime: AggregatedStats,
)
| 20 | } |
| 21 | |
| 22 | export function formatStatsMessage( |
| 23 | sessionTokens: number, |
| 24 | sessionSummaryTokens: number, |
| 25 | sessionTools: number, |
| 26 | sessionMessages: number, |
| 27 | sessionDurationMs: number, |
| 28 | allTime: AggregatedStats, |
| 29 | ): string { |
| 30 | const lines: string[] = [] |
| 31 | |
| 32 | lines.push("╭───────────────────────────────────────────────────────────╮") |
| 33 | lines.push("│ DCP Statistics │") |
| 34 | lines.push("╰───────────────────────────────────────────────────────────╯") |
| 35 | lines.push("") |
| 36 | lines.push("Compression:") |
| 37 | lines.push("─".repeat(60)) |
| 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}`) |
| 45 | lines.push("") |
| 46 | lines.push("All-time:") |
| 47 | lines.push("─".repeat(60)) |
| 48 | lines.push(` Tokens saved: ~${formatTokenCount(allTime.totalTokens)}`) |
| 49 | lines.push(` Tools pruned: ${allTime.totalTools}`) |
| 50 | lines.push(` Messages pruned: ${allTime.totalMessages}`) |
| 51 | lines.push(` Sessions: ${allTime.sessionCount}`) |
| 52 | |
| 53 | return lines.join("\n") |
| 54 | } |
| 55 | |
| 56 | function formatCompressionRatio(inputTokens: number, outputTokens: number): string { |
| 57 | if (inputTokens <= 0) { |
no test coverage detected