voicesmith-mcp 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/server.py +21 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "voicesmith-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Local AI voice for coding assistants — TTS & STT via MCP. Kokoro ONNX + faster-whisper, fully offline.",
5
5
  "bin": {
6
6
  "voicesmith-mcp": "bin/cli.js"
package/server.py CHANGED
@@ -206,7 +206,8 @@ class _VoiceHTTPHandler(BaseHTTPRequestHandler):
206
206
  self._json_response(400, {"error": "invalid_json"})
207
207
  return
208
208
 
209
- name = params.get("name", _session_info.get("name", "Eric") if _session_info else "Eric")
209
+ default_name = _config.main_agent if _config else "Eric"
210
+ name = params.get("name", _session_info.get("name", default_name) if _session_info else default_name)
210
211
  text = params.get("text", "")
211
212
  speed = params.get("speed", 1.0)
212
213
 
@@ -806,12 +807,28 @@ def main():
806
807
 
807
808
 
808
809
  def _start_preheat_intro():
809
- """Speak a brief intro after server starts. Preheats TTS engine."""
810
+ """Speak a brief intro after server starts. Preheats TTS engine.
811
+
812
+ Only speaks if this session got its preferred name. If the preferred name
813
+ was taken (e.g., during a session resume where the old server is still
814
+ running), skip the intro to avoid confusing double introductions.
815
+ """
810
816
  if _tts_engine is None or _audio_player is None:
811
817
  return
812
818
 
813
- name = _session_info.get("name", "Eric") if _session_info else "Eric"
814
- voice = _session_info.get("voice", "am_eric") if _session_info else "am_eric"
819
+ default_name = _config.main_agent if _config else "Eric"
820
+ default_voice = _config.tts.default_voice if _config else "am_eric"
821
+
822
+ name = _session_info.get("name", default_name) if _session_info else default_name
823
+ voice = _session_info.get("voice", default_voice) if _session_info else default_voice
824
+
825
+ # Determine what name we wanted
826
+ preferred = (_config.last_voice_name or default_name) if _config else default_name
827
+
828
+ # Skip intro if we didn't get our preferred name — another session has it
829
+ if name != preferred:
830
+ logger.info(f"Skipping preheat intro: wanted '{preferred}' but got '{name}'")
831
+ return
815
832
 
816
833
  def _intro():
817
834
  # Wait for server to settle