diff --git a/PROMPT_SUCCESSEUR.md b/PROMPT_SUCCESSEUR.md index 2ddaa0b..9760490 100644 --- a/PROMPT_SUCCESSEUR.md +++ b/PROMPT_SUCCESSEUR.md @@ -13,9 +13,10 @@ Tu reprends le développement d'**AISSIA**, un assistant vocal agentique en C++1 ✅ 4 services infrastructure (LLM, Storage, Platform, Voice) ✅ 17 tools pour l'agent LLM ✅ Mode MCP Server : `./build/aissia --mcp-server` -✅ Mode interactif : `./build/aissia --interactive` ou `-i` +✅ Mode interactif : `./run.sh` ou `./build/aissia --interactive` ✅ **Tests MCP : 50/50 passent** (transport + client) -✅ **Tests totaux : 102/110** (8 échecs dans tests modules) +✅ **Tests totaux : 110/110 passent** ✨ TOUS LES TESTS PASSENT ✨ +✅ **Script wrapper `run.sh`** pour charger `.env` automatiquement ## Fichiers Clés @@ -50,41 +51,46 @@ Tu reprends le développement d'**AISSIA**, un assistant vocal agentique en C++1 # 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 avec interface stdin interactive -./build/aissia --interactive # ou -i -# Tape "quit" ou "q" pour quitter - # 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 (102/110) +./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) +## ~~Tests qui échouent (8)~~ ✅ TOUS FIXÉS -Tous dans les modules, pas critiques : -- `MonitoringModuleTests.cpp` : 4 tests (monitoring:app_changed non publié) -- `AIModuleTests.cpp` : 2 tests (ai:suggestion non publié) -- `VoiceModuleTests.cpp` : 1 test (voice:speak assertion) -- `StorageModuleTests.cpp` : 1 test (durationMinutes != 45) +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** - `export ANTHROPIC_API_KEY=sk-...` puis `./build/aissia -i` - - Essayer "Quelle heure est-il ?" (tool get_current_time) - - Essayer "Liste les fichiers dans src/" (tool glob) +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** - Problèmes de publication IIO dans les mocks +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). +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 diff --git a/README.md b/README.md index 6dc843f..f607ffe 100644 --- a/README.md +++ b/README.md @@ -104,11 +104,29 @@ cmake --build build -j4 # Build modules only (for hot-reload workflow) cmake --build build --target modules +``` -# Run +### Run + +```bash +# Interactive mode (requires ANTHROPIC_API_KEY in .env) +./run.sh + +# Or manually with .env loaded +source .env && ./build/aissia -i + +# MCP Server mode (for Claude Code integration) +./build/aissia --mcp-server + +# Normal mode (background daemon) ./build/aissia ``` +**Note**: Create a `.env` file with your API key: +```bash +ANTHROPIC_API_KEY=sk-ant-... +``` + ### Hot-Reload Workflow 1. Start AISSIA: `./build/aissia` @@ -202,15 +220,28 @@ Modules communicate via topics: ## Roadmap +### Completed ✅ - [x] Project setup with GroveEngine - [x] SchedulerModule (time management & hyperfocus) - [x] NotificationModule (alerts & TTS) -- [ ] AIAssistantModule (LLM integration) -- [ ] LanguageLearningModule (language practice) -- [ ] DataModule (SQLite persistence) +- [x] MonitoringModule (app tracking & classification) +- [x] AIModule (LLM conversation & suggestions) +- [x] VoiceModule (TTS/STT interfaces) +- [x] StorageModule (SQLite persistence) +- [x] LLM Service (Claude API integration - Sonnet 4) +- [x] 17 Agentic Tools (filesystem, scheduler, storage, etc.) +- [x] MCP Server mode (JSON-RPC stdio) +- [x] Interactive mode (--interactive) +- [x] **110/110 tests passing** + +### In Progress 🚧 +- [ ] Test interactive mode with real queries +- [ ] Expose InternalTools via MCP Server + +### Planned 📋 - [ ] Windows Toast notifications -- [ ] Real TTS integration -- [ ] Claude API integration +- [ ] Real TTS integration (espeak-ng) +- [ ] Language learning features ## License diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..0bf176e --- /dev/null +++ b/run.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Wrapper script to run AISSIA with .env loaded + +set -e + +# Colors for output +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Check if .env exists +if [ ! -f .env ]; then + echo -e "${YELLOW}Warning: .env file not found. Create one with ANTHROPIC_API_KEY${NC}" + exit 1 +fi + +# Load .env +echo -e "${GREEN}Loading .env...${NC}" +set -a +source .env +set +a + +# Check if API key is set +if [ -z "$ANTHROPIC_API_KEY" ]; then + echo -e "${YELLOW}Warning: ANTHROPIC_API_KEY not set in .env${NC}" + exit 1 +fi + +# Check if binary exists +if [ ! -f ./build/aissia ]; then + echo -e "${YELLOW}Error: ./build/aissia not found. Run: cmake --build build${NC}" + exit 1 +fi + +# Run AISSIA with provided arguments (default to interactive mode) +if [ $# -eq 0 ]; then + echo -e "${GREEN}Starting AISSIA in interactive mode...${NC}" + ./build/aissia -i +else + ./build/aissia "$@" +fi