// // SessionStats.swift // oAI // // Session statistics tracking // import Foundation struct SessionStats { var totalInputTokens: Int = 0 var totalOutputTokens: Int = 0 var totalCost: Double = 0.0 var messageCount: Int = 0 var totalTokens: Int { totalInputTokens + totalOutputTokens } var totalTokensDisplay: String { if totalTokens >= 1_000_000 { return String(format: "%.1fM", Double(totalTokens) / 1_000_000) } else if totalTokens >= 1000 { return String(format: "%.1fK", Double(totalTokens) / 1000) } else { return "\(totalTokens)" } } var totalCostDisplay: String { String(format: "$%.4f", totalCost) } var averageCostPerMessage: Double { guard messageCount > 0 else { return 0.0 } return totalCost / Double(messageCount) } mutating func addMessage(inputTokens: Int?, outputTokens: Int?, cost: Double?) { if let input = inputTokens { totalInputTokens += input } if let output = outputTokens { totalOutputTokens += output } if let messageCost = cost { totalCost += messageCost } messageCount += 1 } mutating func reset() { totalInputTokens = 0 totalOutputTokens = 0 totalCost = 0.0 messageCount = 0 } }