État runtime .ideai séparé du code (index, counter, carnets, note mémoire plugin-asset-serving-and-owned-storage-contracts). Purge des tickets obsolètes 51/63/66. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.0 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| plugin-asset-serving-and-owned-storage-contracts | memory note plugin-asset-serving-and-owned-storage-contracts |
|
Contrats plugins #133/#138 : service d'assets multi-fichiers + persistance plugin-owned hors projet
Décisions figées dans ARCHITECTURE.md §22 (2026-08-02).
#133 — service des assets idea-plugin://
asset_allowed (crates/app-tauri/src/plugins.rs:504-536) doit servir tout chemin relatif confiné dès lors que les gardes déjà présentes tiennent : registre actif (lifecycle_state.is_runtime_active()) + content_hash du package matché + confinement canonicalize (déjà en place lignes 467-483). Fin de l'allowlist declared_main || declared_icon || starts_with("assets/") qui cassait tout import ESM relatif secondaire (./constants.js, ./core/x.js) → "Importing a module script failed.". Pas de résolution node_modules/bare specifiers — hors scope, figé. Débloque #134 (implémentation) et #135 (audit confinement install + désinstallation 100%).
#138 — persistance plugin-owned
ctx.storage (déjà typé dans sdk/IdeaSDK/src/runtime.ts, jamais câblé côté frontend/src/plugins/runtime/loader.ts ni implémenté côté Rust — vérifié : zéro port/commande/répertoire) devient l'API canonique unique pour l'état interne du plugin (prefs/cache/index). Nouveau répertoire app_data/plugins/data/<pluginId>/, frère de plugins/installed/<pluginId>/ (jamais dedans, pour survivre aux réinstalls et donner une racine univoque à purger). plugin_uninstall doit purger les deux répertoires. ctx.services.config/workspace restent réservés au project-owned (fichiers réels du projet, jamais l'état interne du plugin). L'exemple hello-plugin doit migrer ses compteurs internes de .ideai/hello-plugin.json vers ctx.storage. Débloque #139.
Détail complet et rationale : ARCHITECTURE.md §22. Tickets liés : #133/#134/#135 (assets), #138/#139 (storage). Les deux tickets #133/#138 sont passés en QA avec carnet détaillé.