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>
This commit is contained in:
2026-07-23 08:57:15 +02:00
parent 12c7d103d0
commit 162e3ae641
11 changed files with 772 additions and 45 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,8 @@
--- ---
issueRef: "#43" issueRef: "#43"
version: 5 version: 6
updatedBy: {"kind":"agent","agent_id":"dce19c75-9669-4e45-b8de-9950025157da"} updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1784667145901 updatedAt: 1784707900405
--- ---
# Ticket #43 — Cadrage consolidé v2 du système de plugins # Ticket #43 — Cadrage consolidé v2 du système de plugins

View File

@ -2,15 +2,15 @@
id: "63e80352-8ce1-4116-9ec3-b4cb3fc5c077" id: "63e80352-8ce1-4116-9ec3-b4cb3fc5c077"
number: 43 number: 43
title: "Systeme de plugins" title: "Systeme de plugins"
status: "open" status: "closed"
priority: "medium" priority: "medium"
sprint: null sprint: null
links: [] links: []
agentRefs: [] agentRefs: []
createdBy: {"kind":"user"} createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"dce19c75-9669-4e45-b8de-9950025157da"} updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
createdAt: 1783879315858 createdAt: 1783879315858
updatedAt: 1784667145901 updatedAt: 1784707900405
version: 5 version: 6
--- ---
Système de plugins/extensions pour IdeA (à la VSCode/Visual Studio) : permettre d'ajouter des menus (dropdown façon Panneaux/Paramètres), des items dans des menus existants, des types de layout custom (à la GitGraph), et des tools MCP. Système de plugins/extensions pour IdeA (à la VSCode/Visual Studio) : permettre d'ajouter des menus (dropdown façon Panneaux/Paramètres), des items dans des menus existants, des types de layout custom (à la GitGraph), et des tools MCP.

View File

@ -1,6 +1,6 @@
--- ---
issueRef: "#64" issueRef: "#64"
version: 5 version: 6
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} updatedBy: {"kind":"user"}
updatedAt: 1784193766706 updatedAt: 1784718418070
--- ---

View File

@ -2,16 +2,16 @@
id: "c8f1c5b3-7674-4c6c-bba5-bb2c5faf201b" id: "c8f1c5b3-7674-4c6c-bba5-bb2c5faf201b"
number: 64 number: 64
title: "Web : créer/ajouter un projet depuis le navigateur (folder browser serveur)" title: "Web : créer/ajouter un projet depuis le navigateur (folder browser serveur)"
status: "open" status: "closed"
priority: "medium" priority: "medium"
sprint: "028179b1-eaf4-41e9-9c1f-7c37125117e6" sprint: "028179b1-eaf4-41e9-9c1f-7c37125117e6"
links: [{"target":"#13","kind":"dependsOn"}] links: [{"target":"#13","kind":"dependsOn"}]
agentRefs: [] agentRefs: []
createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} updatedBy: {"kind":"user"}
createdAt: 1784183727404 createdAt: 1784183727404
updatedAt: 1784193766706 updatedAt: 1784718418070
version: 5 version: 6
--- ---
Issu de la validation live de #13 (mode client/serveur web). En web, le bouton « Browse » (choisir un dossier de projet) est inopérant : `pickFolder()` renvoie `UNSUPPORTED_ON_WEB` car il s'appuie sur le dialogue natif OS de Tauri, absent du navigateur. Sélectionner un projet EXISTANT est déjà couvert par la liste (list_projects/open_project). Il manque CRÉER/AJOUTER un projet = choisir un dossier côté SERVEUR. Issu de la validation live de #13 (mode client/serveur web). En web, le bouton « Browse » (choisir un dossier de projet) est inopérant : `pickFolder()` renvoie `UNSUPPORTED_ON_WEB` car il s'appuie sur le dialogue natif OS de Tauri, absent du navigateur. Sélectionner un projet EXISTANT est déjà couvert par la liste (list_projects/open_project). Il manque CRÉER/AJOUTER un projet = choisir un dossier côté SERVEUR.

View File

@ -1,6 +1,6 @@
--- ---
issueRef: "#7" issueRef: "#7"
version: 7 version: 8
updatedBy: {"kind":"user"} updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1783329459094 updatedAt: 1784718581033
--- ---

View File

@ -2,15 +2,15 @@
id: "9f6979fb-a68f-4660-9d57-cf69ea1daf85" id: "9f6979fb-a68f-4660-9d57-cf69ea1daf85"
number: 7 number: 7
title: "Gestion des session limite" title: "Gestion des session limite"
status: "qa" status: "closed"
priority: "high" priority: "high"
sprint: "d8f3f37b-87ca-4509-9116-45a99bc711df" sprint: "d8f3f37b-87ca-4509-9116-45a99bc711df"
links: [] links: []
agentRefs: [{"agentId":"a6ced819-b893-4213-b003-9e9dc79b9641","role":"assigned"}] agentRefs: [{"agentId":"a6ced819-b893-4213-b003-9e9dc79b9641","role":"assigned"}]
createdBy: {"kind":"user"} createdBy: {"kind":"user"}
updatedBy: {"kind":"user"} updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
createdAt: 1783167495082 createdAt: 1783167495082
updatedAt: 1783329459094 updatedAt: 1784718581033
version: 7 version: 8
--- ---
J'aimerais que IdeA puisse gérer les session limite des profile IA. Lorsqu'un profile IA atteint une session limite, j'aimerais que IdeA le sache, qu'il récupère l'heure et la date du reset et qu'il puisse automatiquement reprendre le travail une fois le reset fait. Lorsqu'une reprise automatique est prévue, il faut que l'utilisateur puisse cancel la reprise. Il est important de noter que les agent s'appelant entre eux avec des profile IA différents, il faut prendre en compte qu'un agent A qui appelle un agent B, peut voir l'agent B atteindre la session limite. IdeA devra savoir gérer ça correctement. J'aimerais que IdeA puisse gérer les session limite des profile IA. Lorsqu'un profile IA atteint une session limite, j'aimerais que IdeA le sache, qu'il récupère l'heure et la date du reset et qu'il puisse automatiquement reprendre le travail une fois le reset fait. Lorsqu'une reprise automatique est prévue, il faut que l'utilisateur puisse cancel la reprise. Il est important de noter que les agent s'appelant entre eux avec des profile IA différents, il faut prendre en compte qu'un agent A qui appelle un agent B, peut voir l'agent B atteindre la session limite. IdeA devra savoir gérer ça correctement.

