À propos du projet

`encx-cli` est un client Go et une CLI pour l'API du moteur de quêtes urbaines Encounter (`en.cx`). Le projet comprend une bibliothèque pour intégration dans votre code (`encx`), un utilitaire console `encli`, un serveur mock pour le développement local, un agent LLM basé sur PicoClaw, une interface Web, ainsi que des builds pour iOS (gomobile) et PHP (FFI). ## Fonctionnalités principales - **Bibliothèque `encx`** : connexion, liste des jeux, état du jeu, envoi de codes, statistiques, profil, indices, inscription au jeu. Prend en charge les anciens (ASP.NET) et nouveaux (REST) moteurs Encounter avec détection automatique. - **CLI `encli`** : commandes pour l'authentification, la consultation des jeux, niveaux, bonus, secteurs, indices, journal des validations, messages, envoi de codes, ainsi qu'un ensemble complet de commandes admin (création/suppression de niveaux, bonus, secteurs, indices, tâches, gestion des jeux, équipes, ajustements de temps). - **Serveur mock `encx-mock`** : simule le domaine Encounter localement, prend en charge le chargement de scénario depuis HTML, l'émulation de perte de réseau (code PZDC), image Docker. - **Agent LLM** : PicoClaw intégré avec tool-calling — lit l'état du jeu, exécute des commandes admin, recherche sur Wikipédia, lit des fichiers locaux. Fonctionne via OpenRouter ou un modèle local llama.cpp (via yzma, sans cgo). - **Interface Web** : interface locale avec chat avec l'agent, thème sombre, configuration LLM. - **iOS** : wrapper gomobile `mobile/encxmobile`, build `Encx.xcframework` pour Xcode. - **PHP** : bibliothèque partagée via FFI, le client vit côté Go. ## Installation Des binaires prêts pour macOS, Linux, Windows sont disponibles sur la page Releases. Vous pouvez également installer via `go install` : ```sh go install github.com/skrashevich/encx-cli/cmd/encli@latest go install github.com/skrashevich/encx-cli/cmd/encx-mock@latest ``` Ou via Docker : ```sh docker run --rm ghcr.io/skrashevich/encx-cli -v docker run --rm ghcr.io/skrashevich/encx-cli games -domain tech.en.cx ``` ## Exemple d'utilisation de la bibliothèque ```go client := encx.New("tech.en.cx", encx.WithInsecureTLS()) resp, err := client.Login(ctx, "user", "password") list, _ := client.GetGameList(ctx) model, _ := client.GetGameModel(ctx, 12345) result, _ := client.SendCode(ctx, 12345, model.Level.LevelId, model.Level.Number, "CODE123") ``` ## CLI : flux typique ```sh encli login -domain tech.en.cx -insecure encli games encli status -game-id 12345 encli level -game-id 12345 encli send-code -game-id 12345 "CODE123" ``` ## Agent LLM ```sh export LLM_API_KEY=sk-or-v1-... export LLM_MODEL=anthropic/claude-sonnet-4 encli -game-id 12345 --llm "crée 3 niveaux avec bonus et indices" encli -readonly -game-id 12345 --llm "affiche le contenu de tous les niveaux" ``` Si aucun fournisseur cloud n'est configuré, l'agent s'exécute localement via llama.cpp (modèle Qwen3-VL-2B-Instruct, ~1 Go). ## MCP Le paquet `agentmcp` expose le catalogue d'outils du moteur via MCP : ```sh encli mcp -domain tech.en.cx # lecture seule encli mcp -domain tech.en.cx -security approve # les mutations sont approuvées par le client ``` ## iOS et PHP Pour iOS, il y a un wrapper gomobile et un build `Encx.xcframework` (script `./mobile/bind-ios.sh`). Pour PHP — une bibliothèque partagée avec des wrappers FFI, générés à partir du code source Go. ## Supplémentaire - Options du client : TLS, HTTP, timeout, User-Agent, langue, moteur, URL de base API. - Détection automatique du moteur (legacy/new) via une requête à l'API. - Sauvegarde des paramètres du moteur dans `~/.config/encli/engine/settings.json`. - Le serveur mock prend en charge une démo publique sur `encounter.exe.xyz`.