chore(tickets): sync store local — creation #297 (carnet complet cadrage UX/Architect + implementation DevFrontend + validation QA verte, index/counter) et memoire durable ticket297-skills-mcp-unified-surfaces; porte egalement le statut residuel #296 qa->closed dans l'index partage (sync post-fusion f78f009 non committee); fichiers tickets/296/* et scripts/ laisses hors perimetre; aucun push

This commit is contained in:
2026-09-09 20:38:46 +02:00
parent e6ce7d6e74
commit 2070de9b88
6 changed files with 201 additions and 3 deletions

View File

@ -92,3 +92,4 @@
- [ticket285-sdk-plugin-root-runtime-api](ticket285-sdk-plugin-root-runtime-api.md) — memory note ticket285-sdk-plugin-root-runtime-api
- [ticket287-cross-project-rendezvous-live-activity-fix](ticket287-cross-project-rendezvous-live-activity-fix.md) — memory note ticket287-cross-project-rendezvous-live-activity-fix
- [ticket288-agent-self-restart-architecture](ticket288-agent-self-restart-architecture.md) — memory note ticket288-agent-self-restart-architecture
- [ticket297-skills-mcp-unified-surfaces](ticket297-skills-mcp-unified-surfaces.md) — memory note ticket297-skills-mcp-unified-surfaces

View File

@ -0,0 +1,19 @@
---
name: ticket297-skills-mcp-unified-surfaces
description: memory note ticket297-skills-mcp-unified-surfaces
metadata:
type: project
---
# Ticket #297 - Skills/MCP
Decision: #297 remplace la surface `Agent > Capacites` par deux surfaces humaines distinctes: `Skills` pour tous les skills assignables, et `MCP` pour tous les tools MCP assignables. Ne pas fusionner les stores metier.
Persistance a preserver:
- skills IdeA natifs: `Agent.skills` via `SkillGateway`;
- skills plugin: `.ideai/project-plugins.json` / `AgentPluginAssignments.skills`;
- tools MCP IdeA: `.ideai/mcp-tool-permissions.json` via `PermissionGateway`;
- tools MCP plugin: `.ideai/project-plugins.json` / `AgentPluginAssignments.tools`.
La saisie manuelle d'un nom de tool MCP plugin doit disparaitre. Si le manifeste `mcpServers[].tools` ne suffit pas, ajouter un read-model backend read-only de catalogue plugin MCP, alimente par manifeste et/ou `tools/list` runtime. Les assignations orphelines doivent rester visibles comme tombstones retirables.
UX: navigation projet avec `Skills`, `MCP`, `Permissions`; `Permissions` reste reserve aux permissions systeme/sandbox. Les listes sont cochables, groupees par origine/plugin, avec recherche, etat vide/chargement/erreur, mutations par ligne, et sans action globale `Tout selectionner` par defaut.

View File

