@@ -263,6 +263,15 @@ def init_project(server: CodeflashLanguageServer, params: ValidateProjectParams)
263263def _initialize_optimizer_if_api_key_is_valid (
264264 server : CodeflashLanguageServer , api_key : Optional [str ] = None
265265) -> dict [str , str ]:
266+ key_check_result = _check_api_key_validity (api_key )
267+ if key_check_result .get ("status" ) != "success" :
268+ return key_check_result
269+
270+ _initialize_optimizer (server )
271+ return key_check_result
272+
273+
274+ def _check_api_key_validity (api_key : Optional [str ]) -> dict [str , str ]:
266275 user_id = get_user_id (api_key = api_key )
267276 if user_id is None :
268277 return {"status" : "error" , "message" : "api key not found or invalid" }
@@ -271,11 +280,15 @@ def _initialize_optimizer_if_api_key_is_valid(
271280 error_msg = user_id [7 :]
272281 return {"status" : "error" , "message" : error_msg }
273282
283+ return {"status" : "success" , "user_id" : user_id }
284+
285+
286+ def _initialize_optimizer (server : CodeflashLanguageServer ) -> None :
274287 from codeflash .optimization .optimizer import Optimizer
275288
276289 new_args = process_args (server )
277- server .optimizer = Optimizer ( new_args )
278- return { "status" : "success" , "user_id" : user_id }
290+ if not server .optimizer :
291+ server . optimizer = Optimizer ( new_args )
279292
280293
281294def process_args (server : CodeflashLanguageServer ) -> Namespace :
@@ -302,16 +315,16 @@ def provide_api_key(server: CodeflashLanguageServer, params: ProvideApiKeyParams
302315 if not api_key .startswith ("cf-" ):
303316 return {"status" : "error" , "message" : "Api key is not valid" }
304317
305- # clear cache to ensure the new api key is used
318+ # # clear cache to ensure the new api key is used
306319 get_codeflash_api_key .cache_clear ()
307320 get_user_id .cache_clear ()
308-
309- init_result = _initialize_optimizer_if_api_key_is_valid (server , api_key )
310- if init_result ["status" ] == "error" :
311- return {"status" : "error" , "message" : "Api key is not valid" }
312-
313- user_id = init_result ["user_id" ]
321+ key_check_result = _check_api_key_validity (api_key )
322+ if key_check_result .get ("status" ) != "success" :
323+ return key_check_result
324+ user_id = key_check_result ["user_id" ]
314325 result = save_api_key_to_rc (api_key )
326+ # initialize optimizer with the new api key
327+ _initialize_optimizer (server )
315328 if not is_successful (result ):
316329 return {"status" : "error" , "message" : result .failure ()}
317330 return {"status" : "success" , "message" : "Api key saved successfully" , "user_id" : user_id } # noqa: TRY300
@@ -325,21 +338,19 @@ def initialize_function_optimization(
325338) -> dict [str , str ]:
326339 document_uri = params .textDocument .uri
327340 document = server .workspace .get_text_document (document_uri )
341+ file_path = Path (document .path )
328342
329343 server .show_message_log (f"Initializing optimization for function: { params .functionName } in { document_uri } " , "Info" )
330344
331345 if server .optimizer is None :
332346 _initialize_optimizer_if_api_key_is_valid (server )
333347
334- server .optimizer .worktree_mode ()
335-
336- original_args , _ = server .optimizer .original_args_and_test_cfg
337-
348+ server .optimizer .args .file = file_path
338349 server .optimizer .args .function = params .functionName
339- original_relative_file_path = Path (document .path ).relative_to (original_args .project_root )
340- server .optimizer .args .file = server .optimizer .current_worktree / original_relative_file_path
341350 server .optimizer .args .previous_checkpoint_functions = False
342351
352+ server .optimizer .worktree_mode ()
353+
343354 server .show_message_log (
344355 f"Args set - function: { server .optimizer .args .function } , file: { server .optimizer .args .file } " , "Info"
345356 )
0 commit comments