chore(tickets): mise à jour index et tickets SDK plugins #123-#130

This commit is contained in:
2026-08-02 13:36:43 +02:00
parent 8c4f1ea2e3
commit a051b5299a
18 changed files with 530 additions and 1 deletions

View File

@ -0,0 +1,39 @@
---
issueRef: "#123"
version: 4
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785670261241
---
## Contexte
Le besoin initial vient dun futur plugin orienté développement Android, mais le périmètre validé pour ce chantier est strictement **SDK générique**. Lobjectif nest pas dajouter des API Android-first, mais de combler les trous du SDK public qui empêchent aujourdhui tout plugin de développement un peu sérieux.
## Ce qui existe déjà
- Manifest public `idea-plugin.json`
- Runtime `activate(ctx)`
- `commands`, `storage`, `logger`
- `services.workspace`, `services.tasks`, `services.terminal`
- Contributions `menus`, `menuItems`, `layouts`, `mcpServers`
## Problème
Le SDK public actuel est volontairement minimal. Il permet des plugins simples, mais pas un plugin doutillage qui doit agir sur un workspace, lancer des outils externes, réagir aux événements du host, afficher une UI riche, ou analyser la structure dun projet.
## Décision de cadrage
Découper le besoin en tickets transverses, indépendants autant que possible.
Ordre de priorité retenu :
1. `#124` API fichiers/workspace
2. `#125` API lancement de commandes et tâches
3. `#126` API découverte/validation doutillage externe
4. `#127` API dévénements et de watch
5. `#128` runtime UI/layout publique
6. `#129` API danalyse/requête de structure projet
7. `#130` API de documents de configuration structurés
## Garde-fous
- Pas dAPI spécifique Android dans ce lot.
- Préserver une frontière SDK public vs runtime interne.
- Favoriser des primitives génériques réutilisables pour Android, iOS, Node, Python, Docker, etc.
- Éviter de forcer les plugins à dépendre de casts ad hoc ou dobjets runtime internes.
## Définition de done du parapluie
Le parapluie est clôturable quand les tickets enfants retenus pour le MVP sont livrés ou explicitement re-scopeés avec arbitrage.

View File

@ -0,0 +1,17 @@
---
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"
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"}
createdAt: 1785662012603
updatedAt: 1785670261241
version: 4
---
Ticket parapluie pour structurer lextension du SDK public des plugins IdeA afin de supporter des plugins de développement avancés sans introduire dAPI métier spécifiques à une stack donnée. Le besoin initial vient du cas Android, mais le périmètre doit rester strictement transversal.

View File

@ -0,0 +1,39 @@
---
issueRef: "#124"
version: 4
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785666067073
---
## Problème
`WorkspaceService` public expose aujourdhui 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 dun projet.
## Pourquoi cest global
Ce besoin na rien de spécifique à Android. Tout plugin de dev outillé doit pouvoir manipuler le workspace : configs, manifests, scripts, sources, fichiers générés, assets, etc.
## Ce que ce ticket doit produire
Une API publique de workspace/fichiers permettant au minimum :
- lecture de fichier texte/binaire
- écriture atomique ou contrôlée
- listing de répertoires
- existence/stat basiques
- résolution sûre de chemins dans le project root
- capacité de watch ou point dextension compatible avec `#127`
## Contraintes darchitecture
- API strictement publique côté SDK TypeScript.
- Aucun accès direct aux objets runtime internes.
- Respect du sandboxing et du project root.
- Contrat clair sur les erreurs, encodages, chemins hors-root et fichiers absents.
## Non-objectifs
- Pas de parser Gradle/XML/JSON dans ce ticket.
- Pas danalyse sémantique du projet.
- Pas de conventions Android codées en dur.
## Dépendances
- Bloque `#126`, `#129`, `#130`.
## Critères dacceptation
- Un plugin peut lire/écrire/lister dans le workspace sans cast interne.
- Le contrat gère explicitement les chemins invalides/hors-root.
- La documentation SDK montre un exemple simple de manipulation de fichiers.

View File

