chore(tickets): sync store local — #307 QA verte finale backend+frontend, merge develop e1dbe56 (branche fix/307-startup-ghost-states-reconciliation commit 57cf825), carnet v7 section Git; AppImage rebuild 14:21 déjà formalisée v0.46.0 (commit dédié 99b400a + tag annoté, artefact sha256 vérifié identique au contenu develop post-merge — pas de nouveau tag); tickets 299-307 + index/counter + #296 carnet/issue; attachments/ et scripts/ hors périmètre; aucun push
This commit is contained in:
119
.ideai/tickets/300/carnet.md
Normal file
119
.ideai/tickets/300/carnet.md
Normal file
@ -0,0 +1,119 @@
|
||||
---
|
||||
issueRef: "#300"
|
||||
version: 4
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788984710401
|
||||
---
|
||||
# Ticket #300 - Plugins: tools MCP Unity non catalogues malgre skills visibles
|
||||
|
||||
## Signalement
|
||||
Dans le projet UnitySoundTool, le plugin Unity est actif et ses skills sont visibles par les agents, mais les tools MCP du plugin ne le sont pas. La surface indique: `Aucun tool MCP plugin catalogue.`
|
||||
|
||||
## Cadrage UX
|
||||
La surface ne doit pas confondre toutes les absences:
|
||||
- Plugin sans tool MCP: `Aucun tool MCP fourni` / `Le plugin Unity est actif, mais il ne fournit aucun tool MCP.`
|
||||
- Tools en erreur: `Tools MCP indisponibles` + `Reessayer` + `Voir les details`.
|
||||
- Tools masques par permissions: `Tools MCP non autorises` + action `Configurer les permissions`.
|
||||
- Catalogue perime/reload requis: `Rechargement necessaire` + `Recharger le plugin`.
|
||||
- Pendant resolution initiale: `Chargement des tools MCP...`, pas d'etat vide premature.
|
||||
|
||||
## Cadrage Architect
|
||||
Les skills visibles valident seulement `contributes.skills` + assignation skill. Le message vide vient du panneau MCP quand le catalogue statique `plugins.installed[*].contributes.mcpServers[*].tools` est vide partout.
|
||||
|
||||
Contrat:
|
||||
- Les tools MCP plugin se declarent via `contributes.mcpServers[].tools[]` dans le manifeste, pas via `activate(ctx)`.
|
||||
- `tools[]` est le catalogue statique UI/assignation; l'execution reelle vient du serveur MCP et de `tools/list`.
|
||||
- Ref stable d'assignation: `pluginId/serverId/toolName`.
|
||||
|
||||
Arbitrage correctif:
|
||||
1. Si le manifeste Unity installe n'a pas `contributes.mcpServers[].tools[]`: corriger/reinstaller le plugin Unity, pas IdeA core.
|
||||
2. Si la source a `tools[]` mais l'UI ne les voit pas apres reload: bug IdeA install/reload/registry/DTO frontend.
|
||||
3. Si l'UI liste les tools mais l'agent ne les voit pas apres assignation: bug distinct injection/effective catalogue agent-facing ou cache provider/CLI.
|
||||
|
||||
## Git IdeA
|
||||
Branche de diagnostic: `fix/300-unity-mcp-tools-uncatalogued` depuis `develop` @ `941db62`. Aucun correctif IdeA requis.
|
||||
|
||||
## Diagnostic DevBackend - 2026-09-09
|
||||
|
||||
### Verdict
|
||||
Probleme de donnees du plugin Unity, pas bug IdeA install/reload/registry/DTO. Aucun code IdeA modifie.
|
||||
|
||||
### Preuves
|
||||
- SoundTool active `com.idea.unity-developer-tools` dans `.ideai/project-plugins.json`; les six skills sont assignes, tandis que les tableaux `tools` de tous les agents etaient vides.
|
||||
- Le registre global IdeA marquait le plugin `enabled`, sans erreur ni restart requis, et pointait vers la source packagee:
|
||||
`/home/anthony/Documents/Projects/UnityPlugin/plugins/unity-developer-tools/build/idea-install/unity-developer-tools`.
|
||||
- Les manifestes source, package prepare et installe avaient le meme SHA-256
|
||||
`e7410c8ec6c3ceefef4d4ed5ba9cf227f86e5dea272fcbbade48a9c9560d23ab`.
|
||||
- Dans ces trois manifestes, `contributes.mcpServers[0]` declarait correctement le serveur `unity-developer-tools.tools`, mais omettait `tools[]`.
|
||||
- Le serveur MCP installe fonctionnait: un appel reel `tools/list` retournait huit tools:
|
||||
`unity_detect_project`, `unity_audit_project`, `unity_run_editmode_tests`,
|
||||
`unity_run_playmode_tests`, `unity_summarize_tests`, `unity_benchmark_report`,
|
||||
`unity_compare_cpu_gpu`, `unity_verify_architecture`.
|
||||
- Le panneau frontend derive volontairement son catalogue de
|
||||
`installed[*].contributes.mcpServers[*].tools`; une liste absente donne donc
|
||||
exactement `Aucun tool MCP plugin catalogue.`
|
||||
- Le domaine et le DTO IdeA conservent fidelement cette liste. Le test existant
|
||||
`validates_mcp_server_without_static_tool_metadata_for_compatibility` confirme
|
||||
qu'une omission est valide pour compatibilite et produit une liste statique vide.
|
||||
|
||||
### Validation IdeA
|
||||
- `cargo test -p application validates_mcp_server_without_static_tool_metadata_for_compatibility`: vert, 1 test passe.
|
||||
- Aucun test ou correctif supplementaire IdeA n'est justifie: le contrat existant est respecte de bout en bout.
|
||||
|
||||
## Diagnostic DevFrontend - 2026-09-09
|
||||
|
||||
### Verdict
|
||||
Aucun correctif frontend IdeA ne doit etre applique pour le cas UnitySoundTool actuel. Le message est emis parce que le DTO contient effectivement zero declaration statique `tools[]`; il ne resulte ni d'un filtrage de permissions frontend, ni d'une perte dans l'adapter Tauri.
|
||||
|
||||
### Chaine et semantique confirmees
|
||||
- `McpToolPermissionsPanel` appelle `useProjectPlugins(projectId)`.
|
||||
- Le hook appelle uniquement `PluginGateway.listProjectSettings`, implemente par `plugin_list_project_settings` dans l'adapter Tauri.
|
||||
- La reponse `ProjectPluginSettingsView` transporte sans transformation `settings` et les manifestes valides `installed`.
|
||||
- `PluginMcpToolsEditor` construit ses lignes exclusivement depuis `installed[*].contributes.mcpServers[*].tools[]`.
|
||||
- Le compteur `cataloguedCount` porte sur tous les plugins installes, pas seulement ceux actifs dans le projet. Le texte `Aucun tool MCP plugin catalogue.` signifie donc exactement: aucun manifeste installe ne declare de metadata statique de tool, et aucune assignation orpheline n'est presente pour l'agent selectionne.
|
||||
- Les skills visibles ne prouvent que la presence de `contributes.skills`; leur affichage est independant de `mcpServers[].tools[]`.
|
||||
|
||||
## Correction UnityPlugin - 2026-09-09
|
||||
Prise en charge par le projet UnityPlugin, ticket miroir local `#13`, ferme apres QA.
|
||||
|
||||
Fichier modifie et committe localement:
|
||||
- `/home/anthony/Documents/Projects/UnityPlugin/plugins/unity-developer-tools/idea-plugin.json`: ajout de `contributes.mcpServers[0].tools[]` avec les 8 tools statiques.
|
||||
|
||||
Tools catalogues:
|
||||
- `unity_detect_project`
|
||||
- `unity_audit_project`
|
||||
- `unity_run_editmode_tests`
|
||||
- `unity_run_playmode_tests`
|
||||
- `unity_summarize_tests`
|
||||
- `unity_benchmark_report`
|
||||
- `unity_compare_cpu_gpu`
|
||||
- `unity_verify_architecture`
|
||||
|
||||
Commandes validees depuis `plugins/unity-developer-tools`:
|
||||
- `node scripts/validate-manifest.mjs`: OK
|
||||
- `node scripts/test-mcp-server.mjs`: OK, 8 tools exposes
|
||||
- `npm test`: OK
|
||||
- `npm run package:dir`: OK
|
||||
|
||||
Artefact produit:
|
||||
- `/home/anthony/Documents/Projects/UnityPlugin/plugins/unity-developer-tools/build/idea-install/unity-developer-tools`
|
||||
|
||||
Commit UnityPlugin local:
|
||||
- `c844a45` sur `fix/unity-devtools-mcp-tool-catalog`
|
||||
- Message: `fix(plugin): advertise static mcp tool catalog in manifest`
|
||||
- Aucun push distant. Merge local vers `develop` differe car la branche est empilee sur `fix/unity-devtools-mcp-node-launch`.
|
||||
|
||||
## Application UnitySoundTool - 2026-09-09
|
||||
Prise en charge par le projet UnitySoundTool, ticket local `#25`, ferme.
|
||||
|
||||
Resultat verifie:
|
||||
- Plugin `com.idea.unity-developer-tools` actif.
|
||||
- `restartRequired: false`.
|
||||
- Serveur MCP runtime `plugin:com.idea.unity-developer-tools:unity-developer-tools.tools` demarre, `error: null`.
|
||||
- Les 8 tools MCP sont catalogues dans SoundTool.
|
||||
- Verification directe du wrapper MCP package avec `initialize` puis `tools/list`: retourne les 8 tools avec schemas.
|
||||
|
||||
Note: l'installation a ete faite depuis une copie confinee sous le project root SoundTool, car IdeA refuse un chemin externe UnityPlugin pour l'installation directe (`plugin directory must remain within the requester project root`).
|
||||
|
||||
## Verdict final
|
||||
Signalement resolu par correction du manifeste UnityPlugin + repackaging + reinstall/reload dans UnitySoundTool. Pas de bug core IdeA a corriger pour ce cas.
|
||||
Reference in New Issue
Block a user