Files
IdeA/.ideai/memory/plugin-hot-reload-agent-facing-delivered.md

3.2 KiB

name, description, metadata
name description metadata
plugin-hot-reload-agent-facing-delivered memory note plugin-hot-reload-agent-facing-delivered
type
project

Hot reload plugins agent-facing livre

Le chantier #269 a livre le hot reload des plugins sans relancer IdeA, integre localement sur develop par le merge ad2c6b4 (commit backend 805b1b4).

Contrat livre

  • Nouveau use case backend ReloadPlugin pour recharger un plugin installe depuis une source directory.
  • Nouveau tool agent-facing idea_plugin_reload({ pluginId, expectedContentHash? }) expose cote MCP/OpenAI/direct selon les catalogues existants.
  • Le tool est une WriteAction et reste refuse/masque par defaut tant que les permissions ne l'autorisent pas explicitement.
  • Le chemin agent-facing ne prend pas de chemin arbitraire: la source relodable vient du registry du plugin installe.
  • Le reload revalide manifest/id, recalcule le hash, met a jour le registry avec restart_required=false, publie un evenement plugin_reloaded, et lance la reconciliation des serveurs MCP de plugin.
  • Le resultat structure fournit notamment changed, anciens/nouveaux hashes, statuts MCP et warnings/erreurs.

UX / Frontend

Aucune nouvelle surface humaine dediee n'a ete livree en V1. Decision UX/DevFrontend: le besoin principal est agent-facing; le resultat structure du tool et le flux agent existant suffisent.

Limite assumee: les contributions UI React des plugins (menus/layouts/commandes runtime frontend) restent chargees une fois par session par PluginRuntimeProvider et ne sont pas rafraichies apres PluginReloaded en V1. Cela n'affecte pas les tools MCP agent-facing.

QA

QA #273 vert sur feature/269-backend avant merge:

  • cargo +stable test -p application plugin::tests -- --nocapture => 32 passed.
  • cargo +stable test -p infrastructure --test mcp_server -- --nocapture => 38 passed.
  • cargo +stable test -p backend openai_tools::tests -- --nocapture => 10 passed.
  • cargo +stable test -p infrastructure --test plugin_install_load -- --nocapture => 5 passed.
  • cargo +stable test -p infrastructure plugin -- --nocapture => 10 passed.
  • cargo +stable test -p backend plugin_reloaded_relays_hashes_and_changed_flag_to_wire -- --nocapture => 1 passed.
  • cargo +stable test -p app-tauri backend_core_builds_without_desktop_runtime -- --nocapture => app-tauri compile OK.

Risque restant: IdeA garantit que serveur/registry/prochains tools/list voient le nouvel etat. Certains providers/CLIs actifs peuvent garder leur propre cache de tools et devoir relister les tools ou reconnecter MCP en interne; pas de redemarrage IdeA requis par le contrat backend.

Note submodule test

Dans les worktrees de feature, git worktree add n'initialise pas sdk/IdeaSDK. Pour les tests plugin_install_load, Git a utilise le submodule local du worktree principal:

WT=<worktree>; MOD=$(git -C $WT rev-parse --git-path modules/sdk/IdeaSDK)
rm -rf "$MOD" $WT/sdk/IdeaSDK
git -C $WT \
  -c submodule.sdk/IdeaSDK.url=/home/anthony/Documents/Projects/IdeA/sdk/IdeaSDK \
  -c protocol.file.allow=always \
  submodule update --init --recursive sdk/IdeaSDK

Aucun rebuild AppImage/live validation n'a ete fait dans ce cycle; creer un ticket dedie si validation live installee est demandee.