@@ -42,39 +42,46 @@ def __init__(
4242 settings : Any ,
4343 bot_settings : BotSettings ,
4444 session_manager : SessionManager ,
45- scheduler : TaskScheduler ,
45+ scheduler : TaskScheduler | None = None ,
46+ client : OpenCodeClient | None = None ,
47+ server : OpenCodeServer | None = None ,
4648 ) -> None :
4749 self .settings = settings
4850 self .bot_settings = bot_settings
4951 self .session_manager = session_manager
5052 self .scheduler = scheduler
51- self .client = OpenCodeClient (
53+ self ._lock = asyncio .Lock ()
54+ self ._cached_providers : list [dict [str , Any ]] = []
55+ self ._cached_agents : list [dict [str , Any ]] = []
56+ self ._cached_commands : list [dict [str , Any ]] = []
57+
58+ self .client = client or OpenCodeClient (
5259 base_url = settings .opencode_api_url ,
5360 username = settings .opencode_server_username ,
5461 password = settings .opencode_server_password or None ,
5562 )
56- self .server = OpenCodeServer (
57- command = settings .opencode_command ,
63+
64+ self .server = server or OpenCodeServer (
65+ command = settings .opencode_command or "opencode" ,
5866 work_dir = settings .opencode_work_dir or None ,
5967 )
68+
6069 self .transcriber = VoiceTranscriber (
61- api_url = settings . stt_api_url ,
62- api_key = settings . stt_api_key ,
63- model = settings . stt_model ,
64- language = settings . stt_language ,
70+ api_url = getattr ( settings , " stt_api_url" , "" ) ,
71+ api_key = getattr ( settings , " stt_api_key" , "" ) ,
72+ model = getattr ( settings , " stt_model" , "whisper-large-v3-turbo" ) ,
73+ language = getattr ( settings , " stt_language" , "" ) ,
6574 )
75+
6676 self .tts = TextToSpeech (
67- api_url = settings . tts_api_url ,
68- api_key = settings . tts_api_key ,
69- model = settings . tts_model ,
70- voice = settings . tts_voice ,
77+ api_url = getattr ( settings , " tts_api_url" , "" ) ,
78+ api_key = getattr ( settings , " tts_api_key" , "" ) ,
79+ model = getattr ( settings , " tts_model" , "gpt-4o-mini-tts" ) ,
80+ voice = getattr ( settings , " tts_voice" , "alloy" ) ,
7181 )
72- self ._lock = asyncio .Lock ()
73- self ._cached_providers : list [dict [str , Any ]] = []
74- self ._cached_agents : list [dict [str , Any ]] = []
75- self ._cached_commands : list [dict [str , Any ]] = []
7682
77- self .scheduler .register_callback ("run_task" , self ._run_scheduled_task )
83+ if self .scheduler is not None :
84+ self .scheduler .register_callback ("run_task" , self ._run_scheduled_task )
7885
7986 def _locale (self ) -> str :
8087 return self .settings .bot_locale or "en"
0 commit comments