From eed9faedaaa4062835148e5231db160d3109d6d8 Mon Sep 17 00:00:00 2001 From: Harry Date: Fri, 23 Jan 2026 18:51:31 +0800 Subject: [PATCH] refactor: replace AppAssetsInitializer with DraftAppAssetsInitializer and ensure assets directory creation in app_assets_initializer --- api/core/sandbox/initializer/app_assets_initializer.py | 5 +++++ api/core/sandbox/manager.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/api/core/sandbox/initializer/app_assets_initializer.py b/api/core/sandbox/initializer/app_assets_initializer.py index 4e78bdc005..8050f9cd12 100644 --- a/api/core/sandbox/initializer/app_assets_initializer.py +++ b/api/core/sandbox/initializer/app_assets_initializer.py @@ -37,6 +37,11 @@ class AppAssetsInitializer(AsyncSandboxInitializer): ["wget", "-q", download_url, "-O", AppAssets.ZIP_PATH], error_message="Failed to download assets zip", ) + # Create the assets directory first to ensure it exists even if zip is empty + .add( + ["mkdir", "-p", AppAssets.PATH], + error_message="Failed to create assets directory", + ) # unzip with silent error and return 1 if the zip is empty # FIXME(Mairuis): should use a more robust way to check if the zip is empty .add( diff --git a/api/core/sandbox/manager.py b/api/core/sandbox/manager.py index 8e83d2253d..7c97d28a48 100644 --- a/api/core/sandbox/manager.py +++ b/api/core/sandbox/manager.py @@ -190,7 +190,7 @@ class SandboxManager: .options(sandbox_provider.config) .user(user_id) .app(app_id) - .initializer(AppAssetsInitializer(tenant_id, app_id, assets.id)) + .initializer(DraftAppAssetsInitializer(tenant_id, app_id, assets.id)) .initializer(DifyCliInitializer(tenant_id, user_id, app_id, assets.id)) .initializer(SkillInitializer(tenant_id, user_id, app_id, assets.id)) .storage(storage, assets.id)