# Lot 3 : WebFetch, TodoWrite et Task Implémentation complète du lot 3 avec trois outils : gestion des requêtes HTTP, gestion simple des listes TODO, et gestion hiérarchique des tâches avec priorités et assignations. ## WebFetch Récupère le contenu d'une URL via HTTP/HTTPS. Retourne le statut, les en-têtes et le corps de la réponse. ### Utilisation ```typescript { "url": "https://api.example.com/data", "method": "GET", // optionnel : GET, POST, PUT, DELETE, etc. "headers": {...}, // optionnel : en-têtes personnalisés "body": "...", // optionnel : corps pour POST/PUT "timeout": 30000 // optionnel : timeout en ms (30s par défaut) } ``` ### Exemples #### GET simple ```json { "url": "https://github.com" } ``` #### POST JSON ```json { "url": "https://api.example.com/submit", "method": "POST", "headers": { "Authorization": "Bearer token123" }, "body": "{\"name\": \"Alice\", \"age\": 30}" } ``` ### Comportement - **Réponse JSON** : formatée avec indentation - **Réponse texte/XML** : retournée directe - **Contenu binaire** : résumé avec taille - **Timeout** : par défaut 30 secondes - **Troncature** : sortie limitée à 100 KB ### Permissions - **"ask"** : confirmation requise avant chaque appel (sécurité) --- ## TodoWrite Gère une liste TODO persistante au format JSON avec exportation markdown. ### Actions | Action | Description | |--------|-------------| | `add` | Ajoute une nouvelle tâche | | `list` | Affiche toutes les tâches groupées par statut | | `done` | Marque une tâche comme complète | | `undone` | Remet une tâche à "À faire" | | `block` | Marque une tâche comme bloquée | | `unblock` | Débloque une tâche | | `remove` | Supprime une tâche | | `update` | Modifie une tâche existante | | `export-markdown` | Exporte en fichier markdown | ### Structure ```json { "version": 1, "items": [ { "id": "1", "status": "todo", // "todo" | "done" | "blocked" "title": "Ma tâche", "description": "...", // optionnel "tags": ["urgent"], // optionnel "createdAt": "2024-...", "dueAt": "2024-..." // optionnel } ], "lastModified": "2024-..." } ``` ### Exemples #### Ajouter une tâche simple ```json { "file": ".todos.json", "action": "add", "title": "Implement WebFetch", "tags": ["feature", "http"] } ``` #### Lister les tâches ```json { "file": ".todos.json", "action": "list" } ``` --- ## Task Gère une arborescence hiérarchique de tâches avec priorités, assignations et statuts avancés. ### Actions | Action | Description | |--------|-------------| | `add` | Crée une tâche principale | | `subtask` | Crée une sous-tâche (requiert parent) | | `list` | Affiche les tâches principales | | `tree` | Affiche l'arborescence complète | | `status` | Change le statut (todo, in-progress, done, blocked) | | `assign` | Assigne une tâche à une personne | | `update` | Modifie les détails d'une tâche | | `remove` | Supprime une tâche | ### Statuts - **todo** : À faire - **in-progress** : En cours - **done** : Complétée - **blocked** : Bloquée ### Priorités - **low** : Basse - **normal** : Normal - **high** : Haute - **critical** : Critique ### Structure ```json { "version": 1, "tasks": [ { "id": "1", "title": "Projet principal", "status": "todo", "priority": "high", "description": "Description optionnelle", "assignee": "alice", "dueAt": "2024-12-31T23:59:59Z", "tags": ["backend", "urgent"], "createdAt": "2024-...", "updatedAt": "2024-...", "subtasks": [ { "id": "1-1", "title": "Étape 1", "status": "in-progress", "priority": "high", "parent": "1" } ] } ], "lastModified": "2024-..." } ``` ### Exemples #### Créer une tâche avec priorité ```json { "file": "tasks.json", "action": "add", "title": "Implémenter WebFetch", "priority": "high", "assignee": "alice", "dueAt": "2024-12-15T17:00:00Z" } ``` #### Créer une sous-tâche ```json { "file": "tasks.json", "action": "subtask", "parent": "1", "title": "Configurer authentification", "priority": "high" } ``` #### Voir l'arborescence ```json { "file": "tasks.json", "action": "tree" } ``` Résultat : ``` ○ [1] Implémenter WebFetch [HIGH] (@alice) ├─ → [1-1] Configurer authentification [HIGH] ├─ ○ [1-2] Tester API externe [NORMAL] └─ ✓ [1-3] Documentation [LOW] ``` #### Changer le statut ```json { "file": "tasks.json", "action": "status", "id": "1", "status": "in-progress" } ``` #### Assigner à quelqu'un ```json { "file": "tasks.json", "action": "assign", "id": "1", "assignee": "bob" } ``` --- ## Intégration avec le LLM Les trois outils sont automatiquement disponibles dans le mode ClaudeCode et peuvent être utilisés par le LLM pour : ### WebFetch - Récupérer des API externes - Valider des URLs - Tester des endpoints API - Scraper des données publiques ### TodoWrite - Créer des listes TODO simples - Tracker des tâches de projet - Exporter le backlog en markdown ### Task - Gérer des projets complexes avec hiérarchies - Assigner du travail à des équipes - Tracker les dépendances par la structure arborescente - Gérer les priorités et blocages --- ## Tests Exécutez les tests avec : ```bash pnpm test -- lot3 ``` Les tests couvrent : - ✅ WebFetch : GET/POST, gestion d'erreurs, types de contenu - ✅ TodoWrite : CRUD complet, statuts, export markdown - ✅ Task : hiérarchies, assignations, arborescence --- ## Reste à faire - [ ] **WebFetch streaming** : support des gros fichiers - [ ] **Task dépendances** : relations parent-enfant avancées - [ ] **Task dépendances circulaires** : détection et avertissements - [ ] **Hooks** : système de rappels sur les transitions de tâches - [ ] **MCP** : intégration du Model Context Protocol - [ ] **Sous-agents** : délégation de tâches à des sous-agents - [ ] **Synchronisation externe** : GitHub Issues, Jira, Trello