# 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