MagicCode/packages/ext-claudecode/LOT3.md
2026-10-12 00:41:17 +02:00

6 KiB

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

{
  "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

{
  "url": "https://github.com"
}

POST 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

{
  "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

{
  "file": ".todos.json",
  "action": "add",
  "title": "Implement WebFetch",
  "tags": ["feature", "http"]
}

Lister les tâches

{
  "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

{
  "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é

{
  "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

{
  "file": "tasks.json",
  "action": "subtask",
  "parent": "1",
  "title": "Configurer authentification",
  "priority": "high"
}

Voir l'arborescence

{
  "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

{
  "file": "tasks.json",
  "action": "status",
  "id": "1",
  "status": "in-progress"
}

Assigner à quelqu'un

{
  "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 :

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