chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
import CodexBarCore
|
||||
import Foundation
|
||||
|
||||
extension MenuDescriptor {
|
||||
static func appendOpenAIAPIUsageSummary(
|
||||
entries: inout [Entry],
|
||||
usage: OpenAIAPIUsageSnapshot)
|
||||
{
|
||||
let today = usage.currentDay
|
||||
let last7 = usage.last7Days
|
||||
let last30 = usage.last30Days
|
||||
let historyLabel = usage.historyWindowLabel
|
||||
|
||||
entries.append(.text(
|
||||
"\(L("Today")): \(UsageFormatter.usdString(today.costUSD)) · " +
|
||||
"\(UsageFormatter.tokenCountString(today.totalTokens)) \(L("tokens"))",
|
||||
.secondary))
|
||||
entries.append(.text(
|
||||
"7d: \(UsageFormatter.usdString(last7.costUSD)) · " +
|
||||
"\(UsageFormatter.tokenCountString(last7.requests)) \(L("requests"))",
|
||||
.secondary))
|
||||
entries.append(.text(
|
||||
"\(historyLabel): \(UsageFormatter.usdString(last30.costUSD)) · " +
|
||||
"\(UsageFormatter.tokenCountString(last30.requests)) \(L("requests"))",
|
||||
.secondary))
|
||||
if let topModel = usage.topModels.first?.name {
|
||||
entries.append(.text("\(L("Top model")): \(topModel)", .secondary))
|
||||
}
|
||||
}
|
||||
|
||||
static func appendClaudeAdminAPIUsageSummary(
|
||||
entries: inout [Entry],
|
||||
usage: ClaudeAdminAPIUsageSnapshot)
|
||||
{
|
||||
let today = usage.currentDay
|
||||
let last7 = usage.last7Days
|
||||
let last30 = usage.last30Days
|
||||
|
||||
entries.append(.text(
|
||||
"\(L("Today")): \(UsageFormatter.usdString(today.costUSD)) · " +
|
||||
"\(UsageFormatter.tokenCountString(today.totalTokens)) \(L("tokens"))",
|
||||
.secondary))
|
||||
entries.append(.text(
|
||||
"7d: \(UsageFormatter.usdString(last7.costUSD)) · " +
|
||||
"\(UsageFormatter.tokenCountString(last7.totalTokens)) \(L("tokens"))",
|
||||
.secondary))
|
||||
entries.append(.text(
|
||||
"30d: \(UsageFormatter.usdString(last30.costUSD)) · " +
|
||||
"\(UsageFormatter.tokenCountString(last30.totalTokens)) \(L("tokens"))",
|
||||
.secondary))
|
||||
if let topModel = usage.topModels.first?.name {
|
||||
entries.append(.text("\(L("Top model")): \(topModel)", .secondary))
|
||||
}
|
||||
}
|
||||
|
||||
static func appendOpenRouterUsageSummary(
|
||||
entries: inout [Entry],
|
||||
usage: OpenRouterUsageSnapshot)
|
||||
{
|
||||
if let daily = usage.keyUsageDaily {
|
||||
entries.append(.text("\(L("Today")): \(UsageFormatter.usdString(daily))", .secondary))
|
||||
}
|
||||
if let weekly = usage.keyUsageWeekly {
|
||||
entries.append(.text("\(L("Week")): \(UsageFormatter.usdString(weekly))", .secondary))
|
||||
}
|
||||
if let monthly = usage.keyUsageMonthly {
|
||||
entries.append(.text("\(L("Month")): \(UsageFormatter.usdString(monthly))", .secondary))
|
||||
}
|
||||
}
|
||||
|
||||
static func appendMistralUsageSummary(
|
||||
entries: inout [Entry],
|
||||
usage: MistralUsageSnapshot)
|
||||
{
|
||||
let latest = usage.daily.last
|
||||
if let latest {
|
||||
entries.append(.text(
|
||||
"\(L("Latest")): \(usage.currencySymbol)\(String(format: "%.4f", max(0, latest.cost))) · " +
|
||||
"\(UsageFormatter.tokenCountString(latest.totalTokens)) \(L("tokens"))",
|
||||
.secondary))
|
||||
}
|
||||
let totalTokens = usage.totalInputTokens + usage.totalCachedTokens + usage.totalOutputTokens
|
||||
entries.append(.text(
|
||||
"\(L("Month")): \(usage.currencySymbol)\(String(format: "%.4f", max(0, usage.totalCost))) · " +
|
||||
"\(UsageFormatter.tokenCountString(totalTokens)) \(L("tokens"))",
|
||||
.secondary))
|
||||
if let top = Self.topMistralModel(from: usage.daily) {
|
||||
entries.append(.text("\(L("Top model")): \(top)", .secondary))
|
||||
}
|
||||
}
|
||||
|
||||
static func appendPoeUsageSummary(
|
||||
entries: inout [Entry],
|
||||
usage: PoeUsageHistorySnapshot)
|
||||
{
|
||||
let today = usage.currentDay()
|
||||
let week = usage.last7Days
|
||||
let month = usage.last30Days
|
||||
let todayCostSuffix = today.costUSD.map { " · \(UsageFormatter.usdString($0))" } ?? ""
|
||||
let weekCostSuffix = week.costUSD.map { " · \(UsageFormatter.usdString($0))" } ?? ""
|
||||
let monthCostSuffix = month.costUSD.map { " · \(UsageFormatter.usdString($0))" } ?? ""
|
||||
entries.append(.text(
|
||||
"\(L("Today")): \(Self.pointsString(today.points)) · " +
|
||||
"\(UsageFormatter.tokenCountString(today.requests)) \(L("requests"))\(todayCostSuffix)",
|
||||
.secondary))
|
||||
entries.append(.text(
|
||||
"7d: \(Self.pointsString(week.points)) · " +
|
||||
"\(UsageFormatter.tokenCountString(week.requests)) \(L("requests"))\(weekCostSuffix)",
|
||||
.secondary))
|
||||
entries.append(.text(
|
||||
"30d: \(Self.pointsString(month.points)) · " +
|
||||
"\(UsageFormatter.tokenCountString(month.requests)) \(L("requests"))\(monthCostSuffix)",
|
||||
.secondary))
|
||||
if let topModel = usage.topModels.first {
|
||||
entries.append(
|
||||
.text(
|
||||
"\(L("Top model")): \(topModel.name) (\(Self.pointsString(topModel.points)))",
|
||||
.secondary))
|
||||
}
|
||||
if !usage.topUsageTypes.isEmpty {
|
||||
let summary = usage.topUsageTypes
|
||||
.prefix(2)
|
||||
.map { "\($0.name): \(Self.pointsString($0.points))" }
|
||||
.joined(separator: " · ")
|
||||
entries.append(.text("Usage mix: \(summary)", .secondary))
|
||||
}
|
||||
let recent = usage.recentEntries(limit: 3)
|
||||
if !recent.isEmpty {
|
||||
entries.append(.text("Recent activity:", .secondary))
|
||||
for entry in recent {
|
||||
let stamp = Self.poeTimeString(entry.createdAt)
|
||||
entries.append(.text(
|
||||
"\(stamp) · \(entry.model) · \(Self.pointsString(entry.points))",
|
||||
.secondary))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static func topMistralModel(from entries: [MistralDailyUsageBucket]) -> String? {
|
||||
var tokens: [String: Int] = [:]
|
||||
for entry in entries {
|
||||
for model in entry.models {
|
||||
tokens[model.name, default: 0] += model.totalTokens
|
||||
}
|
||||
}
|
||||
return tokens.max {
|
||||
if $0.value == $1.value {
|
||||
return $0.key > $1.key
|
||||
}
|
||||
return $0.value < $1.value
|
||||
}?.key
|
||||
}
|
||||
|
||||
private static func pointsString(_ points: Double) -> String {
|
||||
let value = max(0, points)
|
||||
if value.rounded() == value {
|
||||
return "\(UsageFormatter.tokenCountString(Int(value))) points"
|
||||
}
|
||||
return "\(String(format: "%.1f", value)) points"
|
||||
}
|
||||
|
||||
private static func poeTimeString(_ date: Date) -> String {
|
||||
let formatter = DateFormatter()
|
||||
formatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
formatter.timeZone = .current
|
||||
formatter.dateFormat = "MM-dd HH:mm"
|
||||
return formatter.string(from: date)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user