@ -0,0 +1,17 @@
---
id: "639787e1-83b5-49b7-a89f-3a6985129163"
number: 124
title: "SDK plugins: exposer une API publique daccès fichiers/workspace"
status: "qa"
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"}
createdAt: 1785662026640
updatedAt: 1785666067073
version: 4
---
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.

View File

@ -0,0 +1,40 @@
---
issueRef: "#125"
version: 4
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785667057177
---
## Problème
Le SDK public permet seulement :
- dobserver/contrôler des background tasks existantes
- douvrir un PTY interactif
Il manque une API publique pour **démarrer** une commande/outillage externe de façon intégrée à IdeA.
## Pourquoi cest global
Le besoin est transversal à tous les plugins de développement : build, test, lint, génération, outils CLI, pipelines locaux, simulateurs, wrappers maison.
## Ce que ce ticket doit produire
Une API publique de lancement de commandes/tâches permettant au minimum :
- exécuter une commande avec `cwd`, args, env
- choisir un mode tracked/background task plutôt quun PTY brut
- suivre statut, exit code, stdout/stderr
- annuler / éventuellement relancer
- corréler le run avec le modèle Work dIdeA
## Contraintes darchitecture
- Ne pas confondre terminal interactif et task runner.
- Contrat stable sur environnement, cwd, timeouts éventuels, sortie et erreurs.
- Le plugin ne doit pas avoir à bricoler une session PTY pour lancer un build.
## Non-objectifs
- Pas de sémantique Android/Gradle/adb.
- Pas dorchestration multi-étapes spécifique à une stack.
## Dépendances
- Bloque `#126`.
## Critères dacceptation
- Un plugin peut lancer une commande externe sans passer par un cast interne ni un PTY interactif.
- Lexécution remonte un état observable et un résultat terminal clair.
- Le contrat est documenté côté SDK avec exemple de commande simple.

View File

@ -0,0 +1,17 @@
---
id: "78bb45fb-6320-4d75-8db2-1e2a9591219f"
number: 125
title: "SDK plugins: exposer une API publique de lancement de commandes et tâches"
status: "qa"
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"}
createdAt: 1785662026655
updatedAt: 1785667057177
version: 4
---
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 lobservation des tâches existantes et du simple PTY interactif.

View File

@ -0,0 +1,36 @@
---
issueRef: "#126"
version: 7
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785668062783
---
## 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 lenvironnement est valide. Le SDK public nexpose pas aujourdhui cette capacité comme primitive générique.
## Pourquoi cest global
Ce besoin vaut pour Android SDK, Java, Node, Python, Docker, Go, Rust toolchain, etc. Le ticket doit fournir une abstraction générique de découverte/validation doutillage, pas une API dédiée Android.
## Ce que ce ticket doit produire
Une API publique permettant idéalement :
- résolution dun exécutable ou dune toolchain par nom/id
- lecture de version
- inspection de variables denvironnement pertinentes
- validation de prérequis déclaratifs
- restitution dun diagnostic structuré exploitable par une UI plugin
## Contraintes darchitecture
- La source de vérité peut sappuyer sur fichiers, env et exécution doutils, mais lAPI exposée doit rester stable et agnostique.
- Ne pas figer de modèle métier Android.
## Dépendances
- Dépend de `#124` pour laccès workspace/config.
- Dépend de `#125` pour lexécution contrôlée des commandes de détection.
## Non-objectifs
- Pas de gestion démulateur/device manager.
- Pas dinstallation automatique dune toolchain dans ce ticket.
## Critères dacceptation
- Un plugin peut diagnostiquer la présence/absence dun outillage externe de façon structurée.
- Le diagnostic est assez générique pour servir plusieurs stacks.
- La doc SDK montre un cas simple de détection dexécutable/version.

View File

@ -0,0 +1,17 @@
---
id: "51d4f4b0-4482-4400-a0d5-9f88471581f0"
number: 126
title: "SDK plugins: exposer une API publique de découverte/validation doutillage externe"
status: "qa"
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"}
createdAt: 1785662026684
updatedAt: 1785668062783
version: 7
---
Ajouter au SDK plugin une API publique pour détecter, valider et décrire des toolchains externes (exécutables, versions, variables denvironnement, prérequis) sans spécialiser le SDK pour une stack donnée.

