feat: implémentation et QA ticket99 - agent model configuration v2

- backend A-C: VO Codex/Claude, renderers/projecteurs modèle, SecretRef/env, catalogues/use cases/Tauri commands
- frontend D: profils Codex/Claude provider->model->secret, validations, conservation SecretRef
- fix: app-tauri embedded_server isolant IDEA_WEB_ROOT

QA: backend 57/57 tests, frontend 74/74 tests OK
This commit is contained in:
2026-07-26 11:56:25 +02:00
parent 13fb538880
commit dae07d35bb
27 changed files with 2358 additions and 143 deletions

View File

@ -15,6 +15,8 @@ import type {
Agent,
AgentDrift,
AgentProfile,
ClaudeProviderCatalogEntry,
CodexProviderCatalogEntry,
EffectivePermissions,
EmbedderEngines,
EmbedderProfile,
@ -65,6 +67,8 @@ import type {
PermissionGateway,
ProfileGateway,
ProjectGateway,
SaveClaudeProviderProfileInput,
SaveCodexProviderProfileInput,
SaveOpenCodeProviderProfileInput,
SkillGateway,
TemplateGateway,
@ -202,6 +206,37 @@ export class HttpProfileGateway implements ProfileGateway {
},
});
}
listCodexProviders(): Promise<CodexProviderCatalogEntry[]> {
return this.http.invoke<CodexProviderCatalogEntry[]>("list_codex_providers");
}
saveCodexProviderProfile(
input: SaveCodexProviderProfileInput,
): Promise<AgentProfile> {
return this.http.invoke<AgentProfile>("save_codex_provider_profile", {
request: {
profile: input.profile,
providerId: input.providerId,
model: input.model,
apiKey: input.apiKey,
custom: input.custom,
},
});
}
listClaudeProviders(): Promise<ClaudeProviderCatalogEntry[]> {
return this.http.invoke<ClaudeProviderCatalogEntry[]>("list_claude_providers");
}
saveClaudeProviderProfile(
input: SaveClaudeProviderProfileInput,
): Promise<AgentProfile> {
return this.http.invoke<AgentProfile>("save_claude_provider_profile", {
request: {
profile: input.profile,
providerId: input.providerId,
model: input.model,
apiKey: input.apiKey,
},
});
}
}
export class HttpModelServerGateway implements ModelServerGateway {