claude_agent/auth/provider.rs
1//! Credential provider trait.
2
3use async_trait::async_trait;
4
5use super::Credential;
6use crate::{Error, Result};
7
8/// Trait for resolving credentials from various sources.
9#[async_trait]
10pub trait CredentialProvider: Send + Sync {
11 /// Provider name for debugging.
12 fn name(&self) -> &str;
13
14 /// Resolve credential from this provider.
15 async fn resolve(&self) -> Result<Credential>;
16
17 /// Refresh expired credentials.
18 async fn refresh(&self) -> Result<Credential> {
19 Err(Error::auth("Refresh not supported"))
20 }
21
22 /// Whether this provider supports credential refresh.
23 fn supports_refresh(&self) -> bool {
24 false
25 }
26}