Funk-lab/stt/client/stt
ALI YESILKAYA e49b4fc3ba
refactor(stt): unifie le jeton Ghostfolio — source client unique, appel côté serveur (#41)
Avant : jeton Ghostfolio en double (config client pour l'intent vocal + secret k8s pour
le contexte serveur). Désormais une SEULE source — la config client — transmise au
serveur, qui fait tous les appels Ghostfolio (un seul code, lecture seule).

Serveur :
- sources.py : cœur _ghostfolio_fetch(token) partagé ; ghostfolio_block (contexte) et
  ghostfolio_phrase (intent) acceptent un jeton par requête (priorité client > env).
- app.py : /v1/ask accepte `secrets` (jetons client) passés aux sources ; nouvel
  endpoint POST /v1/portfolio {token} → valeur du portefeuille.
- bump 0.4.0 → 0.5.0.

Client :
- api.py : ServerClient.secrets transmis dans /v1/ask ; méthode portfolio() → /v1/portfolio.
- cli.py : _make_client renseigne secrets["ghostfolio_token"] depuis [ghostfolio].
- ui/app.py : l'intent « combien ghostfolio » appelle client.portfolio (serveur).
- supprime portal/ghostfolio.py (client) — l'appel API vit côté serveur.
- config : [ghostfolio] = juste access_token (transmis au serveur).
- bump 0.12.0 → 0.13.0.

Le secret k8s STT_GHOSTFOLIO_TOKEN devient un simple fallback. Validé bout-en-bout
contre une instance serveur locale + Ghostfolio réel : « …vaut environ 16 520 EUR. »

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 03:28:52 +02:00
..
hud fix(stt-client): restaure les intents vocaux (#37) + l'affichage version perdus de main (#40) 2026-06-21 03:05:03 +02:00
memory feat(stt): assistant vocal Jarvis — client pipx + STT-server in-cluster (#4) 2026-06-17 12:08:58 +02:00
portal refactor(stt): unifie le jeton Ghostfolio — source client unique, appel côté serveur (#41) 2026-06-21 03:28:52 +02:00
ui refactor(stt): unifie le jeton Ghostfolio — source client unique, appel côté serveur (#41) 2026-06-21 03:28:52 +02:00
voice fix(stt-client): restaure les intents vocaux (#37) + l'affichage version perdus de main (#40) 2026-06-21 03:05:03 +02:00
__init__.py feat(stt): assistant vocal Jarvis — client pipx + STT-server in-cluster (#4) 2026-06-17 12:08:58 +02:00
api.py refactor(stt): unifie le jeton Ghostfolio — source client unique, appel côté serveur (#41) 2026-06-21 03:28:52 +02:00
cli.py refactor(stt): unifie le jeton Ghostfolio — source client unique, appel côté serveur (#41) 2026-06-21 03:28:52 +02:00
config.py refactor(stt): unifie le jeton Ghostfolio — source client unique, appel côté serveur (#41) 2026-06-21 03:28:52 +02:00
README.md feat(stt): assistant vocal Jarvis — client pipx + STT-server in-cluster (#4) 2026-06-17 12:08:58 +02:00

stt/stt — package backend

Cœur Python de la commande stt. Réutilise le moteur vocal de tools/hermes-voice.py.

stt/
├── cli.py        # entrypoint `stt` (--setup, --mode, --no-tts)           ✅ phase 1
├── config.py     # défauts embarqués + chargement ~/.config/stt/stt.toml  ✅ phase 1
├── voice/        # wake word + VAD, STT faster-whisper, TTS Piper         ✅ phase 1
├── brain/        # routeur 3 modes hermes/local/claude + auto-détect LAN  ✅ phase 2
├── server/       # HTTP statique (HUD) + websocket (états → HUD)          ✅ phase 1
└── memory/       # tier local SQLite ✅ ; Qdrant s01 + sync GitHub        ⏳ phase 4

États exposés au HUD (via websocket)

idle (veille) → listening (écoute) → thinking (réflexion cerveau) → speaking (TTS) → idle. Le HUD anime le visualiseur selon l'état et affiche transcript utilisateur + réponse.

Point de départ

Le module voice/ part de tools/hermes-voice.py (déjà fonctionnel : wake word « Ok Hermès », faster-whisper, Piper, webrtcvad). À refactorer en classe + callbacks d'état pour le websocket, puis brancher brain/ (routeur) à la place de l'appel direct actuel.