[v0.7.0] Secrets partagés par provider : namespace keyring providers/<nom> + résolution @secret fallback agent → provider #89

Closed
opened 2026-08-19 14:59:23 -04:00 by bruno · 0 comments
Owner

Épique : #87 · Dépend de : #88 (registre de providers)

Objectif

Aujourd'hui les secrets sont strictement par-agent (agent/NAME, secrets.rs key_for) : mettre la même clé OpenAI pour 5 agents = 5 entrées. Ajouter un namespace partagé providers/<nom> pour qu'un token serve tous les agents branchés sur ce provider, avec résolution en cascade.

Spécification

  • Étendre secrets.rs : key_for_provider(name) → "providers/<name>/api_key" (et providers/<name>/<VAR> pour les clés secondaires)
  • am providers set-token <nom> = alias de am secret set api_key --provider <nom> ; am providers token <nom> vérifie la présence SANS afficher la valeur
  • Résolution en cascade dans resolve_env_secrets (secrets.rs) : 1) agent/<VAR> 2) providers/<provider_du_registre>/<VAR> 3) warning si absent
  • Un agent déclare son provider (issue #90) → la cascade utilise ce provider ; sinon fallback sur settings.default_provider
  • Les valeurs ne quittent JAMAIS le keyring : pas de log, pas de --json, pas dans env_keys des événements (déjà le cas, à préserver)
  • am sync exclut déjà les secrets (#66) — ajouter un test qui vérifie que providers/* n'est jamais poussé

Critères d'acceptation

  • un token posé avec am providers set-token openai est résolu par tous les agents du provider
  • le secret par-agent reste prioritaire sur le secret provider (cascade 1 puis 2)
  • warning clair (noms seulement) quand aucun token n'existe
  • am secret list montre les deux namespaces (agent/ et providers/)
  • tests : cascade, priorité, exclusion sync, jamais de valeur dans les logs

Référence ROADMAP

Milestone v0.7.0 — priorité P0. Étend l'existant #36 (keyring) sans rien casser (clés agent/ conservées).

Épique : #87 · Dépend de : #88 (registre de providers) ## Objectif Aujourd'hui les secrets sont strictement par-agent (`agent/NAME`, secrets.rs key_for) : mettre la même clé OpenAI pour 5 agents = 5 entrées. Ajouter un namespace partagé `providers/<nom>` pour qu'un token serve tous les agents branchés sur ce provider, avec résolution en cascade. ## Spécification - Étendre secrets.rs : `key_for_provider(name)` → `"providers/<name>/api_key"` (et `providers/<name>/<VAR>` pour les clés secondaires) - `am providers set-token <nom>` = alias de `am secret set api_key --provider <nom>` ; `am providers token <nom>` vérifie la présence SANS afficher la valeur - Résolution en cascade dans `resolve_env_secrets` (secrets.rs) : 1) `agent/<VAR>` 2) `providers/<provider_du_registre>/<VAR>` 3) warning si absent - Un agent déclare son provider (issue #90) → la cascade utilise ce provider ; sinon fallback sur `settings.default_provider` - Les valeurs ne quittent JAMAIS le keyring : pas de log, pas de --json, pas dans env_keys des événements (déjà le cas, à préserver) - `am sync` exclut déjà les secrets (#66) — ajouter un test qui vérifie que `providers/*` n'est jamais poussé ## Critères d'acceptation - [ ] un token posé avec `am providers set-token openai` est résolu par tous les agents du provider - [ ] le secret par-agent reste prioritaire sur le secret provider (cascade 1 puis 2) - [ ] warning clair (noms seulement) quand aucun token n'existe - [ ] `am secret list` montre les deux namespaces (agent/ et providers/) - [ ] tests : cascade, priorité, exclusion sync, jamais de valeur dans les logs ## Référence ROADMAP Milestone v0.7.0 — priorité P0. Étend l'existant #36 (keyring) sans rien casser (clés agent/ conservées).
bruno added this to the v0.7.0 — Providers & configuration automatisée milestone 2026-08-19 14:59:23 -04:00
bruno added the P0axe-8S labels 2026-08-19 14:59:23 -04:00
bruno closed this issue 2026-08-19 16:09:37 -04:00
Sign in to join this conversation.