MagicCode/packages/ext-claudecode/LOT3.md

289 lines
6 KiB
Markdown
Raw Normal View History

2026-10-11 22:41:17 +00:00
# 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