this repo has no description
at main 85 lines 2.8 kB view raw
1import Foundation 2 3public enum UsageProvider: String, CaseIterable, Sendable { 4 case codex 5 case claude 6} 7 8public struct ProviderMetadata: Sendable { 9 public let id: UsageProvider 10 public let displayName: String 11 public let sessionLabel: String 12 public let weeklyLabel: String 13 public let opusLabel: String? 14 public let supportsOpus: Bool 15 public let supportsCredits: Bool 16 public let creditsHint: String 17 public let toggleTitle: String 18 public let cliName: String 19 public let defaultEnabled: Bool 20 public let dashboardURL: String? 21 public let statusPageURL: String? 22 23 public init( 24 id: UsageProvider, 25 displayName: String, 26 sessionLabel: String, 27 weeklyLabel: String, 28 opusLabel: String?, 29 supportsOpus: Bool, 30 supportsCredits: Bool, 31 creditsHint: String, 32 toggleTitle: String, 33 cliName: String, 34 defaultEnabled: Bool, 35 dashboardURL: String?, 36 statusPageURL: String?) 37 { 38 self.id = id 39 self.displayName = displayName 40 self.sessionLabel = sessionLabel 41 self.weeklyLabel = weeklyLabel 42 self.opusLabel = opusLabel 43 self.supportsOpus = supportsOpus 44 self.supportsCredits = supportsCredits 45 self.creditsHint = creditsHint 46 self.toggleTitle = toggleTitle 47 self.cliName = cliName 48 self.defaultEnabled = defaultEnabled 49 self.dashboardURL = dashboardURL 50 self.statusPageURL = statusPageURL 51 } 52} 53 54public enum ProviderDefaults { 55 public static let metadata: [UsageProvider: ProviderMetadata] = [ 56 .codex: ProviderMetadata( 57 id: .codex, 58 displayName: "Codex", 59 sessionLabel: "Session", 60 weeklyLabel: "Weekly", 61 opusLabel: nil, 62 supportsOpus: false, 63 supportsCredits: true, 64 creditsHint: "Credits unavailable; keep Codex running to refresh.", 65 toggleTitle: "Show Codex usage", 66 cliName: "codex", 67 defaultEnabled: true, 68 dashboardURL: "https://chatgpt.com/codex/settings/usage", 69 statusPageURL: "https://status.openai.com/"), 70 .claude: ProviderMetadata( 71 id: .claude, 72 displayName: "Claude", 73 sessionLabel: "Session", 74 weeklyLabel: "Weekly", 75 opusLabel: "Sonnet", 76 supportsOpus: true, 77 supportsCredits: false, 78 creditsHint: "", 79 toggleTitle: "Show Claude Code usage", 80 cliName: "claude", 81 defaultEnabled: false, 82 dashboardURL: "https://console.anthropic.com/settings/billing", 83 statusPageURL: "https://status.claude.com/"), 84 ] 85}