MCPcopy Index your code
hub / github.com/Opencode-DCP/opencode-dynamic-context-pruning / buildStatsReport

Function buildStatsReport

lib/commands/stats.ts:120–159  ·  view source on GitHub ↗
(state: SessionState, logger: Logger)

Source from the content-addressed store, hash-verified

118}
119
120export async function buildStatsReport(state: SessionState, logger: Logger) {
121 const sessionTokens = state.stats.totalPruneTokens
122 const sessionSummaryTokens = Array.from(state.prune.messages.blocksById.values()).reduce(
123 (total, block) => (block.active ? total + block.summaryTokens : total),
124 0,
125 )
126 const sessionDurationMs = getActiveCompressionTargets(state.prune.messages).reduce(
127 (total, target) => total + target.durationMs,
128 0,
129 )
130
131 const prunedToolIds = new Set<string>(state.prune.tools.keys())
132 for (const block of state.prune.messages.blocksById.values()) {
133 if (block.active) {
134 for (const toolId of block.effectiveToolIds) {
135 prunedToolIds.add(toolId)
136 }
137 }
138 }
139 const sessionTools = prunedToolIds.size
140
141 let sessionMessages = 0
142 for (const entry of state.prune.messages.byMessageId.values()) {
143 if (entry.activeBlockIds.length > 0) {
144 sessionMessages++
145 }
146 }
147
148 // All-time stats from storage files
149 const allTime = await loadAllSessionStats(logger)
150
151 return {
152 sessionTokens,
153 sessionSummaryTokens,
154 sessionTools,
155 sessionMessages,
156 sessionDurationMs,
157 allTime,
158 }
159}

Callers 2

openStatsModalFunction · 0.90
handleStatsCommandFunction · 0.85

Calls 2

loadAllSessionStatsFunction · 0.90

Tested by

no test coverage detected