3.2 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| plugin-hot-reload-agent-facing-delivered | memory note plugin-hot-reload-agent-facing-delivered |
|
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
ReloadPluginpour 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
WriteActionet 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 evenementplugin_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.