--- issueRef: "#267" version: 5 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedAt: 1788797669968 --- # Ticket #267 - reprise orchestrée par Main Demande utilisateur: corriger le parcours complet permissions cross-project agents/templates et reconstruire/remplacer l'AppImage visible. Constats initiaux: - Les tools MCP inter-projets ne sont pas exposés correctement dans l'éditeur MCP. - La case `Contactable depuis d'autres projets` dans les templates est visible mais ne persiste pas après save/reopen. - Les permissions d'agent projet doivent permettre la configuration des tools MCP et de la contactabilité. - Deux AppImages `0.3.0` existent; la racine contenait une ancienne AppImage du 2026-08-17. Arbitrage UX: - Groupe MCP attendu: `IdeA inter-projets`. - Tools/libellés: `idea_project_ask_agent` = `Demander à un agent d'un autre projet`; `idea_project_cancel_agent` = `Annuler une demande inter-projet`. - Contactabilité et permissions MCP restent deux réglages distincts: être appelable vs pouvoir appeler. - Save/reopen doit conserver les états cochés/décochés. Arbitrage Architecture: - MCP tool groups: frontend pur. - Template.defaultContactable: frontend pur si DTO/adapters existants sont câblés correctement; ne pas sérialiser dans `defaultSystemPermissions`. - Agent.contactable est source de vérité agent projet. Backend devait fournir `update_agent_contactable`. - Les tools catalogués mais non groupés doivent rester visibles via fallback. Implémentation: - DevBackend a ajouté le use case/DTO/commande Tauri/route web `update_agent_contactable` et tests associés. - DevFrontend a modifié adapters/domain/ports/panels/tests pour exposer les tools cross-project, fallback visible, `defaultContactable` template séparé et `Agent.contactable` via `updateAgentContactable`. Validation QA: - Premier passage QA: code vert, ticket rouge uniquement car AppImage racine non remplacée. - Build AppImage exécuté via skill `build-appimage`: `npm --prefix frontend run build`, puis `CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage` depuis `crates/app-tauri`. - Nouvel artefact: `/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage`, 118921720 bytes, mtime 2026-09-07 18:08:44 +0200, sha256 `770b6f59ad4c82222522da5c53a757531b91365e68bd2d33d1fe84155ca2efa0`. - AppImage racine remplacée: `/home/anthony/Documents/Projects/IdeA/IdeA_0.3.0_amd64.AppImage`, même taille/mtime/hash; `cmp` root vs target = 0. - Ancienne AppImage sauvegardée: `/home/anthony/Documents/Projects/IdeA/IdeA_0.3.0_amd64.AppImage.old-before-267-20260907180854`, 118745592 bytes, mtime 2026-08-17 16:31:45 +0200, sha256 `e66a8a9f4a55cdfd5eb55f1ccf8681a58f5c9f08977659cf9531101500675290`. - QA final: VERT. Tests verts relevés par QA: - `cargo test -p infrastructure --test mcp_server tools_list_advertises_the_idea_tools_with_schemas -- --nocapture` - `cargo test -p infrastructure orchestrator::mcp::tools::tests -- --nocapture` - `cargo test -p application --test agent_lifecycle update_agent_contactable -- --nocapture` - `cargo test -p web-server web_invoke_routes_permission_commands -- --nocapture` - `cargo test -p app-tauri --test dto_templates -- --nocapture` - `cd frontend && npm test -- --run src/features/permissions/McpToolPermissionsPanel.test.tsx src/features/permissions/permissions.test.tsx src/features/templates/templates.test.tsx src/adapters/agent.test.ts src/adapters/http/agentGateway.test.ts` - `cd frontend && npm run typecheck` Etat Git: - Branche préparée par Git: `fix/268-cross-project-permissions-appimage` (nom historique malgré suivi #267). - Aucun commit au moment de ce carnet; Git doit décider commit/merge local.