chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import Foundation
|
||||
|
||||
/// Stable identity for one account row surfaced by a multi-account source adapter.
|
||||
///
|
||||
/// `source` names the adapter (for example `claude-swap`) and `opaqueID` is the
|
||||
/// source-issued identifier (for example a numeric slot). Identity never derives
|
||||
/// from emails or credential material, per
|
||||
/// `docs/claude-multi-account-and-status-items.md`.
|
||||
public struct ProviderAccountIdentity: Hashable, Sendable {
|
||||
public let source: String
|
||||
public let opaqueID: String
|
||||
|
||||
public init(source: String, opaqueID: String) {
|
||||
self.source = source
|
||||
self.opaqueID = opaqueID
|
||||
}
|
||||
}
|
||||
|
||||
/// Provider-neutral projection of one account's usage, consumed by menus (and,
|
||||
/// later, per-account status items) without teaching UI code about any specific
|
||||
/// credential source.
|
||||
public struct ProviderAccountUsageSnapshot: Identifiable, Sendable {
|
||||
public let id: ProviderAccountIdentity
|
||||
public let provider: UsageProvider
|
||||
/// Display-only label (may contain personal data such as an email); UI is
|
||||
/// responsible for privacy redaction. Never logged or persisted.
|
||||
public let displayLabel: String
|
||||
public let isActive: Bool
|
||||
/// Whether the source can make this inactive account the provider's active account.
|
||||
/// Activation remains source-owned; CodexBar never handles credential material.
|
||||
public let canActivate: Bool
|
||||
public let snapshot: UsageSnapshot?
|
||||
public let error: String?
|
||||
public let sourceLabel: String?
|
||||
|
||||
public init(
|
||||
id: ProviderAccountIdentity,
|
||||
provider: UsageProvider,
|
||||
displayLabel: String,
|
||||
isActive: Bool,
|
||||
canActivate: Bool = false,
|
||||
snapshot: UsageSnapshot?,
|
||||
error: String?,
|
||||
sourceLabel: String?)
|
||||
{
|
||||
self.id = id
|
||||
self.provider = provider
|
||||
self.displayLabel = displayLabel
|
||||
self.isActive = isActive
|
||||
self.canActivate = canActivate
|
||||
self.snapshot = snapshot
|
||||
self.error = error
|
||||
self.sourceLabel = sourceLabel
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user