UNPKG

agile-planner-mcp-server

Version:

Serveur MCP pour la génération d'artefacts agiles (backlogs, features, user stories) avec IA - compatible Windsurf, Claude et Cursor

401 lines (338 loc) 25.3 kB
# Changelog ## [1.7.3] - 2025-05-13 ### Fixed - **Conformité stricte JSON-RPC 2.0 pour le mode MCP:** - Implémentation de la fonction `mcpLog` pour une gestion standardisée des logs en mode MCP - Remplacement de tous les `console.error` par des logs conformes au protocole JSON-RPC - Format homogène pour toutes les sorties du serveur MCP - **Détection intelligente des modes CLI et MCP:** - Préservation du fonctionnement CLI même avec `MCP_EXECUTION=true` ou `--mcp` - Activation du mode MCP uniquement quand nécessaire - **Problèmes de linting dans les tests:** - Correction des apostrophes françaises dans les fichiers de test - Résolution des erreurs de parsing liées aux caractères accentués ## [1.7.2] - 2025-05-12 ### Fixed - **Correction du mode MCP pour `generateFeature`:** - Amélioration de la fonction `adaptResultForMarkdown` pour extraire correctement les user stories quelle que soit leur structure - Renforcement de la fonction `createRule3Structure` avec gestion d'erreurs détaillée et logs de diagnostic - Résolution des problèmes de création de la structure RULE 3 pour les features générées via MCP - Compatibilité multi-LLM améliorée pour le traitement des formats de données variables - **Résolution du problème d'ouverture de Notepad sur Windows:** - Normalisation des flux stderr/stdout en mode MCP pour éviter l'ouverture involontaire d'applications externes - Détection intelligente du mode MCP qui préserve le fonctionnement du CLI - Désactivation des codes couleur ANSI en mode MCP pour une meilleure compatibilité multiplateforme - Forcing du mode MCP avec `--mcp` ou `MCP_EXECUTION=true` lorsqu'aucune commande CLI spécifique n'est demandée ### Improved - **Robustesse du système de génération:** - Logs de diagnostic détaillés pour faciliter l'identification des problèmes en mode MCP - Fallbacks et validations robustes des paramètres d'entrée - Sauvegarde des fichiers d'information pour référence et débogage - Meilleure traçabilité de l'exécution en mode MCP ## [1.7.1] - 2025-05-12 ### Refactor - **Réduction de la complexité cognitive dans le code critique:** - Refactorisation de `json-parser.js` pour réduire la complexité cognitive de 31 à < 15 (lint ID: 4aef1b1a-e476-4b16-8ae0-5da4f62d9058) - Refactorisation de `_createRule3Structure` dans `mcp-router.js` en 6 sous-fonctions avec responsabilités uniques (lint ID: 6e6877fb-de75-4a5b-9376-41bab2df4a4b) - Amélioration de la robustesse de `server/index.js` avec gestion optimisée des erreurs et chaînage optionnel (?.) (lint ID: 2a5bf084-b3b6-46ad-9e0e-68205cc8bc7c) ### Improved - **Validation de la structure RULE 3 dans l'interface MCP:** - Test réussi avec `test-mcp-rule3.js` validant la création correcte de la structure de dossiers - Optimisation de `test-mcp-rule3.js` avec les nouveaux utilitaires MCP (nettoyage automatique des ressources) - Conformité complète avec la spécification RULE 3 pour tous les modes d'exécution - **Amélioration de la suite de tests:** - Création d'utilitaires dédiés aux tests MCP dans `tests/utils/mcp-test-utils.js` - Optimisation des tests d'intégration pour éviter les fuites de processus et améliorer la fiabilité - Script d'exécution ciblée des tests critiques avec `scripts/run-critical-tests.js` - Stratégie de test en deux niveaux (tests critiques et tests alternatifs) ### Documentation - **Refonte majeure de la documentation architecture:** - Création de `docs/architecture/mcp-server-architecture.md` pour détailler l'architecture MCP complète - Ajout de `docs/architecture/markdown-generation.md` documentant le système de génération markdown - Création de `docs/guides/mcp-integration.md` pour faciliter l'intégration avec les clients MCP - Mise à jour de `docs/development/testing-guide.md` pour inclure les tests MCP end-to-end - Ajout de diagrammes Mermaid pour visualiser l'architecture et les flux MCP - Mise à jour des dates de modification dans tous les documents - **Nouvelle documentation de développement:** - Création de `docs/development/KNOWN_ISSUES.md` listant tous les problèmes connus et la dette technique - Création de `docs/development/REFACTORING-PLAN.md` avec un plan détaillé de refactorisation TDD - Création de `docs/development/TEST-REFACTORING.md` détaillant les tests à corriger - Création de `docs/development/ROADMAP.md` avec la feuille de route des versions futures - Mise à jour des commentaires JSDoc dans les fichiers refactorisés - Documentation du pattern d'extraction de méthode appliqué pour réduire la complexité cognitive - Amélioration de la tracabilité des erreurs dans les logs - Suppression des documents obsolètes et archivage du plan de refactorisation original - Conformité complète avec RULE 2 (documentation complète avant commit) ## [1.7.0] - 2025-05-12 ### Refactor - **Modularisation complète du CLI:** - Réduction de `cli.js` de 608 lignes à 31 lignes (bien en-dessous de la limite de 500 lignes) - Création d'une structure modulaire avec séparation claire des responsabilités : - `cli/index.js` (85 lignes) - Point d'entrée et coordination - `cli/utils.js` - Utilitaires et fonctions de support CLI - `cli/backlog.js` - Génération de backlogs - `cli/feature.js` - Génération de features - Maintien de la rétro-compatibilité avec l'API existante via un module de compatibilité ### Improved - **Améliorations de robustesse:** - Gestion intelligente du client API entre les différents modes d'exécution - Correction du problème avec `backlog-last-dump.json` pour les tests et audits - Meilleure gestion des fichiers générés avec l'option `auditMode` - Support des trois modes de fonctionnement : CLI interactif, CLI non-interactif, MCP (stdio) ### Added - **Tests d'intégration améliorés:** - Test d'intégration end-to-end pour le mode CLI - Test d'intégration end-to-end pour le mode MCP (stdio) - Tests pouvant être exécutés en mode rapide ou complet via la variable d'environnement SKIP_INTEGRATION ### Documentation - Documentation complète des modules CLI avec JSDoc - Mise à jour des commentaires pour refondation syntaxe moderne - Amélioration de la lisibilité du code et des messages logs ## [1.6.2] - 2025-05-12 ### Refactor - **Réduction de complexité cognitive:** - Refactorisé la méthode `handleInvoke` dans `mcp-server.js` en extrayant trois méthodes privées (`_handleToolNotFound`, `_sendSuccessResponse`, `_handleToolExecutionError`) pour améliorer la lisibilité et la maintenabilité. - Refactorisé la fonction `handleToolsCall` dans `mcp-router.js` en extrayant trois méthodes (`_extractToolParams`, `_getToolHandler`, `_handleToolError`) pour réduire sa complexité cognitive. - Refactorisé la fonction `handleGenerateBacklog` dans `mcp-router.js` en extrayant trois méthodes auxiliaires (`_cleanupApiClient`, `_prepareBacklogResponse`, `_handleBacklogGenerationError`). - Refactorisé la fonction `_cleanupApiClient` en extrayant des sous-fonctions (`_resetClientProperties`, `_forceGarbageCollection`) pour réduire sa complexité. - Refactorisé la fonction `initializeYargs` dans `server/index.js` en extrayant des fonctions dédiées pour chaque commande et configuration. - Amélioré la méthode `extractBacklogData` dans `schema-validator.js` en extrayant des méthodes privées (`_isWrapperMCP`, `_logExtractionDebug`) et en ajoutant une documentation claire. ### Documentation - Mise à jour de la documentation dans les fichiers refactorisés pour améliorer la compréhension du code. - Ajout de commentaires explicatifs pour les nouvelles méthodes extraites. ## [1.6.1] - 2025-05-11 ### Fixed - Refactored `parseJsonResponse` function in `server/lib/utils/json-parser.js` to significantly reduce its Cognitive Complexity from 31 to within acceptable limits (target < 15). This was achieved by extracting parsing logic into helper functions (`tryDirectParse`, `tryParseFromMarkdown`, `tryParseFirstJsonObject`) and iterating through them. This improves code maintainability and readability. (Related to lint ID: `4aef1b1a-e476-4b16-8ae0-5da4f62d9058`) - **MCP E2E Test (`tests/integration/mcp.e2e.test.js`):** - Corrected assertions for the `generateBacklog` command to align with actual output: - Updated expected success message to French: `"Backlog généré avec succès"`. - Removed incorrect assertion for `result.outputPath` (validated by file system checks). - Ensured robust error handling for file system assertions by wrapping them in a `try...catch` block and properly calling `done(error)`. - Reinstated a missing check for the existence of `backlog.json` in the output directory. - These changes resolved persistent test failures and ensure reliable testing of the `generateBacklog` MCP stdio interface. ## [1.6.0] - 2025-05-11 ### Fixed - **MCP `generateBacklog` (stdio Interface):** - Resolved `chalk is not defined` error in `server/lib/mcp-router.js` by restoring missing `require` statements. - Fixed `TypeError: ToolExecutionError is not a constructor` and `Right-hand side of 'instanceof' is not an object` in `server/lib/mcp-router.js` by correctly handling the direct JSON data return from `backlog-generator.js`. - Ensured full and correct generation of all markdown files (`epic.md`, `feature.md`, `[story-slug].md`) and directory structure according to RULE 3 when invoked via MCP stdio. - Corrected the output path for `backlog-last-dump.json` to be saved in the root of the specified output path, aligning behavior with CLI and fixing MEMORY[1045ac32-1491-4647-a1eb-9e920a769771] and MEMORY[e599048a-f87f-4c93-8816-ad563570cc62]. - Overall stability and output consistency of the MCP stdio `generateBacklog` process significantly improved, now matching CLI output. ## [1.5.0] - 2025-05-11 ### Fixed - **Markdown Output Structure:** - Corrected path generation in `server/lib/markdown/index.js` to prevent nested `.agile-planner-backlog/.agile-planner-backlog` directories. - Ensured `epics` and `orphan-stories` folders are created directly under the main `.agile-planner-backlog` directory, removing the intermediate project slug folder, to comply with RULE 3. - **Markdown Generation Error:** - Resolved `TypeError: userStoryMap.set is not a function` in `server/lib/markdown/index.js` by correctly initializing `userStoryMap` as `new Map()`. ### Refactor - **Linting:** - Removed redundant `try...catch` block around `fs-extra.ensureDirSync` in `server/lib/cli.js` to allow error propagation. - Refactored a `console.log` statement in `server/lib/markdown/index.js` to avoid nested template literals. ## [1.4.6] - 2025-05-11 ### Refactoring et robustesse - Centralisation de la gestion d’erreur dans `generateBacklog` et `generateBacklogDirect` via `handleBacklogError` - Plus aucune duplication de logique d’erreur - Robustesse et conformité TDD renforcées - README mis à jour pour documenter le format d’erreur unifié - Nécessite la mise à jour des tests d’intégration si des assertions vérifient le format d’erreur ## [1.4.5] - 2025-05-10 ### Refactoring et documentation - Ajout des tests d’intégration end-to-end : - `tests/integration/cli.e2e.test.js` (mode CLI) - `tests/integration/mcp.e2e.test.js` (mode MCP stdio) - Documentation d’architecture complète Mermaid (macro et modules détaillés) - Suppression de toute référence à MVP, itérations, scripts obsolètes dans la doc - Alignement strict avec la RULE 3 (structure backlog = epics/features/user-stories/orphan-stories) - Mise à jour des exemples et guides utilisateur ## [1.4.4] - 2025-05-10 ### Réorganisation du Projet et Amélioration de la Maintenance - ✅ Restructuration complète du projet pour améliorer la maintenabilité - ✅ Réorganisation de la documentation dans des répertoires dédiés (guides, development, api, architecture) - ✅ Déplacement des fichiers de test vers les répertoires appropriés (tests/mock) - ✅ Implémentation de l'association intelligente des features avec les epics existantes - ✅ Création d'un plan de réorganisation détaillé dans `docs/reorganisation-plan.md` - ✅ Mise à jour du README principal pour refléter la nouvelle structure - 📝 Documentation améliorée de la navigation entre les différents documents ### Correction complète des Tests - Approche TDD Wave 8 - ✅ Création de 9 nouveaux tests ultra-minimaux selon l'approche TDD Wave 8 - `validators-factory.ultra-minimal.test.js` - `errors.ultra-minimal.test.js` - `backlog-generator.minimal.test.js` - `epic-formatter.ultra-minimal.test.js` - `schema-validator.ultra-minimal.test.js` - `mcp-router.ultra-minimal.test.js` - `cli.ultra-minimal.test.js` - `format-user-story.ultra-minimal.test.js` - `rule3-structure.test.js` - Test de validation de la structure RULE 3 - ✅ Développement de scripts d'automatisation pour la correction des tests et la validation de structure: - `fix-tests.js` - Correction automatique des chemins d'importation - `fix-jest-syntax.js` - Correction automatique de la syntaxe Jest 29.7.0 - `fix-module-imports.js` - Correction des imports directs depuis les modules source - `verify-rule3-structure.js` - Vérification et création automatique de la structure RULE 3 - ✅ Création de tests super-minimaux pour isoler efficacement les problèmes : - `backlog-super-minimal.test.js` - Test de validation de la structure du module sans dépendances - `backlog-ultra-mini.test.js` - Test avec mocks pour isoler les dépendances problématiques - ✅ Résolution de plus de 60 chemins d'importation incorrects après la réorganisation - ✅ Correction des variables avec tirets (transformation en camelCase) - ✅ Documentation détaillée du processus de correction dans `docs/development/test-fix-plan.md` - ✅ Mise à jour de `TEST-ROADMAP.md` avec les progrès réalisés (71,2% des composants critiques testés) ### Améliorations et corrections - ✅ Création d'utilitaires dédiés pour la manipulation de fichiers (`file-utils.js`) - ✅ Application des principes SOLID dans la réorganisation du code - ✅ Suppression des fichiers temporaires et redondants - ✅ Automation complète de la structure RULE 3 pour la génération de backlog - Script `verify-rule3-structure.js` pour vérification et création automatique - Test unitaire `rule3-structure.test.js` pour validation - Création correcte des fichiers .md dans les répertoires appropriés - ✅ Association intelligente de features aux epics appropriées - ✅ Correction des problèmes d'import via modules façade dans les tests - Résolution du problème dans `format-user-story.test.js` - Import direct depuis les modules sources pour éviter les conflits de mock - ✅ Identification et documentation des problèmes fondamentaux de tests - Syntaxe obsolète des mocks Jest (`resolves()``mockResolvedValue()`) - Importations via modules façade causant des problèmes avec les mocks ## [1.4.3] - 2025-05-09 ### TDD Wave 8 - Compatibilité Multi-LLM & Structure RULE 3 - ✅ Correction systématique des tests pour Jest 29.7.0 (`.resolves()``.mockResolvedValue()` et `.returns()``.mockReturnValue()`) - ✅ Implémentation des tests ultra-minimaux pour tous les composants critiques (10 fichiers) - ✅ Test dédié `multi-llm-compatibility.ultra-minimal.test.js` pour valider la compatibilité Windsurf, Claude et Cursor - ✅ Correction du bug dans `feature-generator.js` qui causait des erreurs en cascade - ✅ Résolution de l'erreur `truncatedOutput is not defined` dans les scripts de test - ✅ Correction de la génération de fichiers selon la structure RULE 3 (`.agile-planner-backlog/`) - ✅ Résolution du problème de chemin de sortie (`outputPath`) ignoré lors de la génération - 📝 Documentation complète des progrès de compatibilité dans `MULTI_LLM_COMPATIBILITY.md` - 📝 Stratégie de test documentée dans `TEST-ROADMAP.md` avec les étapes de résolution ### Tests TDD pour structure RULE 3 - ✅ Création de tests spécifiques pour valider la structure RULE 3 (`rule3-structure.test.js`) - ✅ Test MCP dédié pour vérifier le respect de la structure avec paramètre `outputPath` - ✅ Intégration des tests selon la méthodologie TDD (tests écrits avant l'implémentation) - ✅ Double génération de `backlog.json` pour compatibilité optimale (chemin utilisateur + structure RULE 3) ### Qualité du code - ✅ Application de l'opérateur de coalescence nullish (`??`) pour améliorer la lisibilité - ✅ Correction des problèmes de linting dans les tests et scripts - ✅ Restructuration du script `run-final-tests.js` pour une meilleure robustesse - ✅ Utilisation des optional chaining pour améliorer la qualité du code ## [1.1.6] - 2025-05-08 ### Amélioré - Compatibilité multi-LLM assurée pour: - Windsurf (PRIORITÉ 1) - Claude.ai (PRIORITÉ 2) - Cursor (PRIORITÉ 3) - Tests MCP corrigés et améliorés - Nettoyage des mocks entre les tests - Test spécifique de compatibilité multi-LLM ajouté ### Corrigé - Problèmes de linting dans les scripts - Erreurs dans les tests MCP - Format des réponses JSON-RPC pour conformité MCP - Agile Planner MCP Server ## [1.4.2] - 2025-05-08 ### TDD Wave 8 - Approche critique - Tests ultra-minimaux pour les 5 composants les plus critiques - Validation complète du routeur MCP et de la conformité Context7 - Stratégie incrémentale pour améliorer progressivement la couverture de tests - Identification et suppression des tests obsolètes (tests/e2e/cli.test.js) - Audit complet de l'architecture avec rapports détaillés dans le dossier 'reports/' ## [1.4.1] - 2025-05-08 ### MCP Context7 & Test Validation - Validation complète de la conformité au protocol MCP selon les standards Context7 - Tests isolés ultra-minimaux pour garantir la robustesse des composants critiques - Vérification systématique de la gestion des erreurs MCP (validation des paramètres et formats de réponse) - Correction des problèmes de linting dans les scripts de validation - Création de scripts d'exécution ciblés pour les tests critiques (`run-critical-tests.js`) - Documentation complète de la validation MCP dans le guide de test ## [1.4.0] - 2025-05-08 ### TDD Wave 8 - Refactorisation des tests - Standardisation des mocks pour tous les tests: création de setupTests.js centralisé avec mocks communs - Configuration optimisée de Jest pour éviter les conflits entre les différentes options (resetMocks, restoreMocks, clearMocks) - Nouveau script d'exécution test:wave8 garantissant la cohérence entre npm test et npx jest - Stratégie d'isolation des tests documentée dans test-resolution-strategy.md - Résolution méthodique des conflits entre sinon et jest pour les mocks - Robustesse des tests unitaires : mocks explicites OpenAI et Groq avec baseURL, reset des mocks entre sous-tests - Correction du nom de la fonction mockée (deliver_backlog) ## v1.3.3 (2025-05-08) ### Tests & Qualité - Refactorisation complète des tests unitaires conformément aux principes Wave 8 - Standardisation des mocks pour les dépendances externes (fs-extra, chalk, etc.) - Correction systématique des chemins d'importation pour la nouvelle structure - Réorganisation hiérarchique des tests en modules (validators, formatters, utils, generators) - Isolation stricte des tests unitaires pour assurer leur fiabilité et leur maintenabilité - Uniformisation des patterns d'assertion pour mieux identifier la source des erreurs - Création d'un plan de refactorisation détaillé conforme à TDD Wave 8 (dans `test-refactoring-plan.md`) - Mise à jour du guide de test avec la stratégie de résolution TDD Wave 8 ## v1.3.1 (2025-05-08) ### Ajouté - Documentation détaillée sur la convention d'import des modules dans les tests (README du dossier tests) - Tests ultra-minimaux pour les composants les plus critiques - Guide complet pour les contributeurs (CONTRIBUTING.md) - Exemples de documentation avec Mermaid pour visualiser l'architecture - Support pour la nouvelle syntaxe des mocks Jest 29.7.0 ### Amélioré - Réduction de la duplication de code dans les tests - Isolation explicite des tests pour éviter les effets de bord - Réduction de la complexité cognitive des fonctions de test - Meilleure organisation des fixtures de test - Optimisation des imports dans les fichiers de test ### Corrigé - Problème de double import dans les tests - Erreurs liées aux mocks de fs-extra - Dépendances circulaires entre les modules - Variables inutilisées et problèmes de linting - Correction des variables inutilisées et optimisation des closures - Résolution de problèmes de qualité de code signalés par l'IDE ## v1.2.3 (2025-05-08) ### Améliorations - Support complet des formats backlog 'epic' (singulier) et 'epics' (pluriel) - Normalisation automatique des backlogs pour garantir la rétrocompatibilité - Refactorisation des validateurs pour réduire la complexité cognitive - Meilleure gestion des erreurs dans la validation des objets imbriqués - Amélioration des messages d'erreur pour faciliter le débogage - Compatibilité complète avec les spécifications MCP 2025 - Documentation détaillée sur l'utilisation et la configuration - Outils de conversion pour les backlogs existants - Meilleure organisation des modules pour faciliter la maintenance - Configuration des tests unitaires pour garantir la qualité du code - Optimisation du générateur de backlog pour améliorer les performances - Amélioration du routeur MCP pour une meilleure gestion des requêtes - Mise à jour de l'index principal pour une meilleure intégration - Amélioration des exemples d'user stories pour une meilleure compréhension - Ajout d'exemples de migration pour faciliter la transition vers le nouveau système - Mise à jour des tests pour assurer la qualité du code ## v1.2.1 (2023-11-20) ### Améliorations - Refactorisation du système de validation avec le pattern Strategy - Création de validateurs spécialisés pour chaque entité (UserStory, Feature, Epic, Iteration, Backlog) - Implémentation d'une Factory pour faciliter l'accès aux validateurs - Documentation du pattern Strategy dans `design.md` - Amélioration de la couverture de tests (100% pour les nouveaux validateurs) - Ajout d'exemples d'utilisation des validateurs dans `examples/validators-usage.js` - Ajout d'un exemple d'intégration progressive dans `examples/migration-integration.js` - Création d'un guide de test (`TESTING-GUIDE.md`) pour clarifier l'utilisation de `npm test` et `npx jest` - Identification des fichiers obsolètes dans `OBSOLETE-FILES.md` pour faciliter le nettoyage futur ### Corrections - Amélioration de la précision des messages d'erreur pour les validateurs - Réduction de la complexité cognitive dans plusieurs fonctions - Compatibilité avec l'ancien système de validation pour faciliter la migration progressive - Réduction de la complexité cognitive des fonctions de validation - Documentation complète de l'architecture des validateurs dans `server/lib/utils/validators/README.md` ## v1.2.0 (2025-05-06) ### Nouvelles fonctionnalités - Implémentation de la structure hiérarchique epic > feature > user story - Ajout de métadonnées et d'instructions AI pour faciliter le travail collaboratif avec les IA ### Améliorations - Refactorisation majeure du module markdown-generator pour améliorer la maintenabilité et la robustesse - Division du module monolithique (1124 lignes) en 7 modules spécialisés respectant la limite de 500 lignes par fichier - Préservation complète de la structure hiérarchique lorsqu'elle est appelée via l'outil MCP generateBacklog - Ajout de la licence MIT avec clause Commons sur le modèle de claude-task-master - Mise à jour des changelogs pour correspondre précisément à la version actuelle - Création d'exemples détaillés dans le dossier examples/ montrant le format exact des sorties - Enrichissement de la documentation dans les README en anglais et français - Ajout de liens vers le guide d'utilisation optimal (OPTIMAL_USAGE_GUIDE.MD) ### Corrections - Correction d'un problème critique dans la fonction `generateMarkdownFilesFromResult` empêchant la création correcte des liens entre fichiers - Normalisation des chemins relatifs pour assurer la compatibilité cross-platform - Résolution d'un problème d'encodage des caractères spéciaux dans les fichiers markdown - Amélioration de la robustesse des appels MCP - Gestion de l'ID unique pour les entités (forced 'lowercase') - Tests unitaires pour tous les composants (story, feature, epic, iteration, MVP)