feat: finalise multi-profil Codex/Claude avec catalogue de modèles
- Backend : clone_profile_from_seed généralisé (non OpenCode) - Backend : catalogue static Claude/Codex (3 modèles chacun, 1 recommandé) - Backend : commandes Tauri list_claude_models/list_codex_models - Frontend : ProfilesSettings refonte en onglets Codex/Claude + create/duplicate/edit/delete - Frontend : ModelSelect searchable partagé + fallback saisie manuelle - Frontend : assignation agent nom · modèle - Tests QA : 4 profils modèles distincts (2 Claude, 2 Codex) assignés à agents
This commit is contained in:
@ -70,3 +70,4 @@
|
||||
- [ticket101-cross-talk-multi-project-rootcause](ticket101-cross-talk-multi-project-rootcause.md) — memory note ticket101-cross-talk-multi-project-rootcause
|
||||
- [ticket103-network-permission-ux-surface](ticket103-network-permission-ux-surface.md) — Stable UX convention for agent network permissions in IdeA.
|
||||
- [codex-network-access-config-fix](codex-network-access-config-fix.md) — memory note codex-network-access-config-fix
|
||||
- [multi-profile-codex-claude-model-catalogue-scoping](multi-profile-codex-claude-model-catalogue-scoping.md) — memory note multi-profile-codex-claude-model-catalogue-scoping
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
---
|
||||
name: multi-profile-codex-claude-model-catalogue-scoping
|
||||
description: memory note multi-profile-codex-claude-model-catalogue-scoping
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# Cadrage : profils multiples Codex/Claude + catalogue de modèles
|
||||
|
||||
Demande utilisateur : plusieurs profils Codex et Claude, chacun avec son modèle, assignables aux
|
||||
agents ; lister les modèles plutôt que saisie manuelle quand possible.
|
||||
|
||||
## État vérifié de l'existant (2026-07-26)
|
||||
|
||||
Le backend est déjà générique multi-profils, contrairement à ce qu'on pourrait croire à la lecture
|
||||
seule des mémoires F35/F36 (qui documentaient le cas OpenCode) :
|
||||
|
||||
- `AgentProfile` (crates/domain/src/profile.rs) porte déjà `model: Option<String>` (ticket #99,
|
||||
explicitement prévu pour Codex/Claude), et `profiles.json` (FsProfileStore) est une **liste**
|
||||
indexée par `id`, pas un slot singleton par provider.
|
||||
- Commandes déjà câblées : `list_profiles`, `save_profile` (upsert générique par id),
|
||||
`delete_profile`, `reference_profiles`, `detect_profiles`.
|
||||
- Ce qui existe **seulement pour OpenCode** : `clone_opencode_profile_from_seed` (alloue un id
|
||||
frais via IdGenerator) et `save_opencode_provider_profile`, plus un vrai catalogue de modèles
|
||||
(`crates/application/src/agent/provider_catalogue.rs`, lit le cache models.dev d'OpenCode avec
|
||||
repli statique).
|
||||
- `catalogue.rs` : un seul profil de référence Claude et un seul Codex, aucun `.with_model(...)`.
|
||||
- Frontend `ProfilesSettings.tsx` : simple list+delete, pas de create/duplicate/edit inline ;
|
||||
toute édition rouvre `FirstRunWizard`.
|
||||
|
||||
## Gaps identifiés (pas de migration de schéma nécessaire)
|
||||
|
||||
1. Backend : généraliser le pattern `CloneOpenCodeProfileFromSeed` (fresh_profile_id via
|
||||
IdGenerator) en un use case `CloneProfileFromSeed` non spécifique à OpenCode, pour dupliquer un
|
||||
profil Claude/Codex avec un nom + `model` en override. Ne PAS laisser le frontend miner l'id
|
||||
(romprait la discipline IdGenerator déjà en place).
|
||||
2. Backend : catalogue de modèles Claude/Codex — aucune API fiable côté CLI, donc liste statique
|
||||
curée (même esprit que `static_fallback_catalogue()` d'OpenCode), exposée par commande Tauri
|
||||
infaillible (`list_claude_models`/`list_codex_models` ou générique par `structuredAdapter`).
|
||||
Le frontend garde toujours un champ de saisie manuelle en repli (liste jamais garantie
|
||||
exhaustive).
|
||||
3. Frontend : refonte `ProfilesSettings.tsx` en onglets Codex/Claude/OpenCode avec
|
||||
create/duplicate/edit/delete par onglet + `ModelSelect` searchable partagé ; simplifier
|
||||
`FirstRunWizard` pour ne créer qu'un profil par défaut par provider détecté, avec renvoi vers
|
||||
Settings pour en ajouter d'autres.
|
||||
|
||||
## Découpage de livraison
|
||||
DevBackend (use case + catalogues + commandes, petit lot, zéro migration) → DevFrontend (refonte
|
||||
Settings + first-run simplifié) → QA (créer 2 profils Claude modèles différents + 2 Codex, assigner
|
||||
à des agents distincts, vérifier le bon modèle atteint la CLI au lancement, non-régression
|
||||
OpenCode) → Git (branche feature unique, lot petit et couplé).
|
||||
Reference in New Issue
Block a user