import CodexBarCoreimport Foundation extension SettingsStore { func providerConfig(for provider: UsageProvider) -> ProviderConfig? { self.configSnapshot.providerConfig(for: provider) } func quotaWarningConfig(for provider: UsageProvider) -> QuotaWarningConfig { self.configSnapshot.providerConfig(for: provider)?.quotaWarnings ?? QuotaWarningConfig() } func resolvedQuotaWarningThresholds(provider: UsageProvider, window: QuotaWarningWindow) -> [Int] { self.quotaWarningConfig(for: provider).thresholds( for: window, global: self.quotaWarningThresholds(window)) } func quotaWarningEnabled(provider: UsageProvider, window: QuotaWarningWindow) -> Bool { self.quotaWarningConfig(for: provider).isEnabled( for: window, global: self.quotaWarningWindowEnabled(window)) } func hasQuotaWarningOverride(provider: UsageProvider, window: QuotaWarningWindow) -> Bool { self.quotaWarningConfig(for: provider).hasOverride(for: window) } func setQuotaWarningThresholds(provider: UsageProvider, window: QuotaWarningWindow, thresholds: [Int]?) { self.updateProviderConfig(provider: provider) { entry in var config = entry.quotaWarnings ?? QuotaWarningConfig() switch window { case .session: var windowConfig = config.session ?? QuotaWarningWindowConfig() windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized) config.session = windowConfig.hasOverride ? windowConfig : nil case .weekly: var windowConfig = config.weekly ?? QuotaWarningWindowConfig() windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized) config.weekly = windowConfig.hasOverride ? windowConfig : nil } entry.quotaWarnings = config.isEmpty ? nil : config } } func setQuotaWarningOverride( provider: UsageProvider, window: QuotaWarningWindow, thresholds: [Int]?, enabled: Bool?) { self.updateProviderConfig(provider: provider) { entry in var config = entry.quotaWarnings ?? QuotaWarningConfig() switch window { case .session: var windowConfig = config.session ?? QuotaWarningWindowConfig() windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized) windowConfig.enabled = enabled config.session = windowConfig.hasOverride ? windowConfig : nil case .weekly: var windowConfig = config.weekly ?? QuotaWarningWindowConfig() windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized) windowConfig.enabled = enabled config.weekly = windowConfig.hasOverride ? windowConfig : nil } entry.quotaWarnings = config.isEmpty ? nil : config } } func setQuotaWarningWindowEnabled(provider: UsageProvider, window: QuotaWarningWindow, enabled: Bool?) { self.updateProviderConfig(provider: provider) { entry in var config = entry.quotaWarnings ?? QuotaWarningConfig() switch window { case .session: var windowConfig = config.session ?? QuotaWarningWindowConfig() windowConfig.enabled = enabled config.session = windowConfig.hasOverride ? windowConfig : nil case .weekly: var windowConfig = config.weekly ?? QuotaWarningWindowConfig() windowConfig.enabled = enabled config.weekly = windowConfig.hasOverride ? windowConfig : nil } entry.quotaWarnings = config.isEmpty ? nil : config } } var tokenAccountsByProvider: [UsageProvider: ProviderTokenAccountData] { get { Dictionary(uniqueKeysWithValues: self.configSnapshot.providers.compactMap { entry in guard let accounts = entry.tokenAccounts else { return nil } return (entry.id, accounts) }) } set { self.updateProviderTokenAccounts(newValue) } }} extension SettingsStore { func resolvedCookieSource( provider: UsageProvider, fallback: ProviderCookieSource) -> ProviderCookieSource { let source = self.configSnapshot.providerConfig(for: provider)?.cookieSource ?? fallback guard self.debugDisableKeychainAccess == false else { return source == .off ? .off : .manual } return source } func logProviderModeChange(provider: UsageProvider, field: String, value: String) { CodexBarLog.logger(LogCategories.settings).info( "Provider mode updated", metadata: ["provider": provider.rawValue, "field": field, "value": value]) } func logSecretUpdate(provider: UsageProvider, field: String, value: String) { var metadata = LogMetadata.secretSummary(value) metadata["provider"] = provider.rawValue metadata["field"] = field CodexBarLog.logger(LogCategories.settings).info( "Provider secret updated", metadata: metadata) }}
import CodexBarCore
import Foundation
extension SettingsStore {
func providerConfig(for provider: UsageProvider) -> ProviderConfig? {
self.configSnapshot.providerConfig(for: provider)
}
func quotaWarningConfig(for provider: UsageProvider) -> QuotaWarningConfig {
self.configSnapshot.providerConfig(for: provider)?.quotaWarnings ?? QuotaWarningConfig()
}
func resolvedQuotaWarningThresholds(provider: UsageProvider, window: QuotaWarningWindow) -> [Int] {
self.quotaWarningConfig(for: provider).thresholds(
for: window,
global: self.quotaWarningThresholds(window))
}
func quotaWarningEnabled(provider: UsageProvider, window: QuotaWarningWindow) -> Bool {
self.quotaWarningConfig(for: provider).isEnabled(
for: window,
global: self.quotaWarningWindowEnabled(window))
}
func hasQuotaWarningOverride(provider: UsageProvider, window: QuotaWarningWindow) -> Bool {
self.quotaWarningConfig(for: provider).hasOverride(for: window)
}
func setQuotaWarningThresholds(provider: UsageProvider, window: QuotaWarningWindow, thresholds: [Int]?) {
self.updateProviderConfig(provider: provider) { entry in
var config = entry.quotaWarnings ?? QuotaWarningConfig()
switch window {
case .session:
var windowConfig = config.session ?? QuotaWarningWindowConfig()
windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized)
config.session = windowConfig.hasOverride ? windowConfig : nil
case .weekly:
var windowConfig = config.weekly ?? QuotaWarningWindowConfig()
windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized)
config.weekly = windowConfig.hasOverride ? windowConfig : nil
}
entry.quotaWarnings = config.isEmpty ? nil : config
}
}
func setQuotaWarningOverride(
provider: UsageProvider,
window: QuotaWarningWindow,
thresholds: [Int]?,
enabled: Bool?)
{
self.updateProviderConfig(provider: provider) { entry in
var config = entry.quotaWarnings ?? QuotaWarningConfig()
switch window {
case .session:
var windowConfig = config.session ?? QuotaWarningWindowConfig()
windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized)
windowConfig.enabled = enabled
config.session = windowConfig.hasOverride ? windowConfig : nil
case .weekly:
var windowConfig = config.weekly ?? QuotaWarningWindowConfig()
windowConfig.thresholds = thresholds.map(QuotaWarningThresholds.sanitized)
windowConfig.enabled = enabled
config.weekly = windowConfig.hasOverride ? windowConfig : nil
}
entry.quotaWarnings = config.isEmpty ? nil : config
}
}
func setQuotaWarningWindowEnabled(provider: UsageProvider, window: QuotaWarningWindow, enabled: Bool?) {
self.updateProviderConfig(provider: provider) { entry in
var config = entry.quotaWarnings ?? QuotaWarningConfig()
switch window {
case .session:
var windowConfig = config.session ?? QuotaWarningWindowConfig()
windowConfig.enabled = enabled
config.session = windowConfig.hasOverride ? windowConfig : nil
case .weekly:
var windowConfig = config.weekly ?? QuotaWarningWindowConfig()
windowConfig.enabled = enabled
config.weekly = windowConfig.hasOverride ? windowConfig : nil
}
entry.quotaWarnings = config.isEmpty ? nil : config
}
}
var tokenAccountsByProvider: [UsageProvider: ProviderTokenAccountData] {
get {
Dictionary(uniqueKeysWithValues: self.configSnapshot.providers.compactMap { entry in
guard let accounts = entry.tokenAccounts else { return nil }
return (entry.id, accounts)
})
}
set {
self.updateProviderTokenAccounts(newValue)
}
}
}
extension SettingsStore {
func resolvedCookieSource(
provider: UsageProvider,
fallback: ProviderCookieSource) -> ProviderCookieSource
{
let source = self.configSnapshot.providerConfig(for: provider)?.cookieSource ?? fallback
guard self.debugDisableKeychainAccess == false else { return source == .off ? .off : .manual }
return source
}
func logProviderModeChange(provider: UsageProvider, field: String, value: String) {
CodexBarLog.logger(LogCategories.settings).info(
"Provider mode updated",
metadata: ["provider": provider.rawValue, "field": field, "value": value])
}
func logSecretUpdate(provider: UsageProvider, field: String, value: String) {
var metadata = LogMetadata.secretSummary(value)
metadata["provider"] = provider.rawValue
metadata["field"] = field
CodexBarLog.logger(LogCategories.settings).info(
"Provider secret updated",
metadata: metadata)
}
}