View File

@ -0,0 +1,25 @@
---
issueRef: "#92"
version: 8
updatedBy: {"kind":"user"}
updatedAt: 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.

View File

@ -0,0 +1,16 @@
---
id: "9ba8d2f4-49fa-4536-a38e-891f1df3e3b7"
number: 92
title: "Configurer OpenCode avec un provider Opencode"
status: "open"
priority: "high"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784729443275
updatedAt: 1784788822167
version: 8
---
On peut actuellement utiliser un profile AI qui utilise OpenCode pour llamacpp. J'aimerais que l'on puisse configurer des profil AI OpenCode avec llamacpp comme actuellement, mais aussi en selectionnant un provider listé dans la commande /connect de OpenCode. Je pense que le mieux serait que lors de la création d'un profile AI OpenCode, il nous soit demandé si on souhaite utiliser LlamaCpp ou un provider OpenCode. Dans le cas d'un provider llamaCpp, on utilise la même chose qu'actuellement, dans l'autre cas on nous demande quel provider et il faudrait être capable de récupérer la liste fournie par OpenCode. Une fois le provider selectionné, il faudra que l'utilisateur puisse entrer une clé API car les providers opencodes en demadnent toujours un. Pour la partie utilisation ensuite d'opencode dans les agent, je pense que cette page peut aider: https://opencode.ai/docs/fr/cli/. On y trouve entre autre la commande pour se connecter avec opencode auth login. Le but est que la partie configuration se fasse dans les profil AI comme jusqu'à présent, et que l'utilisateur puisse directement attribuer un agent à son profile AI et le lancer sans configurer d'autre choses. OpenCode marche déjà correctement avec llamacpp, j'insiste sur le fait qu'on ne fait qu'ajouter la possibilité de configurer un provider autre que llamacpp

View File

@ -1,3 +1,3 @@
{ {
"nextNumber": 92 "nextNumber": 93
} }

View File

@ -77,13 +77,13 @@
"issueRef": "#7", "issueRef": "#7",
"path": "7", "path": "7",
"title": "Gestion des session limite", "title": "Gestion des session limite",
"status": "qa", "status": "closed",
"priority": "high", "priority": "high",
"sprint": "d8f3f37b-87ca-4509-9116-45a99bc711df", "sprint": "d8f3f37b-87ca-4509-9116-45a99bc711df",
"assignedAgentIds": [ "assignedAgentIds": [
"a6ced819-b893-4213-b003-9e9dc79b9641" "a6ced819-b893-4213-b003-9e9dc79b9641"
], ],
"updatedAt": 1783329459094 "updatedAt": 1784718581033
}, },
{ {
"issueRef": "#8", "issueRef": "#8",
@ -465,11 +465,11 @@
"issueRef": "#43", "issueRef": "#43",
"path": "43", "path": "43",
"title": "Systeme de plugins", "title": "Systeme de plugins",
"status": "open", "status": "closed",
"priority": "medium", "priority": "medium",
"sprint": null, "sprint": null,
"assignedAgentIds": [], "assignedAgentIds": [],
"updatedAt": 1784667145901 "updatedAt": 1784707900405
}, },
{ {
"issueRef": "#44", "issueRef": "#44",
@ -667,11 +667,11 @@
"issueRef": "#64", "issueRef": "#64",
"path": "64", "path": "64",
"title": "Web : créer/ajouter un projet depuis le navigateur (folder browser serveur)", "title": "Web : créer/ajouter un projet depuis le navigateur (folder browser serveur)",
"status": "open", "status": "closed",
"priority": "medium", "priority": "medium",
"sprint": "028179b1-eaf4-41e9-9c1f-7c37125117e6", "sprint": "028179b1-eaf4-41e9-9c1f-7c37125117e6",
"assignedAgentIds": [], "assignedAgentIds": [],
"updatedAt": 1784193766706 "updatedAt": 1784718418070
}, },
{ {
"issueRef": "#65", "issueRef": "#65",
@ -950,6 +950,16 @@
"a6ced819-b893-4213-b003-9e9dc79b9641" "a6ced819-b893-4213-b003-9e9dc79b9641"
], ],
"updatedAt": 1784652150003 "updatedAt": 1784652150003
},
{
"issueRef": "#92",
"path": "92",
"title": "Configurer OpenCode avec un provider Opencode",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784788822167
} }
] ]
} }