|
|
|
|
@ -1,8 +1,8 @@
|
|
|
|
|
---
|
|
|
|
|
issueRef: "#285"
|
|
|
|
|
version: 4
|
|
|
|
|
version: 8
|
|
|
|
|
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
|
|
|
|
updatedAt: 1788880858861
|
|
|
|
|
updatedAt: 1788885132878
|
|
|
|
|
---
|
|
|
|
|
## 2026-09-08 - Clarification SDK pluginRoot
|
|
|
|
|
|
|
|
|
|
@ -21,3 +21,69 @@ QA : VERT. Commandes reelles executees dans `sdk/IdeaSDK` : `git status --short
|
|
|
|
|
Git : commits locaux dans le submodule `sdk/IdeaSDK` : `5f9c2f9` (`docs(sdk): clarify pluginRoot scope for runtime plugins — #285`) puis merge local `68019de` sur `develop`. Pas de push. Le pointeur du depot parent est volontairement laisse sur `7db819c` et le submodule reparké dessus pour eviter de melanger avec le travail #284 en cours ; le bump sera fait plus tard par Git avec le sync local approprie. L'utilisateur UnityPlugin peut reprendre/mettre a jour le sous-module vers `68019de`.
|
|
|
|
|
|
|
|
|
|
Risque residuel : validation documentaire uniquement, pas de test runtime host sur la substitution `${pluginRoot}` des MCP servers. Docs-only, pas de rebuild AppImage requis.
|
|
|
|
|
|
|
|
|
|
## 2026-09-08 - API runtime officielle `ctx.pluginRoot`
|
|
|
|
|
|
|
|
|
|
Le constat documentaire precedent est remplace par une implementation runtime : le catalogue host projette la racine canonique du package installe actif, le DTO la transporte sous `pluginRoot`, et le loader l'injecte dans `activate(ctx)`. Le SDK expose ce champ obligatoire dans `ActivateContext`. L'exemple hello-plugin execute un script inclus dans son archive en construisant son chemin depuis `ctx.pluginRoot`.
|
|
|
|
|
|
|
|
|
|
Fichiers modifies dans le depot parent :
|
|
|
|
|
- `crates/domain/src/ports.rs`
|
|
|
|
|
- `crates/infrastructure/src/plugin/mod.rs`
|
|
|
|
|
- `crates/infrastructure/tests/plugin_install_load.rs`
|
|
|
|
|
- `crates/application/src/plugin/mod.rs`
|
|
|
|
|
- `crates/application/src/slash_command.rs`
|
|
|
|
|
- `crates/backend/src/dto.rs`
|
|
|
|
|
- `crates/app-tauri/tests/dto_plugins.rs`
|
|
|
|
|
- `frontend/src/domain/index.ts`
|
|
|
|
|
- `frontend/src/plugins/runtime/loader.ts`
|
|
|
|
|
- `frontend/src/plugins/runtime/loader.test.ts`
|
|
|
|
|
- `frontend/src/features/plugins/PluginRuntimeProvider.test.tsx`
|
|
|
|
|
- `frontend/src/features/plugins/plugins.test.tsx`
|
|
|
|
|
|
|
|
|
|
Fichiers modifies dans le submodule `sdk/IdeaSDK` :
|
|
|
|
|
- `src/runtime.ts`
|
|
|
|
|
- `docs/activation-context.md`
|
|
|
|
|
- `docs/commands-and-feedback.md`
|
|
|
|
|
- `docs/manifest.md`
|
|
|
|
|
- `docs/services.md`
|
|
|
|
|
- `examples/hello-plugin/README.md`
|
|
|
|
|
- `examples/hello-plugin/src/core/workspace.ts`
|
|
|
|
|
- `examples/hello-plugin/scripts/hello-task.mjs` (nouveau)
|
|
|
|
|
- `scripts/package-hello-plugin.mjs`
|
|
|
|
|
|
|
|
|
|
Commandes reelles et resultats :
|
|
|
|
|
- `cargo fmt --all` : succes.
|
|
|
|
|
- `cargo check -p domain -p application -p infrastructure -p backend -p app-tauri --lib` : succes.
|
|
|
|
|
- `cargo test -p application runtime_catalog_ --lib` : 5 passes, 0 echec.
|
|
|
|
|
- `cargo test -p infrastructure --test plugin_install_load` : 5 passes, 0 echec.
|
|
|
|
|
- `cargo test -p app-tauri --test dto_plugins` : 2 passes, 0 echec.
|
|
|
|
|
- `npm run check` dans `sdk/IdeaSDK` : succes (`build`, `typecheck:examples`, `package:hello-plugin`) ; archive hello-plugin creee.
|
|
|
|
|
- `npm run typecheck` dans `frontend` : succes.
|
|
|
|
|
- `npm test -- --run src/plugins/runtime/loader.test.ts src/features/plugins/PluginRuntimeProvider.test.tsx src/features/plugins/plugins.test.tsx` dans `frontend` : 3 fichiers, 33 tests passes, 0 echec.
|
|
|
|
|
|
|
|
|
|
Reserves :
|
|
|
|
|
- Aucun test end-to-end avec chargement dans l'AppImage en cours d'execution ; les validations couvrent les frontieres store/catalogue/DTO/loader et le packaging SDK.
|
|
|
|
|
- Les avertissements Vite sur les options `esbuild` depreciees sont preexistants et non bloquants.
|
|
|
|
|
- Aucun commit, push, bump ou merge du submodule effectue dans ce lot.
|
|
|
|
|
|
|
|
|
|
## 2026-09-08 - QA indépendante API `ctx.pluginRoot`
|
|
|
|
|
|
|
|
|
|
Validation QA indépendante effectuée sur la branche parent `feature/285-plugin-root-runtime-api` et le submodule `sdk/IdeaSDK` également sur `feature/285-plugin-root-runtime-api`, sans commit ni action distante.
|
|
|
|
|
|
|
|
|
|
Diffs relus/identifiés :
|
|
|
|
|
- Parent : `PluginPackageStore::installed_plugin_root`, implémentation FS canonique, propagation `PluginRuntimePlugin.plugin_root`, DTO backend `pluginRoot`, loader frontend `IdeaPluginContext.pluginRoot`, tests catalogue/DTO/loader.
|
|
|
|
|
- SDK : `ActivateContext.pluginRoot`, docs `activation-context`, `services`, `commands-and-feedback`, `manifest`, exemple hello-plugin et packaging du script `scripts/hello-task.mjs`.
|
|
|
|
|
|
|
|
|
|
Commandes réelles QA :
|
|
|
|
|
- Parent : `git status --short --branch` ; `git diff --name-status` ; `git diff --stat` ; `git diff -- crates/domain/src/ports.rs crates/infrastructure/src/plugin/mod.rs crates/application/src/plugin/mod.rs crates/backend/src/dto.rs frontend/src/domain/index.ts frontend/src/plugins/runtime/loader.ts`.
|
|
|
|
|
- SDK : `git status --short --branch` ; `git diff --name-status` ; `git diff --stat` ; `git diff -- src/runtime.ts docs/activation-context.md docs/services.md docs/commands-and-feedback.md docs/manifest.md examples/hello-plugin/README.md examples/hello-plugin/src/core/workspace.ts scripts/package-hello-plugin.mjs`.
|
|
|
|
|
- Docs : `rg -n "does not expose|does not currently provide|no public runtime|there is no public runtime|Packaged scripts cannot be launched|unavailable to|package-path resolver" docs src examples scripts` dans le SDK. Aucun ancien énoncé contradictoire sur l'absence de `pluginRoot` runtime ; seul match restant : commentaire SDK générique indiquant que `services` n'expose pas les gateways internes IdeA.
|
|
|
|
|
- SDK occurrences : `rg -n "pluginRoot|installed plugin root|installed package|hello-task|package-relative|contributes\\.mcpServers" src docs examples scripts`.
|
|
|
|
|
- Parent occurrences : `rg -n "pluginRoot|plugin_root|installed_plugin_root|runtime_catalog|missing installed plugin root" crates frontend/src`.
|
|
|
|
|
- Script packagé : `sed -n '1,160p' examples/hello-plugin/scripts/hello-task.mjs`.
|
|
|
|
|
- Rust : `cargo check -p domain -p application -p infrastructure -p backend -p app-tauri --lib` vert ; `cargo test -p application runtime_catalog_ --lib` 5/5 vert ; `cargo test -p infrastructure --test plugin_install_load` 5/5 vert ; `cargo test -p app-tauri --test dto_plugins` 2/2 vert.
|
|
|
|
|
- Frontend : `npm run typecheck` dans `frontend` vert ; `npm test -- --run src/plugins/runtime/loader.test.ts src/features/plugins/PluginRuntimeProvider.test.tsx src/features/plugins/plugins.test.tsx` dans `frontend` 3 fichiers / 33 tests verts.
|
|
|
|
|
- SDK : `npm run check` dans `sdk/IdeaSDK` vert (`build`, `typecheck:examples`, `package:hello-plugin`) ; `unzip -l examples/hello-plugin/build/hello-plugin-0.1.0.zip | rg "idea-plugin.json|dist/index.js|scripts/hello-task.mjs|README.md"` confirme l'inclusion du script packagé.
|
|
|
|
|
- Hygiène : `cargo fmt --all -- --check` vert ; `git diff --check` parent vert ; `git diff --check` SDK vert.
|
|
|
|
|
|
|
|
|
|
Verdict QA : VERT pour le périmètre source/test. Réserves : un rebuild AppImage puis une validation live sont nécessaires pour prouver l'usage réel de `ctx.pluginRoot` dans le binaire actuellement utilisé par l'application, car les tests exécutés valident les frontières source/store/catalogue/DTO/loader/SDK mais ne remplacent pas le binaire AppImage lancé. Le submodule reste dirty par ses modifications locales et le parent pointe vers ce submodule dirty ; aucun commit/bump/push/merge n'a été fait par QA.
|
|
|
|
|
|