From f785a17b3d05ffeec98feac23d56e8ad11d18c16 Mon Sep 17 00:00:00 2001 From: Suchintan Date: Tue, 30 Sep 2025 02:14:00 -0400 Subject: [PATCH] Handle duplicate files (#3558) Co-authored-by: Suchintan Singh --- skyvern/forge/agent.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/skyvern/forge/agent.py b/skyvern/forge/agent.py index 7ca9e651..1a5e9061 100644 --- a/skyvern/forge/agent.py +++ b/skyvern/forge/agent.py @@ -545,7 +545,17 @@ class ForgeAgent: # Fallback to random filename if no download_suffix provided random_file_id = "".join(random.choices(string.ascii_uppercase + string.digits, k=4)) final_file_name = f"download-{datetime.now().strftime('%Y%m%d%H%M%S%f')}-{random_file_id}" - rename_file(os.path.join(workflow_download_directory, file), final_file_name + file_extension) + + # Check if file with this name already exists + target_path = os.path.join(workflow_download_directory, final_file_name + file_extension) + counter = 1 + while os.path.exists(target_path): + # If file exists, append counter to filename + final_file_name = f"{final_file_name}_{counter}" + target_path = os.path.join(workflow_download_directory, final_file_name + file_extension) + counter += 1 + + rename_file(os.path.join(workflow_download_directory, file), target_path) LOG.info( "Task marked as completed due to download",