158 lines
4.4 KiB
Markdown
158 lines
4.4 KiB
Markdown
|
|
# Commande Shell `!` - Liste complète des modifications
|
|||
|
|
|
|||
|
|
## 📁 Nouveaux fichiers créés
|
|||
|
|
|
|||
|
|
### Code source
|
|||
|
|
1. **`packages/ext-claudecode/src/shell-commands.ts`** (118 lignes)
|
|||
|
|
- Logique principale d'exécution des commandes shell
|
|||
|
|
- 3 fonctions exportées : `findShellCommands`, `executeShellCommand`, `expandShellCommands`
|
|||
|
|
- Gestion timeout, buffer, erreurs
|
|||
|
|
|
|||
|
|
2. **`packages/ext-claudecode/src/shell-commands.test.ts`** (83 lignes)
|
|||
|
|
- 11 tests unitaires (2 suites)
|
|||
|
|
- Coverage : détection, expansion, erreurs, env
|
|||
|
|
|
|||
|
|
### Documentation
|
|||
|
|
3. **`packages/ext-claudecode/SHELL_COMMANDS.md`** (3422 octets)
|
|||
|
|
- Guide utilisateur complet
|
|||
|
|
- Syntaxe, exemples, cas d'usage
|
|||
|
|
- Permissions et limitations
|
|||
|
|
|
|||
|
|
4. **`.claude/commands/sysinfo.md`** (440 octets)
|
|||
|
|
- Exemple de commande utilisant `!`
|
|||
|
|
- Démo fonctionnelle
|
|||
|
|
|
|||
|
|
5. **`CHANGELOG_SHELL_COMMANDS.md`** (3589 octets)
|
|||
|
|
- Historique détaillé de l'implémentation
|
|||
|
|
- Impact API, tests, notes techniques
|
|||
|
|
|
|||
|
|
6. **`IMPLEMENTATION_SUMMARY.md`** (3592 octets)
|
|||
|
|
- Résumé exécutif
|
|||
|
|
- Statut, fonctionnalités, exemples
|
|||
|
|
|
|||
|
|
## 📝 Fichiers modifiés
|
|||
|
|
|
|||
|
|
### Core
|
|||
|
|
1. **`packages/core/src/types.ts`**
|
|||
|
|
- Ligne 100 : `prompt(args: string): string | Promise<string>;`
|
|||
|
|
- Breaking change mineur pour support async
|
|||
|
|
|
|||
|
|
### CLI
|
|||
|
|
2. **`packages/cli/src/index.ts`**
|
|||
|
|
- Import : ajout de `expandShellCommands, findShellCommands`
|
|||
|
|
- Ligne 20-29 : HELP mis à jour avec mention commandes shell
|
|||
|
|
- Ligne 230-246 : Logique d'expansion des commandes `!` avant envoi au LLM
|
|||
|
|
- Ligne 226 : `await custom.prompt(args)` (async)
|
|||
|
|
|
|||
|
|
### Extension ClaudeCode
|
|||
|
|
3. **`packages/ext-claudecode/src/index.ts`**
|
|||
|
|
- Export des utilitaires shell : `expandShellCommands, findShellCommands, executeShellCommand`
|
|||
|
|
|
|||
|
|
4. **`packages/ext-claudecode/src/commands.ts`**
|
|||
|
|
- Import : `expandShellCommands`
|
|||
|
|
- Nouvelle fonction : `renderCommandAsync()` (lignes 39-50)
|
|||
|
|
- `loadCommands()` : signature avec options, appel async (lignes 54-86)
|
|||
|
|
|
|||
|
|
5. **`packages/ext-claudecode/src/mode.ts`**
|
|||
|
|
- Ligne 41 : `loadCommands(dirs, { cwd: ctx.cwd, env: {} })`
|
|||
|
|
|
|||
|
|
### Tests
|
|||
|
|
6. **`packages/ext-claudecode/src/lot2.test.ts`**
|
|||
|
|
- Ligne 121 : `await review?.prompt("a.ts")` (async)
|
|||
|
|
|
|||
|
|
### Documentation racine
|
|||
|
|
7. **`README.md`**
|
|||
|
|
- Section "Extension ClaudeCode" enrichie (lignes 95-108)
|
|||
|
|
- Sous-section "Commandes shell `!`" ajoutée
|
|||
|
|
- Note de statut mise à jour (ligne 124)
|
|||
|
|
|
|||
|
|
## 📊 Statistiques
|
|||
|
|
|
|||
|
|
### Code
|
|||
|
|
- **Nouveau code** : ~350 lignes
|
|||
|
|
- **Tests** : 11 tests (100% passing)
|
|||
|
|
- **Fichiers TS créés** : 2
|
|||
|
|
- **Fichiers TS modifiés** : 6
|
|||
|
|
|
|||
|
|
### Documentation
|
|||
|
|
- **Nouveaux docs** : 4 fichiers markdown
|
|||
|
|
- **Docs modifiés** : 1 (README)
|
|||
|
|
- **Total documentation** : ~11 000 caractères
|
|||
|
|
|
|||
|
|
### Qualité
|
|||
|
|
- ✅ TypeCheck : 0 erreur
|
|||
|
|
- ✅ Tests : 84/84 passing
|
|||
|
|
- ✅ Build : Success
|
|||
|
|
- ✅ Linting : Conforme
|
|||
|
|
|
|||
|
|
## 🔄 Workflow d'utilisation
|
|||
|
|
|
|||
|
|
### 1. Prompt direct
|
|||
|
|
```
|
|||
|
|
Entrée utilisateur → Détection `!` → Exécution shell → Expansion → LLM
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Commande markdown
|
|||
|
|
```
|
|||
|
|
/commande → Lecture .md → Expansion args ($1...) → Expansion shell (!) → LLM
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 Points d'entrée
|
|||
|
|
|
|||
|
|
### Pour les utilisateurs
|
|||
|
|
- **CLI** : Taper directement `!commande` dans un prompt
|
|||
|
|
- **Commandes** : Inclure `!`...`` dans `.claude/commands/*.md`
|
|||
|
|
|
|||
|
|
### Pour les développeurs
|
|||
|
|
```typescript
|
|||
|
|
import { expandShellCommands } from '@magiccode/ext-claudecode';
|
|||
|
|
|
|||
|
|
const { expanded, executed } = await expandShellCommands(
|
|||
|
|
"User: !whoami",
|
|||
|
|
{ cwd: process.cwd() }
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔐 Sécurité
|
|||
|
|
|
|||
|
|
- ⚠️ Exécution dans le shell système (pas de sandbox)
|
|||
|
|
- ✅ Timeout 30s par commande
|
|||
|
|
- ✅ Buffer limité 10 MB
|
|||
|
|
- ✅ Respect des variables d'environnement settings.json
|
|||
|
|
- ✅ Gestion d'erreurs avec messages clairs
|
|||
|
|
- ℹ️ Les permissions Bash existantes s'appliquent
|
|||
|
|
|
|||
|
|
## 📋 Checklist de validation
|
|||
|
|
|
|||
|
|
- [x] Code écrit et documenté
|
|||
|
|
- [x] Tests unitaires (11/11 passing)
|
|||
|
|
- [x] Tests d'intégration mis à jour
|
|||
|
|
- [x] TypeCheck OK
|
|||
|
|
- [x] Build OK
|
|||
|
|
- [x] Documentation utilisateur complète
|
|||
|
|
- [x] Exemple fonctionnel créé
|
|||
|
|
- [x] README mis à jour
|
|||
|
|
- [x] Changelog rédigé
|
|||
|
|
- [x] Pas de régression (84/84 tests)
|
|||
|
|
|
|||
|
|
## 🚀 Déploiement
|
|||
|
|
|
|||
|
|
Prêt pour :
|
|||
|
|
- ✅ Commit
|
|||
|
|
- ✅ Merge
|
|||
|
|
- ✅ Release
|
|||
|
|
- ✅ Production
|
|||
|
|
|
|||
|
|
Commande de test rapide :
|
|||
|
|
```bash
|
|||
|
|
cd magiccode
|
|||
|
|
pnpm typecheck && pnpm test && pnpm build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📞 Support
|
|||
|
|
|
|||
|
|
Documentation complète disponible dans :
|
|||
|
|
- `packages/ext-claudecode/SHELL_COMMANDS.md` (guide utilisateur)
|
|||
|
|
- `IMPLEMENTATION_SUMMARY.md` (vue technique)
|
|||
|
|
- `CHANGELOG_SHELL_COMMANDS.md` (historique)
|