Skip to main content

AuthStorage

Struct AuthStorage 

Source
pub struct AuthStorage { /* private fields */ }
Expand description

Auth storage wrapper with file locking.

Implementations§

Source§

impl AuthStorage

Source

pub fn load(path: PathBuf) -> Result<Self>

Load auth.json (creates empty if missing).

Source

pub async fn load_async(path: PathBuf) -> Result<Self>

Load auth.json asynchronously (creates empty if missing).

Source

pub fn save(&self) -> Result<()>

Persist auth.json (atomic write + permissions).

Source

pub async fn save_async(&self) -> Result<()>

Persist auth.json asynchronously.

Source

pub fn get(&self, provider: &str) -> Option<&AuthCredential>

Get raw credential.

Source

pub fn set(&mut self, provider: impl Into<String>, credential: AuthCredential)

Insert or replace a credential for a provider.

Source

pub fn remove(&mut self, provider: &str) -> bool

Remove a credential for a provider.

Source

pub fn api_key(&self, provider: &str) -> Option<String>

Get API key for provider from auth.json.

For ApiKey and BearerToken variants the key/token is returned directly. For OAuth the access token is returned only when not expired. For AwsCredentials the access key ID is returned (callers needing the full credential set should use [get] instead). For ServiceKey this returns None because a token exchange is required first.

Source

pub fn provider_names(&self) -> Vec<String>

Return the names of all providers that have stored credentials.

Source

pub fn credential_status(&self, provider: &str) -> CredentialStatus

Return stored credential status for a provider, including canonical alias fallback.

Source

pub fn remove_provider_aliases(&mut self, provider: &str) -> bool

Remove stored credentials for provider and any known aliases/canonical IDs.

Matching is case-insensitive to clean up legacy mixed-case auth entries.

Source

pub fn has_stored_credential(&self, provider: &str) -> bool

Returns true when auth.json contains a credential for provider (including canonical alias fallback).

Source

pub fn external_setup_source(&self, provider: &str) -> Option<&'static str>

Return a human-readable source label when credentials can be auto-detected from other locally-installed coding CLIs.

Source

pub fn resolve_api_key( &self, provider: &str, override_key: Option<&str>, ) -> Option<String>

Resolve API key with precedence.

Source

pub async fn refresh_expired_oauth_tokens(&mut self) -> Result<()>

Refresh any expired OAuth tokens that this binary knows how to refresh.

This keeps startup behavior predictable: models that rely on OAuth credentials remain available after restart without requiring the user to re-login.

Source

pub async fn refresh_expired_oauth_tokens_with_client( &mut self, client: &Client, ) -> Result<()>

Refresh any expired OAuth tokens using the provided HTTP client.

This is primarily intended for tests and deterministic harnesses (e.g. VCR playback), but is also useful for callers that want to supply a custom HTTP implementation.

Source

pub async fn refresh_expired_extension_oauth_tokens( &mut self, client: &Client, extension_configs: &HashMap<String, OAuthConfig>, ) -> Result<()>

Refresh expired OAuth tokens for extension-registered providers.

extension_configs maps provider ID to its OAuthConfig. Providers already handled by refresh_expired_oauth_tokens_with_client (e.g. “anthropic”) are skipped.

Source

pub fn prune_stale_credentials(&mut self, max_age_ms: i64) -> Vec<String>

Remove OAuth credentials that expired more than max_age_ms ago and whose refresh token is no longer usable (no stored token_url/client_id and no matching extension config).

Returns the list of pruned provider IDs.

Trait Implementations§

Source§

impl Clone for AuthStorage

Source§

fn clone(&self) -> AuthStorage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AuthStorage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ParallelSend for T

Source§

impl<T> Send for T
where T: ?Sized,

Source§

impl<T> Sync for T
where T: ?Sized,