this repo has no description
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}