4.1 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #271 | 8 |
|
1788802202168 |
Contrat d'implementation initial (Architect, 2026-09-07)
Implementer le backend du hot reload plugin sans relance IdeA.
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 }.
Perimetre V1:
- Supporter d'abord
PluginInstallSource::Directory. - Le tool agent-facing ne doit pas accepter de chemin arbitraire; le chemin relodable vient du registry installe.
- Refaire
install_from_directory, valider manifest/id, recalcul hash, commit atomique, upsert registryrestart_required=false. - Publier
PluginReloaded { plugin_id, old_content_hash, new_content_hash, changed }. - Appeler
PluginMcpSupervisor::reconcileapres reload. - Hash identique =>
changed=false, reconcile idempotent. expected_content_hashmismatch => erreurCONFLICT.- Source archive non relodable => erreur explicite
UNSUPPORTEDouINVALID.
Agent-facing:
- Ajouter
idea_plugin_reload({ pluginId, expectedContentHash? }). - Classer en
WriteAction, permission refusee par defaut. - Cabler aussi le schema OpenAI/direct si le catalogue tools est duplique dans
crates/app-tauri/src/openai_tools.rs.
Points code a inspecter:
crates/infrastructure/src/plugin/mod.rscrates/application/src/plugin/mod.rscrates/infrastructure/src/orchestrator/mcp/tools.rscrates/app-tauri/src/openai_tools.rs
Limite a preserver dans le resultat: IdeA garantit registry/serveur/prochains tools/list; certains providers peuvent cacher leur introspection interne jusqu'au tour suivant/reconnexion MCP interne.
Verification Main apres timeout DevBackend (2026-09-07)
DevBackend a rendu un handoff: implementation partielle, non compilee/testee, non committee.
Worktree feature/269-backend modifie:
crates/app-tauri/src/lib.rscrates/app-tauri/src/plugins.rscrates/application/src/lib.rscrates/application/src/plugin/mod.rscrates/backend/src/dto.rscrates/backend/src/events.rscrates/backend/src/lib.rscrates/backend/src/openai_tools.rscrates/domain/src/events.rscrates/infrastructure/src/orchestrator/mcp/mod.rscrates/infrastructure/src/orchestrator/mcp/server.rscrates/infrastructure/src/orchestrator/mcp/tools.rscrates/infrastructure/src/orchestrator/mcp/plugins.rs(nouveau)
Commandes Main:
cargo fmt --all -- --check=> KO, formatage requis danscrates/app-tauri/src/plugins.rs,crates/application/src/lib.rs,crates/application/src/plugin/mod.rs,crates/backend/src/lib.rs,crates/infrastructure/src/orchestrator/mcp/mod.rs,crates/infrastructure/src/orchestrator/mcp/server.rs.cargo check --workspace=> KO. Erreurs principales:crates/backend/src/lib.rs:107: unresolved importinfrastructure::PluginToolProvider; suggestioninfrastructure::orchestrator::mcp::PluginToolProvider.crates/backend/src/openai_tools.rs:18: unresolved importinfrastructure::PluginToolProvider.crates/backend/src/lib.rs:166/168/174/183/185:infrastructure::PluginToolErrorintrouvable; importer/referrerinfrastructure::orchestrator::mcp::PluginToolErrorou re-exporter proprement.
Retour DevBackend requis: corriger format + compile, ajouter/ajuster tests, executer les commandes pertinentes avant handoff. Pas de commit avant vert.
Verification Main apres second timeout DevBackend (2026-09-07)
DevBackend a de nouveau timeout cote rendez-vous mais son workstate est done et le worktree a avance.
Etat git: toujours non committe sur feature/269-backend; ajout de crates/infrastructure/tests/mcp_server.rs aux fichiers modifies.
Commandes Main:
cargo fmt --all -- --check=> OK.cargo check --workspace=> OK (backend,web-server,app-tauricheck termines).
Suite: passage QA #273 sur l'etat non committe de la branche backend. QA doit verifier les tests reels et remonter tout ecart avant commit.