108 lines
3.6 KiB
Markdown
108 lines
3.6 KiB
Markdown
|
|
# Changelog - Commande Shell `!`
|
||
|
|
|
||
|
|
## Version actuelle
|
||
|
|
|
||
|
|
### Nouvelle fonctionnalité : Commande Shell `!`
|
||
|
|
|
||
|
|
**Date** : Décembre 2024
|
||
|
|
|
||
|
|
#### Description
|
||
|
|
|
||
|
|
Implémentation de la commande `!` permettant d'exécuter des commandes shell directement dans les prompts et les commandes markdown personnalisées.
|
||
|
|
|
||
|
|
#### Syntaxe
|
||
|
|
|
||
|
|
- **Commande simple** : `!commande` - exécute la commande et remplace par sa sortie
|
||
|
|
- **Commande avec arguments** : `!`commande avec args`` - utilise des backticks pour les espaces
|
||
|
|
|
||
|
|
#### Fonctionnalités
|
||
|
|
|
||
|
|
1. **Exécution inline dans les prompts**
|
||
|
|
- L'utilisateur peut taper : `Analyse le projet : !`git status``
|
||
|
|
- MagicCode exécute la commande et envoie le résultat au LLM
|
||
|
|
|
||
|
|
2. **Support dans les commandes markdown**
|
||
|
|
- Les fichiers `.claude/commands/**/*.md` peuvent contenir des commandes `!`
|
||
|
|
- Expansion automatique avec les arguments `$1`, `$2`, etc.
|
||
|
|
|
||
|
|
3. **Gestion intelligente**
|
||
|
|
- Exécution parallèle de multiples commandes pour performance
|
||
|
|
- Timeout de 30 secondes par commande
|
||
|
|
- Buffer de sortie limité à 10 MB
|
||
|
|
- Gestion des erreurs avec messages clairs
|
||
|
|
|
||
|
|
4. **Intégration avec les permissions**
|
||
|
|
- Respect des variables d'environnement de `.claude/settings.json`
|
||
|
|
- Exécution dans le dossier de travail configuré
|
||
|
|
|
||
|
|
#### Fichiers modifiés/créés
|
||
|
|
|
||
|
|
- ✨ **Nouveau** : `packages/ext-claudecode/src/shell-commands.ts` - Logique d'exécution
|
||
|
|
- ✨ **Nouveau** : `packages/ext-claudecode/src/shell-commands.test.ts` - Tests unitaires (11 tests)
|
||
|
|
- ✨ **Nouveau** : `packages/ext-claudecode/SHELL_COMMANDS.md` - Documentation détaillée
|
||
|
|
- ✨ **Nouveau** : `.claude/commands/sysinfo.md` - Exemple de commande
|
||
|
|
- 🔧 **Modifié** : `packages/cli/src/index.ts` - Intégration dans la boucle principale
|
||
|
|
- 🔧 **Modifié** : `packages/ext-claudecode/src/commands.ts` - Support asynchrone
|
||
|
|
- 🔧 **Modifié** : `packages/ext-claudecode/src/mode.ts` - Passage des options
|
||
|
|
- 🔧 **Modifié** : `packages/ext-claudecode/src/index.ts` - Export des fonctions
|
||
|
|
- 🔧 **Modifié** : `packages/core/src/types.ts` - SlashCommand async
|
||
|
|
- 🔧 **Modifié** : `README.md` - Documentation principale
|
||
|
|
|
||
|
|
#### Tests
|
||
|
|
|
||
|
|
- ✅ 11 tests unitaires pour `shell-commands`
|
||
|
|
- ✅ Tests d'intégration dans `lot2.test.ts` mis à jour
|
||
|
|
- ✅ Tous les tests passent (84/84)
|
||
|
|
- ✅ TypeCheck OK sur tous les packages
|
||
|
|
|
||
|
|
#### Exemple d'utilisation
|
||
|
|
|
||
|
|
**Dans un prompt direct** :
|
||
|
|
```
|
||
|
|
Utilisateur actuel : !whoami
|
||
|
|
Liste des fichiers : !`ls -la`
|
||
|
|
```
|
||
|
|
|
||
|
|
**Dans `.claude/commands/status.md`** :
|
||
|
|
```markdown
|
||
|
|
---
|
||
|
|
description: État du projet
|
||
|
|
---
|
||
|
|
|
||
|
|
## Git
|
||
|
|
!`git status --short`
|
||
|
|
|
||
|
|
## Derniers commits
|
||
|
|
!`git log --oneline -5`
|
||
|
|
```
|
||
|
|
|
||
|
|
Puis utiliser `/status` dans MagicCode.
|
||
|
|
|
||
|
|
#### Impact sur l'API
|
||
|
|
|
||
|
|
- ⚠️ **Breaking change mineur** : `SlashCommand.prompt()` retourne maintenant `string | Promise<string>`
|
||
|
|
- Rétrocompatible : les commandes synchrones fonctionnent toujours
|
||
|
|
- Les appels doivent maintenant être `await`és
|
||
|
|
|
||
|
|
#### Notes techniques
|
||
|
|
|
||
|
|
- Utilise `child_process.exec` pour l'exécution
|
||
|
|
- Regex de détection : `/!((?:`[^`]+`)|(?:[^\s]+))/g`
|
||
|
|
- Expansion de la fin vers le début pour éviter les décalages d'indices
|
||
|
|
- Protection TypeScript stricte avec vérifications nullables
|
||
|
|
|
||
|
|
#### Documentation
|
||
|
|
|
||
|
|
- Guide utilisateur complet dans `SHELL_COMMANDS.md`
|
||
|
|
- README mis à jour avec section dédiée
|
||
|
|
- Aide CLI mise à jour (`--help`)
|
||
|
|
- Commentaires de code détaillés
|
||
|
|
|
||
|
|
#### Prochaines étapes possibles
|
||
|
|
|
||
|
|
- [ ] Support des permissions plus fines pour les commandes `!`
|
||
|
|
- [ ] Sandbox optionnel avec restrictions
|
||
|
|
- [ ] Cache des résultats pour commandes identiques
|
||
|
|
- [ ] Support du streaming pour les commandes longues
|
||
|
|
- [ ] Interface de confirmation configurable
|