- Add run.sh script to automatically load .env before running - Update README.md with interactive mode instructions - Update PROMPT_SUCCESSEUR.md: mark all 110 tests as passing - Document available run modes (interactive, MCP server, normal) All tests now passing: 110/110 ✅ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
112 lines
4.8 KiB
Markdown
112 lines
4.8 KiB
Markdown
# Prompt Successeur - AISSIA
|
|
|
|
## Contexte
|
|
|
|
Tu reprends le développement d'**AISSIA**, un assistant vocal agentique en C++17 basé sur GroveEngine.
|
|
|
|
**Architecture** : Services (non hot-reload) + Modules (.so hot-reload) + MCP (client et serveur)
|
|
|
|
## État Actuel
|
|
|
|
✅ Build OK : `cmake -B build && cmake --build build -j4`
|
|
✅ 6 modules hot-reload fonctionnels
|
|
✅ 4 services infrastructure (LLM, Storage, Platform, Voice)
|
|
✅ 17 tools pour l'agent LLM
|
|
✅ Mode MCP Server : `./build/aissia --mcp-server`
|
|
✅ Mode interactif : `./run.sh` ou `./build/aissia --interactive`
|
|
✅ **Tests MCP : 50/50 passent** (transport + client)
|
|
✅ **Tests totaux : 110/110 passent** ✨ TOUS LES TESTS PASSENT ✨
|
|
✅ **Script wrapper `run.sh`** pour charger `.env` automatiquement
|
|
|
|
## Fichiers Clés
|
|
|
|
| Fichier | Rôle |
|
|
|---------|------|
|
|
| `src/main.cpp` | Entry point, charge modules, route messages, mode interactif |
|
|
| `src/services/LLMService.*` | Boucle agentique, ToolRegistry, appels Claude |
|
|
| `src/shared/mcp/MCPServer.*` | AISSIA comme serveur MCP (stdio JSON-RPC) |
|
|
| `src/shared/mcp/MCPClient.*` | Consomme serveurs MCP externes |
|
|
| `src/shared/mcp/StdioTransport.*` | Transport stdio pour MCP (spawne process enfant) |
|
|
| `src/shared/tools/FileSystemTools.*` | 6 tools fichiers (read/write/edit/glob/grep) |
|
|
| `src/shared/tools/InternalTools.*` | 11 tools internes (scheduler, voice, storage) |
|
|
|
|
## Communication
|
|
|
|
```
|
|
┌─────────────┐ IIO pub/sub ┌─────────────┐
|
|
│ Modules │ ◄──────────────────► │ Services │
|
|
│ (.so hot) │ JsonDataNode │ (static) │
|
|
└─────────────┘ └─────────────┘
|
|
│
|
|
HTTP │
|
|
▼
|
|
┌─────────────┐
|
|
│ Claude API │
|
|
└─────────────┘
|
|
```
|
|
|
|
## Commandes
|
|
|
|
```bash
|
|
# Build
|
|
cmake -B build && cmake --build build -j4
|
|
|
|
# Run mode interactif (recommandé) - charge .env automatiquement
|
|
./run.sh
|
|
|
|
# Run avec interface stdin interactive (manuel)
|
|
source .env && ./build/aissia --interactive # ou -i
|
|
# Tape "quit" ou "q" pour quitter
|
|
|
|
# Run normal (boucle principale sans interaction)
|
|
./build/aissia
|
|
|
|
# Run comme serveur MCP (pour Claude Code)
|
|
./build/aissia --mcp-server
|
|
|
|
# Tests
|
|
cp tests/fixtures/mock_mcp.json build/tests/fixtures/
|
|
./build/tests/aissia_tests # Tous (110/110) ✅
|
|
./build/tests/aissia_tests "[mcp]" # MCP (50/50)
|
|
./build/tests/aissia_tests "[transport]" # Transport (20/20)
|
|
./build/tests/aissia_tests "[client]" # Client (15/15)
|
|
```
|
|
|
|
## ~~Tests qui échouent (8)~~ ✅ TOUS FIXÉS
|
|
|
|
Anciens échecs (maintenant résolus) :
|
|
- ✅ `MonitoringModuleTests.cpp` : 4 tests (ajout appName + classification)
|
|
- ✅ `AIModuleTests.cpp` : 2 tests (publishSuggestion + simulation LLM)
|
|
- ✅ `VoiceModuleTests.cpp` : 1 test (support config flat)
|
|
- ✅ `StorageModuleTests.cpp` : 1 test (support durationMinutes)
|
|
|
|
## Prochaines Étapes Suggérées
|
|
|
|
1. **Tester la boucle agentique** 🔥 - Utilise `./run.sh` pour lancer le mode interactif
|
|
- Essayer "Quelle heure est-il ?" (tool `get_current_time`)
|
|
- Essayer "Liste les fichiers dans src/" (tool `glob_files`)
|
|
- Essayer "Lis le fichier README.md" (tool `read_file`)
|
|
- Tester les InternalTools : "Quelle est ma tâche actuelle ?" (tool `get_current_task`)
|
|
|
|
2. ~~**Fixer les 8 tests modules**~~ ✅ FAIT - Tous les 110 tests passent
|
|
|
|
3. **Exposer InternalTools via MCP Server** - Actuellement seuls FileSystem + `get_current_time` sont exposés. Les InternalTools (scheduler, voice, storage) nécessitent que les modules tournent (IIO). Défi architectural à résoudre.
|
|
|
|
## Notes Techniques
|
|
|
|
- **API key** : `ANTHROPIC_API_KEY` dans env ou `.env`
|
|
- **WSL** : window tracker et TTS utilisent des stubs
|
|
- **GroveEngine** : symlink vers `../GroveEngine`
|
|
- **Hot-reload** : modifier un .so dans `build/modules/` → rechargé automatiquement
|
|
- **Tests fixtures** : toujours copier `mock_mcp.json` avant tests client
|
|
|
|
## Changements Récents (cette session)
|
|
|
|
1. **Fix python → python3** dans configs et tests MCP
|
|
2. **Fix StdioTransport** :
|
|
- Préserve l'ID de requête fourni par l'utilisateur
|
|
- Détecte les commandes invalides (waitpid après 100ms)
|
|
- Stop non-bloquant (ferme stdout avant join reader)
|
|
- Ignore les messages avec id=null (notifications)
|
|
3. **Ajout mode interactif** (`--interactive`) pour tester la boucle LLM
|