feat: catalogue dynamique modèles Codex/Claude avec compatibilité CLI locale

Ajout du catalogue enrichi pour les modèles Codex et Claude avec:
- Compatibilité estimée avec la version CLI locale détectée
- Source d'origine (catalogue/Provider) pour chaque entrée
- Support du catalogue Provider API externe
- Matrice de compatibilité embarquée dans l'application

Frontend:
- UI de configuration des modèles avec affichage des états de compatibilité
- Suggestions dynamiques avec badges de compatibilité
- Messages d'aide contextuels (compatible/unknown/likelyTooRecent)
- Alertes non-bloquantes pour les modèles trop récents
- Gestion des échecs de catalogue avec saisie manuelle conservée

Backend:
- Ports CliVersionReader, ProviderModelCatalogue, CompatibilityMatrixSource
- Implémentations: ProcessCliVersionReader, HttpProviderModelCatalogue, EmbeddedCompatibilityMatrix
- Enrichissement des DTOs avec compatibility, cli_version, warnings
- Tests unitaires complets pour le resolver de catalogue
This commit is contained in:
2026-07-26 16:09:10 +02:00
parent e7bf1d3666
commit ca70ec75f4
25 changed files with 1582 additions and 167 deletions

View File

@ -1096,6 +1096,15 @@ export interface OpenCodeProviderCatalogEntry {
models: string[];
}
/** Estimated compatibility for a Codex/Claude model against the detected local CLI. */
export type ModelCompatibility =
| "compatible"
| "unknown"
| "likelyTooRecent";
/** Origin of a model catalogue entry. */
export type ModelCatalogSource = "catalogue" | "provider";
/** One searchable model from the Codex/Claude structured-profile catalogues. */
export interface ProfileModelCatalogEntry {
/** Structured adapter this model belongs to. */
@ -1108,6 +1117,19 @@ export interface ProfileModelCatalogEntry {
aliases: string[];
/** Whether this entry is the conservative default suggestion. */
recommended: boolean;
/** Best-effort compatibility estimate for the locally detected CLI version. */
compatibility: ModelCompatibility;
/** Whether the entry comes from IdeA's catalogue or a provider-derived source. */
source: ModelCatalogSource;
}
/** Enriched Codex/Claude model catalogue. Manual model entry remains supported. */
export interface ProfileModelCatalog {
models: ProfileModelCatalogEntry[];
/** Detected local CLI version, or null when unavailable. */
cliVersion: string | null;
/** Non-fatal catalogue/version diagnostics. */
warnings: string[];
}
/**