View File

@ -0,0 +1,35 @@
---
issueRef: "#127"
version: 4
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785669121141
---
## 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. Cest coûteux, fragile et peu réactif.
## Pourquoi cest global
Tout plugin de dev outillé peut avoir besoin de réagir à :
- changement de fichier
- fin/échec dune tâche
- changement de projet courant
- autres événements système ou host pertinents
## Ce que ce ticket doit produire
Une API publique dabonnement permettant au minimum :
- souscription/désinscription propre
- typage minimal des événements publics
- événements documentés et versionnables
- stratégie claire sur rétention/perte dévénements
## Contraintes darchitecture
- Exposer uniquement des événements publics stables.
- Ne pas refléter brut de décoffrage les événements internes du host.
- Bien définir les garanties: best effort vs livraison fiable.
## Non-objectifs
- Pas de protocole temps réel cross-process complexe si non nécessaire.
- Pas dévénements spécifiques Android.
## Critères dacceptation
- Un plugin peut se mettre à jour sur changements du workspace/host sans polling permanent.
- LAPI de subscription est proprement disposable et documentée.

View File

@ -0,0 +1,17 @@
---
id: "9b238559-9982-4a69-8795-99da8a46be1e"
number: 127
title: "SDK plugins: exposer une API publique dévénements et de watch"
status: "qa"
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"}
createdAt: 1785662026701
updatedAt: 1785669121141
version: 4
---
Ajouter au SDK plugin une API publique dabonnement 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.

View File

@ -0,0 +1,31 @@
---
issueRef: "#128"
version: 4
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785670260985
---
## Problème
Le manifeste expose déjà des contributions `layouts`, mais la runtime publique ne formalise pas proprement lenregistrement et le cycle de vie de ces layouts. Lexemple SDK actuel contourne la surface avec des casts ad hoc.
## Pourquoi cest global
Ce nest pas spécifique à Android: tout plugin de dev peut vouloir afficher un panneau détat, un tableau, un viewer de logs, une vue de diagnostic, etc.
## Ce que ce ticket doit produire
Une runtime UI/layout publique stable permettant au minimum :
- enregistrement typé dun layout
- props publiques documentées
- cycle de vie clair
- persistance/lecture de state si le host la supporte
- retrait propre via disposable
## Contraintes darchitecture
- Pas de dépendance à des détails runtime privés.
- Contrat explicite sur le rendu et la sérialisation du state plugin.
## Non-objectifs
- Pas dimposer un design system plugin complet.
- Pas dAPI spécifique aux vues Android.
## Critères dacceptation
- Lexemple SDK na plus besoin de cast ad hoc pour enregistrer un layout.
- La surface publique suffit pour un panneau plugin de dev non trivial.

View File

@ -0,0 +1,17 @@
---
id: "053f079d-1dfd-48bb-85a2-2dfa8d237999"
number: 128
title: "SDK plugins: typer et stabiliser la runtime UI/layout publique"
status: "qa"
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"}
createdAt: 1785662026717
updatedAt: 1785670260985
version: 4
---
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.

View File

@ -0,0 +1,30 @@
---
issueRef: "#129"
version: 5
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785666067171
---
## Problème
Chaque plugin de développement devrait aujourdhui rescanner lui-même le workspace pour reconstruire une vision de la structure projet. Cela duplique les heuristiques et rend lécosystème fragile.
## Pourquoi cest global
Android nest quun cas parmi dautres. Les plugins pour monorepos JS, workspaces Rust, Python multi-env, etc. ont tous besoin dune lecture structurée minimale du projet.
## Ce que ce ticket doit produire
Une API publique danalyse/requête permettant idéalement :
- liste de fichiers ou sous-ensembles pertinents
- conventions détectées
- modules/units logiques quand connus
- graphes simples ou métadonnées projet de base
- résultats structurés et bornés, pas un AST universel magique
## Dépendances
- Dépend de `#124` car lanalyse repose au minimum sur laccès contrôlé au workspace.
## Non-objectifs
- Pas dindexation sémantique profonde de tous les langages.
- Pas de modèle Android-only (Gradle modules, variants, etc.) dans lAPI publique de base.
## Critères dacceptation
- Un plugin peut interroger la structure du projet sans rescanner tout le disque lui-même.
- Le contrat reste utile à plusieurs stacks et ne fuit pas des abstractions internes.