@ -0,0 +1,145 @@
---
issueRef: "#297"
version: 5
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1788979039198
---
# Ticket #297 - Unifier Skills et MCP tools
## Demande
- Supprimer la saisie manuelle du nom exact pour les tools MCP de plugins.
- Fournir une liste cochable des tools MCP de plugins, comme pour les skills.
- Regrouper tous les skills dans un menu `Skills` unique.
- Creer un menu `MCP` dedie regroupant tools MCP IdeA et plugins.
- Retirer skills plugin et tools MCP du menu agent.
## Cadrage UX
- Navigation projet: `Skills`, `MCP`, `Permissions`.
- `Permissions` reste reserve aux permissions systeme/sandbox.
- `Skills`: liste cochable unique, groupee par origine/projet/global/plugin.
- `MCP`: liste cochable unique, sections `IdeA` et `Plugins`, groupes par plugin/serveur si utile.
- Les items orphelins/indisponibles restent visibles et retirables.
## Cadrage architecture
- Ne pas fusionner les stores persistants.
- Skills IdeA: `Agent.skills` via `SkillGateway`.
- Skills plugin/tools plugin: `.ideai/project-plugins.json` via `PluginGateway`.
- Tools MCP IdeA: `.ideai/mcp-tool-permissions.json` via `PermissionGateway`.
- UI: ne plus appeler l'assignation plugin tool avec un nom non catalogue.
## Etat
- Ticket cree et passe `inProgress` par Main.
- Cadrage UX et Architect obtenu.
- Memoire durable: `ticket297-skills-mcp-unified-surfaces`.
## Implementation DevFrontend
- Retire la surface de capacites de la fiche agent et supprime `AgentPluginCapabilities.tsx`, y compris l'ajout libre d'un nom exact de tool MCP.
- Etend le panneau `Skills` existant avec une cible agent, une recherche et une liste cochable unique groupee `IdeA` / `Plugins`; conserve l'edition CRUD du catalogue natif en dessous.
- Ajoute un panneau projet `MCP`, disponible dans les menus desktop et web, avec le defaut projet et les agents comme cibles.
- Conserve l'editeur des tools MCP IdeA via `PermissionGateway` et ajoute les tools MCP plugins catalogues via `PluginGateway`, groupes par plugin/serveur.
- Les references natives/plugin absentes du catalogue restent affichees comme `Indisponible` et sont retirables. Un serveur plugin sans `mcpServers[].tools` ne propose aucune saisie libre; ses anciennes assignations deviennent des tombstones retirables.
- `Permissions` est maintenant reserve aux permissions systeme/sandbox.
- Le raccourci de `Parametres > Plugins` ouvre `Skills` et le texte renvoie vers les panneaux `Skills` et `MCP`.
## Fichiers frontend modifies
- `frontend/src/features/agents/AgentsPanel.tsx`
- `frontend/src/features/skills/SkillsPanel.tsx`
- `frontend/src/features/skills/skills.test.tsx`
- `frontend/src/features/permissions/McpPanel.tsx`
- `frontend/src/features/permissions/McpToolPermissionsPanel.tsx`
- `frontend/src/features/permissions/McpToolPermissionsPanel.test.tsx`
- `frontend/src/features/permissions/PermissionsPanel.tsx`
- `frontend/src/features/permissions/index.ts`
- `frontend/src/features/plugins/AgentPluginCapabilities.tsx` (supprime)
- `frontend/src/features/plugins/ProjectPluginSettings.test.tsx`
- `frontend/src/features/plugins/ProjectPluginsPanel.tsx`
- `frontend/src/features/plugins/index.ts`
- `frontend/src/features/projects/ProjectsView.tsx`
- `frontend/src/features/projects/ViewPanelBody.tsx`
- `frontend/src/features/projects/viewPlacement.ts`
- `frontend/src/features/web/WebWorkspace.tsx`
- `frontend/src/features/web/webSurfaceCatalog.ts`
## Verification DevFrontend
- `npm --prefix frontend run build` : OK.
- `npm --prefix frontend test -- --run src/features/skills/skills.test.tsx src/features/plugins/ProjectPluginSettings.test.tsx src/features/permissions/McpToolPermissionsPanel.test.tsx` : OK, 28 tests.
- `npm --prefix frontend test -- --run src/features/permissions/permissions.test.tsx src/features/projects/viewPlacement.test.ts src/features/web/webWorkspaceSession.test.ts src/features/web/webSurfaceNavigation.test.ts` : OK, 24 tests.
- `git diff --check` : OK.
- Suite frontend complete executee : 1223 tests OK, 32 echecs dans 6 fichiers hors perimetre (principalement attentes historiques des menus web et tests live/conversation instables); les suites directement touchees sont vertes isolees.
## Validation QA - 2026-09-09T18:36:15Z
Verdict QA: VERT pour le perimetre #297 sur `feature/297-skills-mcp-unified-menus`.
Audit independant:
- Diff local relu: l'ancienne surface agent `AgentPluginCapabilities` est retiree de `AgentsPanel` et le composant supprime.
- `PermissionsPanel` ne contient plus l'onglet MCP et reste dedie aux permissions systeme/sandbox.
- `SkillsPanel` devient la surface d'assignation unifiee des skills IdeA + plugin, avec checkbox par agent et tombstones retirables, en conservant les stores separes (`SkillGateway` pour IdeA, `PluginGateway` pour plugins).
- `McpPanel` est expose comme panneau dedie desktop/web; il regroupe les tools MCP IdeA via `PermissionGateway` et les tools MCP plugins catalogues via `PluginGateway`.
- La saisie libre d'un nom exact de tool MCP plugin n'est plus presente dans le diff ni dans les tests cibles; les serveurs sans catalogue ne proposent que des tombstones retirables si des assignations anciennes existent.
Commandes executees et sorties utiles:
```bash
git diff --check
```
Sortie: aucune sortie, code 0.
```bash
npm --prefix frontend test -- --run src/features/skills/skills.test.tsx src/features/plugins/ProjectPluginSettings.test.tsx src/features/permissions/McpToolPermissionsPanel.test.tsx
```
Sortie utile:
```text
Test Files 3 passed (3)
Tests 28 passed (28)
```
```bash
npm --prefix frontend test -- --run src/features/permissions/permissions.test.tsx src/features/projects/viewPlacement.test.ts src/features/web/webWorkspaceSession.test.ts src/features/web/webSurfaceNavigation.test.ts
```
Sortie utile:
```text
Test Files 4 passed (4)
Tests 24 passed (24)
```
```bash
npm --prefix frontend run build
```
Sortie utile:
```text
tsc --noEmit && vite build
515 modules transformed.
dist/index.html 1.13 kB
dist/assets/index-BcSNdddW.css 49.69 kB
dist/assets/index-Cj2HhIoI.js 1,265.10 kB
built in 5.18s
```
```bash
npm --prefix frontend test -- --run
```
Sortie utile:
```text
Test Files 6 failed | 120 passed (126)
Tests 32 failed | 1223 passed (1255)
```
Echecs de suite complete isoles hors perimetre #297:
- `frontend/src/features/projects/ProjectsView.ls7.test.tsx`: 3 echecs conversation viewer LS7.
- `frontend/src/features/web/WebAgentCell.test.tsx`: 1 echec mobile custom CLI.
- `frontend/src/features/web/WebApp.test.tsx`: 3 echecs routing/pairing web.
- `frontend/src/features/web/WebDesktopWorkspace.test.tsx`: 1 echec menu/dock web.
- `frontend/src/features/web/WebMenus.test.tsx`: 8 echecs menus web historiques.
- `frontend/src/features/web/tickets/WebTicketsSprints.test.tsx`: 16 echecs tickets/sprints web.
Conclusion: les suites directement touchees par #297 sont vertes, le build TypeScript/Vite est vert, et la suite complete ne met pas en evidence de regression dans le perimetre #297.

