Files
IdeA/.ideai/tickets/92/carnet.md
Blomios 162e3ae641 chore(ideai): état runtime — tickets, mémoire, tâches de fond
Ticket #92 rouvert, mises à jour de carnets/tâches de fond.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 08:57:15 +02:00

2.4 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#92 8
kind
user
1784788822167

Résumé de livraison

Backend et frontend livrés sur feature/ticket92-opencode-provider-cloud, mergée dans develop (merge 12c7d10).

Backend (commit 23a3c27) :

  • Domain : OpenCodeProviderConfig { provider_id, model, api_key_ref: SecretRef } sur AgentProfile.opencode_provider, invariant opencode_backend_is_consistent() (llamacpp local XOR provider cloud, jamais les deux).
  • Port SecretStore + adaptateur FsSecretStore (AES-256-GCM via ring, clé locale secret.key chmod 0600) — la clé API cloud n'est jamais en clair dans profiles.json.
  • Catalogue de providers statique (application/agent/provider_catalogue.rs) exposé via la commande Tauri list_opencode_providers.
  • Use case SaveOpenCodeProviderProfile (scelle la clé API dans le SecretStore, mint/réutilise un SecretRef) exposé via save_opencode_provider_profile. Pas de patch partiel : la clé littérale est obligatoire à chaque appel, y compris en édition.
  • DeleteProfile purge le secret associé si le profil supprimé porte opencode_provider.
  • Résolution de la clé au lancement dans les deux générateurs de opencode.json (infrastructure/assistant/mod.rs, application/agent/lifecycle.rs) ; échec dur si secret absent.
  • QA vert : cargo build --workspace + cargo test --workspace -- --test-threads=1 (tests de couverture SaveOpenCodeProviderProfile/DeleteProfile ajoutés suite à un premier retour QA).

Frontend (commit c181b43) :

  • First-run wizard : segmented control Local/Cloud exclusif dans le formulaire de profil OpenCode, sous-formulaire cloud (provider → modèle en cascade, clé API masquée jamais pré-remplie), validation inline, bannière d'erreur de sauvegarde.
  • En édition d'un profil cloud existant : champ clé toujours vide, bouton de sauvegarde désactivé tant que la clé n'est pas ressaisie (contrainte backend, pas de patch partiel).
  • QA vert : npm run build + vitest run (952 tests, y compris un test ajouté pour le parcours d'édition suite à un retour QA).

Dette hors périmètre signalée par Architect, non traitée ici : duplication de deux fonctions opencode_config_json/opencode_provider_config_json entre infrastructure/assistant/mod.rs et application/agent/lifecycle.rs — à trancher (laquelle est la vraie) dans un ticket séparé si besoin.