feat(skills): Skill entscheidet selbst ob vorgelesen wird (manifest.speak)
Verallgemeinert das "run_* → stumm"-Heuristik: jeder Skill deklariert im Manifest ein speak-Flag. - speak=false (Default) = Steuerbefehl (Spotify, Licht) → kein TTS, App beendet direkt (STOP), wie bisher. - speak=true = Antwort-Skill (Info/Ergebnis) → Antwort wird vorgelesen + Gespraechs-Fenster bleibt offen. Gilt für BEIDE Pfade: Fast-Path (_fast_path_speak aus skill.speak) und lokale Skill-Ausführung (_local_turn_speak = _skill_speak_flag(run_*)). Info-Tools (web_search/memory_search/trigger_timer) bleiben gesprochen. - skills.py: speak in create_skill + update_skill-allowed. - agent.py: skill_create/skill_update Tool-Schema dokumentiert speak (damit ARIA es beim Skill-Bau setzen kann), Dispatch reicht es durch. - App: _isSilent nur noch speak===false (kein answeredBy=fast-path-Fallback mehr, sonst waere ein speak=true-Fast-Path faelschlich stumm). Bestehende Skills ohne Feld = false = stumm (kein Verhaltenswechsel). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1209,8 +1209,11 @@ const ChatScreen: React.FC = () => {
|
||||
// grau haengen (Reproduktion Stefan im Auto). Hier dieselbe Logik wie
|
||||
// bei TTS-Ende anstossen: aktiv → Konversations-Fenster (resume),
|
||||
// sonst → Konversation beenden (re-arm).
|
||||
const _isSilent = (message.payload as any).speak === false
|
||||
|| ((message.payload as any).answeredBy === 'fast-path');
|
||||
// Stumm = die Bridge sagt speak=false (Steuerbefehl-Skill via Fast-Path
|
||||
// ODER local). Ein Antwort-Skill (speak=true) faellt NICHT hierunter —
|
||||
// der wird vorgelesen + haelt das Gespraech offen. Kein answeredBy-
|
||||
// Fallback mehr: die Bridge schickt speak zuverlaessig mit.
|
||||
const _isSilent = (message.payload as any).speak === false;
|
||||
if (_isSilent && wakeWordService.isConversing()) {
|
||||
// Klarer Steuerbefehl (Liedersteuerung etc.) = KEINE Konversation →
|
||||
// STOP: direkt zurueck aufs Wake-Word. Kein Gong, keine Aufnahme,
|
||||
|
||||
Reference in New Issue
Block a user