(ctx: StatsCommandContext)
| 90 | } |
| 91 | |
| 92 | export async function handleStatsCommand(ctx: StatsCommandContext): Promise<void> { |
| 93 | const { client, state, logger, sessionId, messages } = ctx |
| 94 | |
| 95 | const report = await buildStatsReport(state, logger) |
| 96 | const message = formatStatsMessage( |
| 97 | report.sessionTokens, |
| 98 | report.sessionSummaryTokens, |
| 99 | report.sessionTools, |
| 100 | report.sessionMessages, |
| 101 | report.sessionDurationMs, |
| 102 | report.allTime, |
| 103 | ) |
| 104 | |
| 105 | const params = getCurrentParams(state, messages, logger) |
| 106 | await sendIgnoredMessage(client, sessionId, message, params, logger) |
| 107 | |
| 108 | logger.info("Stats command executed", { |
| 109 | sessionTokens: report.sessionTokens, |
| 110 | sessionSummaryTokens: report.sessionSummaryTokens, |
| 111 | sessionTools: report.sessionTools, |
| 112 | sessionMessages: report.sessionMessages, |
| 113 | sessionDurationMs: report.sessionDurationMs, |
| 114 | allTimeTokens: report.allTime.totalTokens, |
| 115 | allTimeTools: report.allTime.totalTools, |
| 116 | allTimeMessages: report.allTime.totalMessages, |
| 117 | }) |
| 118 | } |
| 119 | |
| 120 | export async function buildStatsReport(state: SessionState, logger: Logger) { |
| 121 | const sessionTokens = state.stats.totalPruneTokens |
no test coverage detected