chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import Foundation
|
||||
|
||||
public enum ProviderEnvironmentResolver {
|
||||
public static func resolve(
|
||||
base: [String: String],
|
||||
provider: UsageProvider,
|
||||
config: ProviderConfig?,
|
||||
selectedAccount: ProviderTokenAccount?) -> [String: String]
|
||||
{
|
||||
var environment = ProviderConfigEnvironment.applyProviderConfigOverrides(
|
||||
base: base,
|
||||
provider: provider,
|
||||
config: config)
|
||||
guard let selectedAccount else { return environment }
|
||||
|
||||
TokenAccountSupportCatalog.scrubEnvironmentForSelectedAccount(
|
||||
&environment,
|
||||
provider: provider,
|
||||
token: selectedAccount.token)
|
||||
if let override = TokenAccountSupportCatalog.envOverride(
|
||||
for: provider,
|
||||
token: selectedAccount.token)
|
||||
{
|
||||
environment.merge(override) { _, selectedAccountValue in selectedAccountValue }
|
||||
}
|
||||
Self.applyProviderSpecificAccountOverrides(
|
||||
&environment,
|
||||
provider: provider,
|
||||
account: selectedAccount)
|
||||
return environment
|
||||
}
|
||||
|
||||
private static func applyProviderSpecificAccountOverrides(
|
||||
_ environment: inout [String: String],
|
||||
provider: UsageProvider,
|
||||
account: ProviderTokenAccount)
|
||||
{
|
||||
guard provider == .zai else {
|
||||
return
|
||||
}
|
||||
|
||||
// Team usage scope is account-level only. Accounts without an explicit
|
||||
// `.team` scope are treated as personal and must not inherit stray team
|
||||
// context from the base environment or provider config.
|
||||
let scope: ZaiUsageScope = if let raw = account.sanitizedUsageScope?.lowercased(),
|
||||
let resolved = ZaiUsageScope(rawValue: raw)
|
||||
{
|
||||
resolved
|
||||
} else {
|
||||
.personal
|
||||
}
|
||||
|
||||
environment.removeValue(forKey: ZaiSettingsReader.bigModelOrganizationKey)
|
||||
environment.removeValue(forKey: ZaiSettingsReader.bigModelProjectKey)
|
||||
|
||||
guard scope == .team else { return }
|
||||
if let organizationID = account.sanitizedOrganizationID {
|
||||
environment[ZaiSettingsReader.bigModelOrganizationKey] = organizationID
|
||||
}
|
||||
if let projectID = account.sanitizedWorkspaceID {
|
||||
environment[ZaiSettingsReader.bigModelProjectKey] = projectID
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user