2.4 KiB
2.4 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #270 | 4 |
|
1788799729583 |
Verdict Architect (2026-09-07)
Faisable sans relancer IdeA, avec un contrat a expliciter: IdeA garantit le refresh serveur/registry/MCP et les prochains tools/list; certains clients CLI actifs peuvent garder un cache interne de tools jusqu'au tour suivant ou une reconnexion MCP interne.
Points de chargement actuels:
- Backend registry/package:
crates/infrastructure/src/plugin/mod.rs,FsPluginPackageStore,registry.json,bundle_url()enidea-plugin://<pluginId>/current/<hash>/<main>. - Runtime catalog:
crates/application/src/plugin/mod.rs,ListPluginRuntimeContributions::execute()relit le registry a chaque appel. - MCP plugin servers: install/enable/uninstall/reconcile appellent deja
PluginMcpSupervisor::reconcile. - Frontend runtime:
frontend/src/features/plugins/PluginRuntimeProvider.tsxliste une fois au mount. - Frontend loader:
frontend/src/plugins/runtime/loader.tsimporte les bundles une fois dans unPluginRuntimeRegistryneuf. - Tools IdeA agent-facing:
crates/infrastructure/src/orchestrator/mcp/tools.rsetcrates/app-tauri/src/openai_tools.rssont statiques.
Design retenu V1:
- Use case
ReloadPlugin. - Input
ReloadPluginInput { plugin_id, expected_content_hash?: Option<String> }. - Output
PluginReloadResult { plugin, old_content_hash, new_content_hash, changed, runtime_catalog_entry?: PluginRuntimePlugin, mcp_statuses, warnings }. - Support initial: plugins installes depuis
PluginInstallSource::Directory; pas de chemin arbitraire agent-facing. - Refaire
install_from_directory, valider manifest/id, recalculer hash, commit atomique, upsert registry avecrestart_required=false, publierPluginReloaded, puisreconcile(active_mcp_specs). - Hash identique:
changed=false, reconcile idempotent autorise. expected_content_hashmismatch: erreurCONFLICT.- Archive sans chemin relodable:
UNSUPPORTED/INVALIDexplicite. - Commande agent-facing:
idea_plugin_reload({ pluginId, expectedContentHash? }),WriteAction, permission refusee par defaut.
Decoupage:
- #271 backend: use case, DTO Tauri, tool MCP, event domaine, reconcile, tests backend/MCP.
- #272 frontend: gateway reload + provider reload ciblé + feedback agent/cellule uniquement si necessaire.
- #273 QA: unitaires, integration MCP/tools, supervisor, frontend si #272, scenario inter-projets representatif.