Files
IdeA/.ideai/tickets/285/carnet.md

9.1 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#285 8
kind agent_id
agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d
1788885132878

2026-09-08 - Clarification SDK pluginRoot

Demande issue de Main UnityPlugin ticket #8 : verifier si un plugin runtime peut resoudre son package/plugin root depuis activate(ctx) pour lancer un script packagé via ctx.services.tasks.runCommand().

Constat Architect : non, aucune API publique runtime n'expose aujourd'hui pluginRoot/package root/archive root/file URL exploitable. workspace.getProjectRoot() et tasks.runCommand().cwd sont bornes au project root. ${pluginRoot} / ${appDataDir} existent cote host uniquement pour les contributes.mcpServers declares dans le manifest.

Docs modifiees dans le submodule sdk/IdeaSDK sur branche feature/285-plugin-root-scope-docs :

  • docs/activation-context.md : absence explicite de plugin install dir/package root et correction de la liste des champs publics.
  • docs/services.md : runCommand() project/workspace scoped, pas de resolution package-relative.
  • docs/commands-and-feedback.md : precondition + contre-exemple pour scripts packagés.
  • docs/manifest.md : section MCP Server Paths, substitution limitee aux serveurs MCP declares.

QA : VERT. Commandes reelles executees dans sdk/IdeaSDK : git status --short --branch, git diff -- ..., rg -n ..., npm run, npm run check. npm run check a execute build, typecheck:examples, package:hello-plugin et a cree l'archive hello-plugin attendue sans fichier modifie hors docs.

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.

2026-09-08 - Rebuild AppImage post-merge

Git : commits et merges locaux effectués depuis les branches feature/285-plugin-root-runtime-api — submodule 9ce3a55 + merge e3a0f46 vers develop SDK ; parent e499a0f (bump pointeur e3a0f46) + merge b681433 vers develop + sync store 270c740. Aucun push.

Main : rebuild AppImage finale exécuté depuis develop après les merges. Commandes : npm --prefix frontend run build vert ; puis depuis crates/app-tauri, CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage vert. Artefact : target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage.

Restant manuel : remplacement de l'AppImage installée + relance, puis validation live de ctx.pluginRoot (et du contact cross-project #284) dans le binaire actif — condition de clôture des tickets #284 et #285.