//! 密钥库抽象接口(架构 §4.1) use crate::error::SecretStoreError; /// 系统密钥库封装接口。`service` 固定前缀 `agentdock.`, /// `account` 为字段 id(如 `api_key`)。 pub trait SecretStore: Send + Sync { /// 写入密钥。 fn set(&self, service: &str, account: &str, secret: &str) -> Result<(), SecretStoreError>; /// 读取密钥。 fn get(&self, service: &str, account: &str) -> Result; /// 是否存在该密钥条目。 fn has(&self, service: &str, account: &str) -> bool; /// 删除密钥条目。 fn delete(&self, service: &str, account: &str) -> Result<(), SecretStoreError>; } /// 构造 service 名:`agentdock.`。 pub fn service_name(cli_id: &str) -> String { format!("agentdock.{cli_id}") }