diff --git a/.ideai/idea-android-plugin.json b/.ideai/idea-android-plugin.json index 26a0019..52e4002 100644 --- a/.ideai/idea-android-plugin.json +++ b/.ideai/idea-android-plugin.json @@ -5,7 +5,7 @@ "probableAppModule": null, "projectId": "97b49ac2-8376-4aa3-8ea9-bf3ac81d0023", "projectRoot": "/home/anthony/Documents/Projects/IdeA", - "updatedAt": "2026-08-04T21:31:12.564Z" + "updatedAt": "2026-08-05T11:34:54.650Z" }, "ownerAgentId": null, "ownerAgentMapping": {}, @@ -15,7 +15,7 @@ }, "schemaVersion": 1, "selection": { - "activeModulePath": null, + "activeModulePath": "android/app", "debugApkPathByModule": {}, "selectedDeviceSerial": null }, diff --git a/.ideai/tickets/119/carnet.md b/.ideai/tickets/119/carnet.md index 34897f9..c4e7767 100644 --- a/.ideai/tickets/119/carnet.md +++ b/.ideai/tickets/119/carnet.md @@ -1,6 +1,6 @@ --- issueRef: "#119" -version: 3 -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1785748044163 +version: 4 +updatedBy: {"kind":"user"} +updatedAt: 1785881187569 --- diff --git a/.ideai/tickets/119/issue.md b/.ideai/tickets/119/issue.md index daa7cf1..4e57062 100644 --- a/.ideai/tickets/119/issue.md +++ b/.ideai/tickets/119/issue.md @@ -2,17 +2,17 @@ id: "b76431d7-f3a3-438f-ae3f-5648f5eda8ce" number: 119 title: "Refondre le système de skills IdeA en capacités agent découvrables" -status: "qa" +status: "closed" priority: "high" sprint: null links: [] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"user"} createdAt: 1785534242629 -updatedAt: 1785748044163 -version: 3 +updatedAt: 1785881187569 +version: 4 --- ## Constat diff --git a/.ideai/tickets/120/carnet.md b/.ideai/tickets/120/carnet.md index fdfe6b0..b94c173 100644 --- a/.ideai/tickets/120/carnet.md +++ b/.ideai/tickets/120/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#120" -version: 10 -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1785748044180 +version: 11 +updatedBy: {"kind":"user"} +updatedAt: 1785881187579 --- --- issueRef: "#120" diff --git a/.ideai/tickets/120/issue.md b/.ideai/tickets/120/issue.md index b492915..3abaf05 100644 --- a/.ideai/tickets/120/issue.md +++ b/.ideai/tickets/120/issue.md @@ -2,17 +2,17 @@ id: "f4218553-680a-4fbb-9514-a96eab79b8d8" number: 120 title: "Réinvestiguer l’installation de hello-plugin: écran noir / perte d’affichage IdeA" -status: "qa" +status: "closed" priority: "critical" sprint: null links: [{"target":"#116","kind":"relatesTo"},{"target":"#43","kind":"relatesTo"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"user"} createdAt: 1785534496259 -updatedAt: 1785748044180 -version: 10 +updatedAt: 1785881187579 +version: 11 --- ## Constat utilisateur diff --git a/.ideai/tickets/123/carnet.md b/.ideai/tickets/123/carnet.md index bc81dbe..8f40938 100644 --- a/.ideai/tickets/123/carnet.md +++ b/.ideai/tickets/123/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#123" -version: 4 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785670261241 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187586 --- ## Contexte Le besoin initial vient d’un futur plugin orienté développement Android, mais le périmètre validé pour ce chantier est strictement **SDK générique**. L’objectif n’est pas d’ajouter des API Android-first, mais de combler les trous du SDK public qui empêchent aujourd’hui tout plugin de développement un peu sérieux. diff --git a/.ideai/tickets/123/issue.md b/.ideai/tickets/123/issue.md index e1458e5..622a846 100644 --- a/.ideai/tickets/123/issue.md +++ b/.ideai/tickets/123/issue.md @@ -2,16 +2,16 @@ id: "0013caf7-bbc9-439f-82b2-9d23ed9e901a" number: 123 title: "SDK plugins: combler les capacités globales manquantes pour les plugins de développement outillés" -status: "qa" +status: "closed" priority: "high" sprint: null links: [] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662012603 -updatedAt: 1785670261241 -version: 4 +updatedAt: 1785881187586 +version: 5 --- Ticket parapluie pour structurer l’extension du SDK public des plugins IdeA afin de supporter des plugins de développement avancés sans introduire d’API métier spécifiques à une stack donnée. Le besoin initial vient du cas Android, mais le périmètre doit rester strictement transversal. \ No newline at end of file diff --git a/.ideai/tickets/124/carnet.md b/.ideai/tickets/124/carnet.md index 0391da6..efe4cd9 100644 --- a/.ideai/tickets/124/carnet.md +++ b/.ideai/tickets/124/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#124" -version: 4 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785666067073 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187593 --- ## Problème `WorkspaceService` public expose aujourd’hui seulement le projet courant, son root, et la lecture/écriture du contexte Markdown IdeA. Cela ne suffit pas pour un plugin de développement qui doit lire, écrire, lister ou surveiller les fichiers d’un projet. diff --git a/.ideai/tickets/124/issue.md b/.ideai/tickets/124/issue.md index df1fd95..6b5382c 100644 --- a/.ideai/tickets/124/issue.md +++ b/.ideai/tickets/124/issue.md @@ -2,16 +2,16 @@ id: "639787e1-83b5-49b7-a89f-3a6985129163" number: 124 title: "SDK plugins: exposer une API publique d’accès fichiers/workspace" -status: "qa" +status: "closed" priority: "critical" sprint: null links: [{"target":"#123","kind":"blocks"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662026640 -updatedAt: 1785666067073 -version: 4 +updatedAt: 1785881187593 +version: 5 --- Ajouter au SDK plugin une API publique de lecture/écriture/listing/watch dans le workspace projet, distincte du simple accès au contexte Markdown IdeA. \ No newline at end of file diff --git a/.ideai/tickets/125/carnet.md b/.ideai/tickets/125/carnet.md index 350e07c..7baecf9 100644 --- a/.ideai/tickets/125/carnet.md +++ b/.ideai/tickets/125/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#125" -version: 4 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785667057177 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187607 --- ## Problème Le SDK public permet seulement : diff --git a/.ideai/tickets/125/issue.md b/.ideai/tickets/125/issue.md index de20711..6abcfae 100644 --- a/.ideai/tickets/125/issue.md +++ b/.ideai/tickets/125/issue.md @@ -2,16 +2,16 @@ id: "78bb45fb-6320-4d75-8db2-1e2a9591219f" number: 125 title: "SDK plugins: exposer une API publique de lancement de commandes et tâches" -status: "qa" +status: "closed" priority: "critical" sprint: null links: [{"target":"#123","kind":"blocks"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662026655 -updatedAt: 1785667057177 -version: 4 +updatedAt: 1785881187607 +version: 5 --- Ajouter au SDK plugin une API publique pour lancer des commandes/outils externes et suivre leur exécution comme tâches IdeA, au-delà de l’observation des tâches existantes et du simple PTY interactif. \ No newline at end of file diff --git a/.ideai/tickets/126/carnet.md b/.ideai/tickets/126/carnet.md index 55d70f4..85bda06 100644 --- a/.ideai/tickets/126/carnet.md +++ b/.ideai/tickets/126/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#126" -version: 7 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785668062783 +version: 8 +updatedBy: {"kind":"user"} +updatedAt: 1785881187599 --- ## Problème Un plugin de dev a souvent besoin de savoir si un outillage externe existe, où il se trouve, quelle version est installée, et si l’environnement est valide. Le SDK public n’expose pas aujourd’hui cette capacité comme primitive générique. diff --git a/.ideai/tickets/126/issue.md b/.ideai/tickets/126/issue.md index ed97a20..029c3ec 100644 --- a/.ideai/tickets/126/issue.md +++ b/.ideai/tickets/126/issue.md @@ -2,16 +2,16 @@ id: "51d4f4b0-4482-4400-a0d5-9f88471581f0" number: 126 title: "SDK plugins: exposer une API publique de découverte/validation d’outillage externe" -status: "qa" +status: "closed" priority: "high" sprint: null links: [{"target":"#123","kind":"blocks"},{"target":"#124","kind":"dependsOn"},{"target":"#125","kind":"dependsOn"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662026684 -updatedAt: 1785668062783 -version: 7 +updatedAt: 1785881187599 +version: 8 --- Ajouter au SDK plugin une API publique pour détecter, valider et décrire des toolchains externes (exécutables, versions, variables d’environnement, prérequis) sans spécialiser le SDK pour une stack donnée. \ No newline at end of file diff --git a/.ideai/tickets/127/carnet.md b/.ideai/tickets/127/carnet.md index c5f4dfa..84d7214 100644 --- a/.ideai/tickets/127/carnet.md +++ b/.ideai/tickets/127/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#127" -version: 4 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785669121141 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187615 --- ## Problème Sans bus d’événements ou API de watch publique, un plugin doit poller l’état du host ou du workspace pour se tenir à jour. C’est coûteux, fragile et peu réactif. diff --git a/.ideai/tickets/127/issue.md b/.ideai/tickets/127/issue.md index b945330..ec2de12 100644 --- a/.ideai/tickets/127/issue.md +++ b/.ideai/tickets/127/issue.md @@ -2,16 +2,16 @@ id: "9b238559-9982-4a69-8795-99da8a46be1e" number: 127 title: "SDK plugins: exposer une API publique d’événements et de watch" -status: "qa" +status: "closed" priority: "high" sprint: null links: [{"target":"#123","kind":"blocks"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662026701 -updatedAt: 1785669121141 -version: 4 +updatedAt: 1785881187615 +version: 5 --- Ajouter au SDK plugin une API publique d’abonnement aux événements utiles du host et du projet: changements de fichiers, évolution des tâches, focus projet et autres signaux nécessaires pour éviter le polling côté plugin. \ No newline at end of file diff --git a/.ideai/tickets/128/carnet.md b/.ideai/tickets/128/carnet.md index 1548d21..f2ffb35 100644 --- a/.ideai/tickets/128/carnet.md +++ b/.ideai/tickets/128/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#128" -version: 4 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785670260985 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187622 --- ## Problème Le manifeste expose déjà des contributions `layouts`, mais la runtime publique ne formalise pas proprement l’enregistrement et le cycle de vie de ces layouts. L’exemple SDK actuel contourne la surface avec des casts ad hoc. diff --git a/.ideai/tickets/128/issue.md b/.ideai/tickets/128/issue.md index 33e3c55..fe023a7 100644 --- a/.ideai/tickets/128/issue.md +++ b/.ideai/tickets/128/issue.md @@ -2,16 +2,16 @@ id: "053f079d-1dfd-48bb-85a2-2dfa8d237999" number: 128 title: "SDK plugins: typer et stabiliser la runtime UI/layout publique" -status: "qa" +status: "closed" priority: "medium" sprint: null links: [{"target":"#123","kind":"blocks"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662026717 -updatedAt: 1785670260985 -version: 4 +updatedAt: 1785881187622 +version: 5 --- Formaliser la surface runtime publique pour les contributions UI/layout des plugins afin d’éviter les casts ad hoc et de permettre des panneaux/plugins de dev riches sur base stable. \ No newline at end of file diff --git a/.ideai/tickets/129/carnet.md b/.ideai/tickets/129/carnet.md index eee393b..245eb2d 100644 --- a/.ideai/tickets/129/carnet.md +++ b/.ideai/tickets/129/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#129" -version: 5 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785666067171 +version: 6 +updatedBy: {"kind":"user"} +updatedAt: 1785881187631 --- ## Problème Chaque plugin de développement devrait aujourd’hui rescanner lui-même le workspace pour reconstruire une vision de la structure projet. Cela duplique les heuristiques et rend l’écosystème fragile. diff --git a/.ideai/tickets/129/issue.md b/.ideai/tickets/129/issue.md index 5cb4b8d..fec1947 100644 --- a/.ideai/tickets/129/issue.md +++ b/.ideai/tickets/129/issue.md @@ -2,16 +2,16 @@ id: "550fe7ca-8a25-4529-be2e-2fd79c7ddde4" number: 129 title: "SDK plugins: exposer une API publique d’analyse/requête de structure projet" -status: "qa" +status: "closed" priority: "medium" sprint: null links: [{"target":"#123","kind":"blocks"},{"target":"#124","kind":"dependsOn"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662026738 -updatedAt: 1785666067171 -version: 5 +updatedAt: 1785881187631 +version: 6 --- Ajouter au SDK plugin une API publique pour interroger la structure d’un projet (fichiers, modules, graphes simples, conventions détectées) sans obliger chaque plugin à rescanner le workspace depuis zéro. \ No newline at end of file diff --git a/.ideai/tickets/130/carnet.md b/.ideai/tickets/130/carnet.md index d79dc7f..687b68c 100644 --- a/.ideai/tickets/130/carnet.md +++ b/.ideai/tickets/130/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#130" -version: 5 -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785669830933 +version: 6 +updatedBy: {"kind":"user"} +updatedAt: 1785881187639 --- ## Problème Un plugin de développement doit souvent lire ou modifier des documents structurés. Sans primitive publique, chaque plugin doit réimplémenter parsing, validation et patching, avec un risque élevé de corruption ou d’incohérence. diff --git a/.ideai/tickets/130/issue.md b/.ideai/tickets/130/issue.md index 1c16a94..89b5ca4 100644 --- a/.ideai/tickets/130/issue.md +++ b/.ideai/tickets/130/issue.md @@ -2,16 +2,16 @@ id: "07a76880-f176-4fc8-b1d3-732a88a8c837" number: 130 title: "SDK plugins: exposer une API publique de documents de configuration structurés" -status: "qa" +status: "closed" priority: "medium" sprint: null links: [{"target":"#123","kind":"blocks"},{"target":"#124","kind":"dependsOn"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"user"} createdAt: 1785662026750 -updatedAt: 1785669830933 -version: 5 +updatedAt: 1785881187639 +version: 6 --- Ajouter au SDK plugin une API publique pour lire/mettre à jour des documents de configuration structurés via un modèle générique plutôt que forcer chaque plugin à réimplémenter son parsing/patching. \ No newline at end of file diff --git a/.ideai/tickets/133/carnet.md b/.ideai/tickets/133/carnet.md index 1ddec84..d96e720 100644 --- a/.ideai/tickets/133/carnet.md +++ b/.ideai/tickets/133/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#133" -version: 4 -updatedBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedAt: 1785703664966 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187645 --- ## Décision d'architecture (2026-08-02) diff --git a/.ideai/tickets/133/issue.md b/.ideai/tickets/133/issue.md index c55ce4f..1d674d1 100644 --- a/.ideai/tickets/133/issue.md +++ b/.ideai/tickets/133/issue.md @@ -2,17 +2,17 @@ id: "f5296d8b-6bef-45c4-ac8a-cf6e0f90ae9c" number: 133 title: "Plugins: contrat de service des assets idea-plugin:// (multi-fichiers ESM) & confinement" -status: "qa" +status: "closed" priority: "high" sprint: null links: [] agentRefs: [{"agentId":"b4730d7f-c54d-4736-8a04-c6203aa2fd49","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} +updatedBy: {"kind":"user"} createdAt: 1785702640094 -updatedAt: 1785703664966 -version: 4 +updatedAt: 1785881187645 +version: 5 --- Bug diagnostiqué : `crates/app-tauri/src/plugins.rs:504-536` (`asset_allowed`) n'autorise que `main`/`icon` déclarés au manifeste, ou un chemin préfixé `assets/`. Tout import ESM relatif secondaire (`./constants.js`, `./core/x.js`) depuis le `main` est donc rejeté 403 → "Importing a module script failed." côté navigateur. Le SDK (sdk/IdeaSDK/README.md) documente `main: dist/index.js` comme point d'entrée sans jamais imposer un bundle mono-fichier, ce qui sous-entend un support multi-fichiers jamais réellement vérifié (l'exemple hello-plugin est mono-fichier). diff --git a/.ideai/tickets/134/carnet.md b/.ideai/tickets/134/carnet.md index bf40c02..6010df7 100644 --- a/.ideai/tickets/134/carnet.md +++ b/.ideai/tickets/134/carnet.md @@ -1,6 +1,6 @@ --- issueRef: "#134" -version: 3 -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1785707290184 +version: 4 +updatedBy: {"kind":"user"} +updatedAt: 1785881187652 --- diff --git a/.ideai/tickets/134/issue.md b/.ideai/tickets/134/issue.md index af57132..83ad364 100644 --- a/.ideai/tickets/134/issue.md +++ b/.ideai/tickets/134/issue.md @@ -2,17 +2,17 @@ id: "e98c3f80-9fd6-444a-be80-ad695809c71c" number: 134 title: "Plugins: servir tout fichier confiné du package installé (fix racine multi-fichiers ESM)" -status: "qa" +status: "closed" priority: "critical" sprint: null links: [{"target":"#133","kind":"dependsOn"}] agentRefs: [{"agentId":"fe887179-933f-47d4-960f-c3b06827f86c","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"user"} createdAt: 1785702651199 -updatedAt: 1785707290184 -version: 3 +updatedAt: 1785881187652 +version: 4 --- Implémente le contrat décidé en #133. diff --git a/.ideai/tickets/135/carnet.md b/.ideai/tickets/135/carnet.md index 12eda3d..8fbc84d 100644 --- a/.ideai/tickets/135/carnet.md +++ b/.ideai/tickets/135/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#135" -version: 4 -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1785708498776 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187659 --- ## Audit QA diff --git a/.ideai/tickets/135/issue.md b/.ideai/tickets/135/issue.md index 2591504..a94070e 100644 --- a/.ideai/tickets/135/issue.md +++ b/.ideai/tickets/135/issue.md @@ -2,17 +2,17 @@ id: "13442dae-7860-45e3-9287-31b9bde19170" number: 135 title: "Plugins: audit confinement install & désinstallation 100% propre" -status: "qa" +status: "closed" priority: "high" sprint: null links: [{"target":"#133","kind":"dependsOn"}] agentRefs: [{"agentId":"ab328d90-c307-4771-a3b6-6c56089c8506","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"user"} createdAt: 1785702662938 -updatedAt: 1785708498776 -version: 4 +updatedAt: 1785881187659 +version: 5 --- Applique le contrat de confinement/désinstallation décidé en #133. diff --git a/.ideai/tickets/136/carnet.md b/.ideai/tickets/136/carnet.md index c7631bb..655da63 100644 --- a/.ideai/tickets/136/carnet.md +++ b/.ideai/tickets/136/carnet.md @@ -1,6 +1,6 @@ --- issueRef: "#136" -version: 3 -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1785708478849 +version: 4 +updatedBy: {"kind":"user"} +updatedAt: 1785881187667 --- diff --git a/.ideai/tickets/136/issue.md b/.ideai/tickets/136/issue.md index d5068a0..e5cfe0e 100644 --- a/.ideai/tickets/136/issue.md +++ b/.ideai/tickets/136/issue.md @@ -2,17 +2,17 @@ id: "214e7c14-fab8-45ed-bb71-5f309a8479a6" number: 136 title: "SDK plugins: aligner doc/exemple sur le support multi-fichiers ESM" -status: "qa" +status: "closed" priority: "high" sprint: null links: [{"target":"#134","kind":"dependsOn"}] agentRefs: [{"agentId":"8f7da528-58df-4315-97e9-0562230ecc19","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"user"} createdAt: 1785702672090 -updatedAt: 1785708478849 -version: 3 +updatedAt: 1785881187667 +version: 4 --- Une fois #134 livré, aligner le SDK et sa documentation pour que le support multi-fichiers soit explicite et testé, pas seulement sous-entendu. diff --git a/.ideai/tickets/137/carnet.md b/.ideai/tickets/137/carnet.md index 94413ef..b61860f 100644 --- a/.ideai/tickets/137/carnet.md +++ b/.ideai/tickets/137/carnet.md @@ -1,6 +1,6 @@ --- issueRef: "#137" -version: 1 -updatedBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedAt: 1785702681696 +version: 2 +updatedBy: {"kind":"user"} +updatedAt: 1785881139749 --- diff --git a/.ideai/tickets/137/issue.md b/.ideai/tickets/137/issue.md index d0cdfef..65c3d95 100644 --- a/.ideai/tickets/137/issue.md +++ b/.ideai/tickets/137/issue.md @@ -2,17 +2,17 @@ id: "2ef9b71a-9869-4476-88b6-65aaefc993e1" number: 137 title: "QA: validation end-to-end plugin multi-fichiers ESM (chargement + désinstallation propre)" -status: "open" +status: "closed" priority: "critical" sprint: null links: [{"target":"#134","kind":"dependsOn"},{"target":"#136","kind":"dependsOn"}] agentRefs: [{"agentId":"ab328d90-c307-4771-a3b6-6c56089c8506","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} +updatedBy: {"kind":"user"} createdAt: 1785702681696 -updatedAt: 1785702681696 -version: 1 +updatedAt: 1785881139749 +version: 2 --- Validation réelle, sortie observée — pas seulement des tests unitaires — du fix multi-fichiers (#134) et de l'exemple SDK (#136). diff --git a/.ideai/tickets/138/carnet.md b/.ideai/tickets/138/carnet.md index aaec342..14813de 100644 --- a/.ideai/tickets/138/carnet.md +++ b/.ideai/tickets/138/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#138" -version: 4 -updatedBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} -updatedAt: 1785703680849 +version: 5 +updatedBy: {"kind":"user"} +updatedAt: 1785881187672 --- ## Décision d'architecture (2026-08-02) diff --git a/.ideai/tickets/138/issue.md b/.ideai/tickets/138/issue.md index 784f0fe..d895b98 100644 --- a/.ideai/tickets/138/issue.md +++ b/.ideai/tickets/138/issue.md @@ -2,17 +2,17 @@ id: "e33fd0ea-e7c6-40dc-a244-f158e44ac4a7" number: 138 title: "SDK plugins: contrat de persistance plugin-owned hors projet et effacement total à la désinstallation" -status: "qa" +status: "closed" priority: "critical" sprint: null links: [] agentRefs: [{"agentId":"b4730d7f-c54d-4736-8a04-c6203aa2fd49","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedBy: {"kind":"agent","agent_id":"b4730d7f-c54d-4736-8a04-c6203aa2fd49"} +updatedBy: {"kind":"user"} createdAt: 1785702748769 -updatedAt: 1785703680849 -version: 4 +updatedAt: 1785881187672 +version: 5 --- Le lot #133/#135 traite déjà le confinement du package installé et l’absence d’écritures parasites au runtime, mais il reste un trou produit/API majeur : le SDK public et son exemple `sdk/IdeaSDK/examples/hello-plugin` montrent encore des écritures plugin sous `.ideai/hello-plugin.txt` et `.ideai/hello-plugin.json`, alors que l’objectif utilisateur est un modèle type VSCode où l’état propre au plugin ne pollue jamais le projet et disparaît entièrement à la désinstallation. diff --git a/.ideai/tickets/139/carnet.md b/.ideai/tickets/139/carnet.md index 1b307f9..092d371 100644 --- a/.ideai/tickets/139/carnet.md +++ b/.ideai/tickets/139/carnet.md @@ -1,6 +1,6 @@ --- issueRef: "#139" -version: 3 -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1785709504027 +version: 4 +updatedBy: {"kind":"user"} +updatedAt: 1785881187678 --- diff --git a/.ideai/tickets/139/issue.md b/.ideai/tickets/139/issue.md index 687126a..7e8eb19 100644 --- a/.ideai/tickets/139/issue.md +++ b/.ideai/tickets/139/issue.md @@ -2,16 +2,16 @@ id: "a5bac900-806d-4e13-866f-7ebae686a43d" number: 139 title: "SDK plugins: aligner l’API publique et les exemples sur une persistance plugin-owned hors projet" -status: "qa" +status: "closed" priority: "critical" sprint: null links: [{"target":"#138","kind":"dependsOn"}] agentRefs: [{"agentId":"fe887179-933f-47d4-960f-c3b06827f86c","role":"assigned"},{"agentId":"8f7da528-58df-4315-97e9-0562230ecc19","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"user"} createdAt: 1785702774592 -updatedAt: 1785709504027 -version: 3 +updatedAt: 1785881187678 +version: 4 --- Implémenter le contrat décidé en #138. Ce ticket ne doit démarrer qu’après arbitrage architecture, car la forme exacte de l’API publique peut varier (`ctx.storage` canonique seul, ou nouvelle API publique de document structuré plugin-scopé hors projet).\n\nPérimètre attendu après #138 :\n1. Faire de la voie canonique plugin-owned celle décidée en #138, et retirer l’incitation actuelle à écrire l’état interne du plugin dans le workspace utilisateur / `.ideai/`.\n2. Mettre à jour `sdk/IdeaSDK/README.md` et `sdk/IdeaSDK/examples/hello-plugin` pour que l’exemple de référence n’écrive plus `.ideai/hello-plugin.txt` ni `.ideai/hello-plugin.json` comme état interne par défaut.\n3. Si #138 décide qu’une nouvelle API SDK publique est nécessaire (par ex. document structuré plugin-scopé hors projet), l’exposer de bout en bout : types SDK, façade runtime publique, adaptateurs hôte nécessaires, et documentation d’usage.\n4. Garantir que la désinstallation du plugin purge aussi l’état plugin-owned correspondant, conformément au contrat #138, sans supprimer les fichiers métier du projet que le plugin aurait modifiés explicitement.\n\nCritères d’acceptation :\n- Le README SDK sépare explicitement données project-owned vs plugin-owned.\n- L’exemple de référence n’emploie plus `.ideai/...` pour stocker son état interne.\n- Si une nouvelle API publique a été décidée en #138, elle est documentée, typée et couverte par des tests.\n- La purge de l’état plugin-owned à la désinstallation est prouvée par tests ciblés sur le chemin réellement choisi par #138.\n- Aucun message public du SDK ne laisse entendre que `.ideai/` est le lieu normal de persistance interne d’un plugin. \ No newline at end of file diff --git a/.ideai/tickets/147/carnet.md b/.ideai/tickets/147/carnet.md index 874d551..7e61957 100644 --- a/.ideai/tickets/147/carnet.md +++ b/.ideai/tickets/147/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#147" -version: 7 +version: 8 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1785882543204 +updatedAt: 1785924224928 --- ## Cadrage consolidé diff --git a/.ideai/tickets/147/issue.md b/.ideai/tickets/147/issue.md index a9e2df0..1bafd7d 100644 --- a/.ideai/tickets/147/issue.md +++ b/.ideai/tickets/147/issue.md @@ -2,7 +2,7 @@ id: "64a8f704-df3e-40f4-9148-d39ae4f86af1" number: 147 title: "[UI] créer une CLI custom alternative" -status: "inProgress" +status: "closed" priority: "medium" sprint: null links: [] @@ -11,8 +11,8 @@ attachments: [{"id":"06f4e827-d693-4190-9c53-186585602006","filename":"task_comp createdBy: {"kind":"user"} updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} createdAt: 1785877963139 -updatedAt: 1785882543204 -version: 7 +updatedAt: 1785924224928 +version: 8 --- J'aimerais une CLI alternative pour mes agents. Cette CLI doit contenir bine entendu la barre de chat, ainsi que pour le reste de l'écran les bulle de conversation de l'agent et dde l'utilisateur. Cette CLI doit etre de la meme forme que ce qu'on peut voir dans les CLI des agents IA dans les IDE de code. Je veux voir s'afficher les reflexions de l'IA etc. La CLI communiquera en headless avec l'agent. diff --git a/.ideai/tickets/148/carnet.md b/.ideai/tickets/148/carnet.md new file mode 100644 index 0000000..4a61ee7 --- /dev/null +++ b/.ideai/tickets/148/carnet.md @@ -0,0 +1,6 @@ +--- +issueRef: "#148" +version: 3 +updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedAt: 1785928836678 +--- diff --git a/.ideai/tickets/148/issue.md b/.ideai/tickets/148/issue.md new file mode 100644 index 0000000..f9b24af --- /dev/null +++ b/.ideai/tickets/148/issue.md @@ -0,0 +1,17 @@ +--- +id: "1ec75572-ecfa-47f9-a051-2eeb434c65a7" +number: 148 +title: "CLI custom: structured session introuvable au lancement" +status: "closed" +priority: "high" +sprint: null +links: [] +agentRefs: [{"agentId":"8f7da528-58df-4315-97e9-0562230ecc19","role":"assigned"}] +attachments: [] +createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +createdAt: 1785927987793 +updatedAt: 1785928836678 +version: 3 +--- +Bug report utilisateur du 2026-08-05: lors du lancement de la CLI custom, l'app échoue avec `not found: structured session 86248c8d-9c67-4512-872b-87b0213a625e`. Diagnostic Architecture: trou de contrat frontend dans `CustomAgentChatView` — seul `reattach_agent_chat` au mount gère `NOT_FOUND`; `send()` et `cancel()` propagent encore l'erreur brute, et le reattach post-launch avale toute erreur. Objectif: centraliser la récupération de session structurée, relancer proprement sur `NOT_FOUND`, couvrir par tests réels, puis rebuild l'AppImage Linux. \ No newline at end of file diff --git a/.ideai/tickets/counter.json b/.ideai/tickets/counter.json index 5c6092f..044397e 100644 --- a/.ideai/tickets/counter.json +++ b/.ideai/tickets/counter.json @@ -1,3 +1,3 @@ { - "nextNumber": 148 + "nextNumber": 149 } \ No newline at end of file diff --git a/.ideai/tickets/index.json b/.ideai/tickets/index.json index d837f78..798a8d0 100644 --- a/.ideai/tickets/index.json +++ b/.ideai/tickets/index.json @@ -1502,7 +1502,7 @@ "issueRef": "#119", "path": "119", "title": "Refondre le système de skills IdeA en capacités agent découvrables", - "status": "qa", + "status": "closed", "priority": "high", "sprint": null, "assignedAgentIds": [], @@ -1510,13 +1510,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785748044163 + "updatedAt": 1785881187569 }, { "issueRef": "#120", "path": "120", "title": "Réinvestiguer l’installation de hello-plugin: écran noir / perte d’affichage IdeA", - "status": "qa", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [], @@ -1524,7 +1524,7 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785748044180 + "updatedAt": 1785881187579 }, { "issueRef": "#121", @@ -1559,7 +1559,7 @@ "issueRef": "#123", "path": "123", "title": "SDK plugins: combler les capacités globales manquantes pour les plugins de développement outillés", - "status": "qa", + "status": "closed", "priority": "high", "sprint": null, "assignedAgentIds": [], @@ -1567,13 +1567,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785670261241 + "updatedAt": 1785881187586 }, { "issueRef": "#124", "path": "124", "title": "SDK plugins: exposer une API publique d’accès fichiers/workspace", - "status": "qa", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [], @@ -1581,13 +1581,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785666067073 + "updatedAt": 1785881187593 }, { "issueRef": "#125", "path": "125", "title": "SDK plugins: exposer une API publique de lancement de commandes et tâches", - "status": "qa", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [], @@ -1595,13 +1595,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785667057177 + "updatedAt": 1785881187607 }, { "issueRef": "#126", "path": "126", "title": "SDK plugins: exposer une API publique de découverte/validation d’outillage externe", - "status": "qa", + "status": "closed", "priority": "high", "sprint": null, "assignedAgentIds": [], @@ -1609,13 +1609,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785668062783 + "updatedAt": 1785881187599 }, { "issueRef": "#127", "path": "127", "title": "SDK plugins: exposer une API publique d’événements et de watch", - "status": "qa", + "status": "closed", "priority": "high", "sprint": null, "assignedAgentIds": [], @@ -1623,13 +1623,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785669121141 + "updatedAt": 1785881187615 }, { "issueRef": "#128", "path": "128", "title": "SDK plugins: typer et stabiliser la runtime UI/layout publique", - "status": "qa", + "status": "closed", "priority": "medium", "sprint": null, "assignedAgentIds": [], @@ -1637,13 +1637,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785670260985 + "updatedAt": 1785881187622 }, { "issueRef": "#129", "path": "129", "title": "SDK plugins: exposer une API publique d’analyse/requête de structure projet", - "status": "qa", + "status": "closed", "priority": "medium", "sprint": null, "assignedAgentIds": [], @@ -1651,13 +1651,13 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785666067171 + "updatedAt": 1785881187631 }, { "issueRef": "#130", "path": "130", "title": "SDK plugins: exposer une API publique de documents de configuration structurés", - "status": "qa", + "status": "closed", "priority": "medium", "sprint": null, "assignedAgentIds": [], @@ -1665,7 +1665,7 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785669830933 + "updatedAt": 1785881187639 }, { "issueRef": "#131", @@ -1699,7 +1699,7 @@ "issueRef": "#133", "path": "133", "title": "Plugins: contrat de service des assets idea-plugin:// (multi-fichiers ESM) & confinement", - "status": "qa", + "status": "closed", "priority": "high", "sprint": null, "assignedAgentIds": [ @@ -1709,13 +1709,13 @@ "kind": "agent", "agent_id": "b4730d7f-c54d-4736-8a04-c6203aa2fd49" }, - "updatedAt": 1785703664966 + "updatedAt": 1785881187645 }, { "issueRef": "#134", "path": "134", "title": "Plugins: servir tout fichier confiné du package installé (fix racine multi-fichiers ESM)", - "status": "qa", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [ @@ -1725,13 +1725,13 @@ "kind": "agent", "agent_id": "b4730d7f-c54d-4736-8a04-c6203aa2fd49" }, - "updatedAt": 1785707290184 + "updatedAt": 1785881187652 }, { "issueRef": "#135", "path": "135", "title": "Plugins: audit confinement install & désinstallation 100% propre", - "status": "qa", + "status": "closed", "priority": "high", "sprint": null, "assignedAgentIds": [ @@ -1741,13 +1741,13 @@ "kind": "agent", "agent_id": "b4730d7f-c54d-4736-8a04-c6203aa2fd49" }, - "updatedAt": 1785708498776 + "updatedAt": 1785881187659 }, { "issueRef": "#136", "path": "136", "title": "SDK plugins: aligner doc/exemple sur le support multi-fichiers ESM", - "status": "qa", + "status": "closed", "priority": "high", "sprint": null, "assignedAgentIds": [ @@ -1757,13 +1757,13 @@ "kind": "agent", "agent_id": "b4730d7f-c54d-4736-8a04-c6203aa2fd49" }, - "updatedAt": 1785708478849 + "updatedAt": 1785881187667 }, { "issueRef": "#137", "path": "137", "title": "QA: validation end-to-end plugin multi-fichiers ESM (chargement + désinstallation propre)", - "status": "open", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [ @@ -1773,13 +1773,13 @@ "kind": "agent", "agent_id": "b4730d7f-c54d-4736-8a04-c6203aa2fd49" }, - "updatedAt": 1785702681696 + "updatedAt": 1785881139749 }, { "issueRef": "#138", "path": "138", "title": "SDK plugins: contrat de persistance plugin-owned hors projet et effacement total à la désinstallation", - "status": "qa", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [ @@ -1789,13 +1789,13 @@ "kind": "agent", "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" }, - "updatedAt": 1785703680849 + "updatedAt": 1785881187672 }, { "issueRef": "#139", "path": "139", "title": "SDK plugins: aligner l’API publique et les exemples sur une persistance plugin-owned hors projet", - "status": "qa", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [ @@ -1806,7 +1806,7 @@ "kind": "agent", "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" }, - "updatedAt": 1785709504027 + "updatedAt": 1785881187678 }, { "issueRef": "#140", @@ -1921,14 +1921,30 @@ "issueRef": "#147", "path": "147", "title": "[UI] créer une CLI custom alternative", - "status": "inProgress", + "status": "closed", "priority": "medium", "sprint": null, "assignedAgentIds": [], "createdBy": { "kind": "user" }, - "updatedAt": 1785880207496 + "updatedAt": 1785924224928 + }, + { + "issueRef": "#148", + "path": "148", + "title": "CLI custom: structured session introuvable au lancement", + "status": "closed", + "priority": "high", + "sprint": null, + "assignedAgentIds": [ + "8f7da528-58df-4315-97e9-0562230ecc19" + ], + "createdBy": { + "kind": "agent", + "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" + }, + "updatedAt": 1785928836678 } ] } \ No newline at end of file