View File

@ -0,0 +1,17 @@
---
id: "550fe7ca-8a25-4529-be2e-2fd79c7ddde4"
number: 129
title: "SDK plugins: exposer une API publique danalyse/requête de structure projet"
status: "qa"
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"}
createdAt: 1785662026738
updatedAt: 1785666067171
version: 5
---
Ajouter au SDK plugin une API publique pour interroger la structure dun projet (fichiers, modules, graphes simples, conventions détectées) sans obliger chaque plugin à rescanner le workspace depuis zéro.

View File

@ -0,0 +1,31 @@
---
issueRef: "#130"
version: 5
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedAt: 1785669830933
---
## 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 dincohérence.
## Pourquoi cest global
Le besoin concerne JSON, YAML, TOML, XML, propriétés, DSL de config, et potentiellement dautres formats. Android nest quun consommateur parmi dautres.
## Ce que ce ticket doit produire
Une API publique de documents/config structurés permettant idéalement :
- lecture dun document typé ou semi-structuré
- édition contrôlée/patch ciblé
- sérialisation stable
- erreurs structurées
- capacité dévolution format par format
## Dépendances
- Dépend de `#124` car il faut dabord un accès fichier/workspace public.
## Garde-fous
- Commencer petit si nécessaire; ne pas promettre tous les formats dun coup.
- Préférer une abstraction extensible plutôt quun parser universel monolithique.
- Ne pas embarquer des helpers Android-only.
## Critères dacceptation
- Le SDK expose une primitive réutilisable pour lire et mettre à jour un document de config sans bricolage spécifique par plugin.
- Le contrat précise clairement quels formats sont supportés dans le premier lot.

View File

@ -0,0 +1,17 @@
---
id: "07a76880-f176-4fc8-b1d3-732a88a8c837"
number: 130
title: "SDK plugins: exposer une API publique de documents de configuration structurés"
status: "qa"
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"}
createdAt: 1785662026750
updatedAt: 1785669830933
version: 5
---
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.

View File

@ -1,3 +1,3 @@
{
"nextNumber": 123
"nextNumber": 131
}

View File

@ -1594,6 +1594,118 @@
"kind": "user"
},
"updatedAt": 1785592528432
},
{
"issueRef": "#123",
"path": "123",
"title": "SDK plugins: combler les capacités globales manquantes pour les plugins de développement outillés",
"status": "qa",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785670261241
},
{
"issueRef": "#124",
"path": "124",
"title": "SDK plugins: exposer une API publique daccès fichiers/workspace",
"status": "qa",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785666067073
},
{
"issueRef": "#125",
"path": "125",
"title": "SDK plugins: exposer une API publique de lancement de commandes et tâches",
"status": "qa",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785667057177
},
{
"issueRef": "#126",
"path": "126",
"title": "SDK plugins: exposer une API publique de découverte/validation doutillage externe",
"status": "qa",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785668062783
},
{
"issueRef": "#127",
"path": "127",
"title": "SDK plugins: exposer une API publique dévénements et de watch",
"status": "qa",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785669121141
},
{
"issueRef": "#128",
"path": "128",
"title": "SDK plugins: typer et stabiliser la runtime UI/layout publique",
"status": "qa",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785670260985
},
{
"issueRef": "#129",
"path": "129",
"title": "SDK plugins: exposer une API publique danalyse/requête de structure projet",
"status": "qa",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785666067171
},
{
"issueRef": "#130",
"path": "130",
"title": "SDK plugins: exposer une API publique de documents de configuration structurés",
"status": "qa",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [],
"createdBy": {
"kind": "agent",
"agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641"
},
"updatedAt": 1785669830933
}
]
}