View File

@ -0,0 +1,17 @@
---
id: "fc7ce9d2-870d-4de6-b27f-8a1e9e650451"
number: 297
title: "Unifier les menus Skills et MCP tools avec sélection par liste cochable"
status: "inProgress"
priority: "high"
sprint: null
links: []
agentRefs: [{"agentId":"1ff94b51-3e17-4a39-8543-7715d1ff0f80","role":"assigned"}]
attachments: []
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
createdAt: 1788977734368
updatedAt: 1788979039198
version: 5
---
Demande utilisateur : retirer les skills et tools MCP du menu agent, créer un menu MCP dédié listant les tools MCP IdeA et plugins, permettre la sélection des tools MCP de plugins par cases à cocher au lieu de saisir leur nom exact, et regrouper tous les skills dans un même menu. Cycle complet requis : UX, architecture, branche, implémentation, QA, commit local si vert.

View File

@ -1,3 +1,3 @@
{
"nextNumber": 297
"nextNumber": 298
}

View File

@ -4056,7 +4056,7 @@
"issueRef": "#296",
"path": "296",
"title": "Unifier l’attribution des skills et tools MCP natifs/plugins aux agents",
"status": "qa",
"status": "closed",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
@ -4064,7 +4064,23 @@
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1788976061895
"updatedAt": 1788976624245
},
{
"issueRef": "#297",
"path": "297",
"title": "Unifier les menus Skills et MCP tools avec sélection par liste cochable",
"status": "inProgress",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"1ff94b51-3e17-4a39-8543-7715d1ff0f80"
],
"createdBy": {
"kind": "agent",
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
},
"updatedAt": 1788979039198
}
]
}