pub struct SpnClient { /* private fields */ }Expand description
Client for communicating with the spn daemon.
The client uses Unix socket IPC to communicate with the daemon, which handles all keychain access to avoid repeated auth prompts.
On non-Unix platforms (Windows), the client always operates in fallback mode, reading secrets from environment variables.
Implementations§
Source§impl SpnClient
impl SpnClient
Sourcepub async fn connect() -> Result<Self, Error>
pub async fn connect() -> Result<Self, Error>
Connect to the spn daemon.
Returns an error if the daemon is not running.
This method is only available on Unix platforms.
Sourcepub async fn connect_to(socket_path: &PathBuf) -> Result<Self, Error>
pub async fn connect_to(socket_path: &PathBuf) -> Result<Self, Error>
Connect to the daemon at a specific socket path.
This method is only available on Unix platforms.
Sourcepub fn set_timeout(&mut self, timeout: Duration)
pub fn set_timeout(&mut self, timeout: Duration)
Set the timeout for IPC operations.
The default timeout is 30 seconds.
Sourcepub async fn connect_with_fallback() -> Result<Self, Error>
pub async fn connect_with_fallback() -> Result<Self, Error>
Connect to the daemon, falling back to env vars if daemon is unavailable.
This is the recommended way to connect in applications that should work even without the daemon running.
On non-Unix platforms (Windows), this always returns a fallback client.
Sourcepub fn is_fallback_mode(&self) -> bool
pub fn is_fallback_mode(&self) -> bool
Check if the client is in fallback mode (daemon not connected).
Sourcepub async fn ping(&mut self) -> Result<String, Error>
pub async fn ping(&mut self) -> Result<String, Error>
Ping the daemon to verify the connection and check protocol compatibility.
Returns the daemon’s CLI version string on success. Warns if the protocol version doesn’t match but allows connection.
This method is only available on Unix platforms.
Sourcepub async fn get_secret(
&mut self,
provider: &str,
) -> Result<SecretString, Error>
pub async fn get_secret( &mut self, provider: &str, ) -> Result<SecretString, Error>
Get a secret for the given provider.
In fallback mode, attempts to read from the environment variable associated with the provider (e.g., ANTHROPIC_API_KEY).
Sourcepub async fn has_secret(&mut self, provider: &str) -> Result<bool, Error>
pub async fn has_secret(&mut self, provider: &str) -> Result<bool, Error>
Check if a secret exists for the given provider.
Sourcepub async fn list_providers(&mut self) -> Result<Vec<String>, Error>
pub async fn list_providers(&mut self) -> Result<Vec<String>, Error>
List all available providers.
Sourcepub async fn refresh_secret(&mut self, provider: &str) -> Result<bool, Error>
pub async fn refresh_secret(&mut self, provider: &str) -> Result<bool, Error>
Refresh a secret in the daemon cache.
This should be called after spn provider set to invalidate stale values.
Returns true if the secret was found and reloaded.
Sourcepub async fn watcher_status(&mut self) -> Result<WatcherStatusInfo, Error>
pub async fn watcher_status(&mut self) -> Result<WatcherStatusInfo, Error>
Get watcher status (recent projects, foreign MCPs, watched paths).
Returns status information about the MCP config watcher.
Sourcepub async fn send_request(
&mut self,
request: Request,
) -> Result<Response, Error>
pub async fn send_request( &mut self, request: Request, ) -> Result<Response, Error>
Send a request to the daemon and receive a response.
This is a low-level method for sending arbitrary requests.
For common operations, use the convenience methods like get_secret().
The request will time out after the configured timeout (default 30 seconds).