fix(mcp): preserve speak engine defaults

This commit is contained in:
Jamie Pine
2026-04-25 10:24:51 -07:00
parent 166250856f
commit 29f99a8622
2 changed files with 24 additions and 12 deletions
+12 -6
View File
@@ -75,22 +75,28 @@ def register_tools(mcp: FastMCP) -> None:
"Voicebox → Settings → MCP."
)
resolved_personality = personality
if resolved_personality is None and client_id:
binding = None
if client_id:
binding = (
db.query(MCPClientBinding)
.filter(MCPClientBinding.client_id == client_id)
.first()
)
if binding is not None:
resolved_personality = bool(binding.default_personality)
resolved_personality = personality
if resolved_personality is None and binding is not None:
resolved_personality = bool(binding.default_personality)
resolved_engine = engine
if resolved_engine is None and binding is not None:
resolved_engine = binding.default_engine
use_persona = bool(resolved_personality) and bool(vp.personality)
return await _speak(
profile_id=vp.id,
profile_name=vp.name,
text=text,
engine=engine,
engine=resolved_engine,
language=language,
personality=use_persona,
db=db,
@@ -232,7 +238,7 @@ async def _speak(
profile_id=profile_id,
text=text,
language=language or "en",
engine=engine or "qwen",
engine=engine,
personality=personality,
)
generation = await generate_speech(req, db)
+12 -6
View File
@@ -52,16 +52,22 @@ async def speak(
),
)
# Resolve per-client personality default when the caller didn't pin it.
personality_flag = data.personality
if personality_flag is None and client_id:
binding = None
if client_id:
binding = (
db.query(MCPClientBinding)
.filter(MCPClientBinding.client_id == client_id)
.first()
)
if binding is not None:
personality_flag = bool(binding.default_personality)
# Resolve per-client personality default when the caller didn't pin it.
personality_flag = data.personality
if personality_flag is None and binding is not None:
personality_flag = bool(binding.default_personality)
engine = data.engine
if engine is None and binding is not None:
engine = binding.default_engine
from .generations import generate_speech
@@ -70,7 +76,7 @@ async def speak(
profile_id=profile.id,
text=data.text,
language=data.language or "en",
engine=data.engine or "qwen",
engine=engine,
personality=bool(personality_flag),
),
db,