Files
IdeA/.ideai/memory/plugin-asset-serving-and-owned-storage-contracts.md
Blomios 59d81851e9 chore(tickets): synchronise index/carnets tickets #131-#139 + note mémoire assets/persistance plugins
É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>
2026-08-03 11:06:30 +02:00

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
type
project

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é.