chore(tickets): sync store local — cycle #276 writer du contexte global (branche feature/276-orchestrator-context-writer, QA verte) + reliquats lots #269-#275, note memory plugin hot reload, permissions systeme agent Main

This commit is contained in:
2026-09-07 22:49:29 +02:00
parent ee6f6531ea
commit 68b96e7b55
23 changed files with 806 additions and 9 deletions

View File

@ -0,0 +1,76 @@
---
issueRef: "#271"
version: 8
updatedBy: {"kind":"agent","agent_id":"1ff94b51-3e17-4a39-8543-7715d1ff0f80"}
updatedAt: 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 registry `restart_required=false`.
- Publier `PluginReloaded { plugin_id, old_content_hash, new_content_hash, changed }`.
- Appeler `PluginMcpSupervisor::reconcile` apres reload.
- Hash identique => `changed=false`, reconcile idempotent.
- `expected_content_hash` mismatch => erreur `CONFLICT`.
- Source archive non relodable => erreur explicite `UNSUPPORTED` ou `INVALID`.
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.rs`
- `crates/application/src/plugin/mod.rs`
- `crates/infrastructure/src/orchestrator/mcp/tools.rs`
- `crates/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.rs`
- `crates/app-tauri/src/plugins.rs`
- `crates/application/src/lib.rs`
- `crates/application/src/plugin/mod.rs`
- `crates/backend/src/dto.rs`
- `crates/backend/src/events.rs`
- `crates/backend/src/lib.rs`
- `crates/backend/src/openai_tools.rs`
- `crates/domain/src/events.rs`
- `crates/infrastructure/src/orchestrator/mcp/mod.rs`
- `crates/infrastructure/src/orchestrator/mcp/server.rs`
- `crates/infrastructure/src/orchestrator/mcp/tools.rs`
- `crates/infrastructure/src/orchestrator/mcp/plugins.rs` (nouveau)
Commandes Main:
- `cargo fmt --all -- --check` => KO, formatage requis dans `crates/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 import `infrastructure::PluginToolProvider`; suggestion `infrastructure::orchestrator::mcp::PluginToolProvider`.
- `crates/backend/src/openai_tools.rs:18`: unresolved import `infrastructure::PluginToolProvider`.
- `crates/backend/src/lib.rs:166/168/174/183/185`: `infrastructure::PluginToolError` introuvable; importer/referrer `infrastructure::orchestrator::mcp::PluginToolError` ou 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-tauri` check 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.

View File

@ -0,0 +1,17 @@
---
id: "bb6cdd1b-f100-4c47-b48c-58e163110508"
number: 271
title: "Expose agent-facing plugin reload command/tool"
status: "closed"
priority: "high"
sprint: null
links: [{"target":"#269","kind":"dependsOn"}]
agentRefs: [{"agentId":"fe887179-933f-47d4-960f-c3b06827f86c","role":"assigned"}]
attachments: []
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedBy: {"kind":"agent","agent_id":"1ff94b51-3e17-4a39-8543-7715d1ff0f80"}
createdAt: 1788799296464
updatedAt: 1788802202168
version: 8
---
Implementer le chemin backend permettant a un agent autorise de demander le reload d'un plugin installe/cache localement, puis de rendre les capabilities/tools rafraichies disponibles sans redemarrage d'IdeA. Le contrat final sera precise par Architect.