feat: v0.7.0 — secrets partagés par provider : am providers set-token/token, namespace keyring providers/<nom>, résolution @secret en cascade agent → provider (closes #89)

Corrige au passage deux bugs du keyring (#36) : features natifs manquants du crate keyring (set() no-op silencieux, rien ne persistait) + index __index__ jamais purgé au remove (list fantômes).
This commit is contained in:
2026-08-19 16:09:34 -04:00
parent d38cd7352f
commit 7312e6ceab
15 changed files with 400 additions and 54 deletions
+25 -5
View File
@@ -672,6 +672,20 @@ pub enum ProvidersCmd {
/// Provider name
name: String,
},
/// Store the provider API token in the OS keyring (shared by every
/// agent of this provider through the @secret cascade, issue #89)
SetToken {
/// Provider name
name: String,
/// Token value (never logged)
#[arg(long, value_name = "VALUE")]
value: String,
},
/// Check whether a provider token exists (the value is never shown)
Token {
/// Provider name
name: String,
},
/// Set the default provider
Default {
/// Provider name
@@ -741,13 +755,16 @@ pub enum ScheduleCmd {
}
#[derive(Subcommand, Debug, Clone)]
pub enum SecretCmd {
/// Store a secret for an agent
/// Store a secret for an agent (or a provider, issue #89)
Set {
/// Secret name (the environment variable name)
name: String,
/// Agent it belongs to
/// Agent it belongs to (required unless --provider is given)
#[arg(long, value_name = "AGENT")]
agent: String,
agent: Option<String>,
/// Provider it belongs to (shared by every agent of this provider)
#[arg(long, value_name = "PROVIDER")]
provider: Option<String>,
/// Secret value (prefer --value over shell history; never logged)
#[arg(long, value_name = "VALUE")]
value: String,
@@ -756,9 +773,12 @@ pub enum SecretCmd {
Unset {
/// Secret name
name: String,
/// Agent it belongs to
/// Agent it belongs to (required unless --provider is given)
#[arg(long, value_name = "AGENT")]
agent: String,
agent: Option<String>,
/// Provider it belongs to
#[arg(long, value_name = "PROVIDER")]
provider: Option<String>,
},
/// List stored secret names (values are never shown)
List,