44from pathlib import Path
55
66from yuxi import config as conf
7+ from yuxi .utils .paths import (
8+ VIRTUAL_PATH_PREFIX ,
9+ WORKSPACE_DIR_NAME ,
10+ OUTPUTS_DIR_NAME ,
11+ UPLOADS_DIR_NAME
12+ )
713
8- DEFAULT_VIRTUAL_PATH_PREFIX = "/home/gem/user-data"
9- VIRTUAL_PATH_PREFIX = DEFAULT_VIRTUAL_PATH_PREFIX
10- _WORKSPACE_DIR_NAME = "workspace"
11- _UPLOADS_DIR_NAME = "uploads"
12- _OUTPUTS_DIR_NAME = "outputs"
1314
1415_SAFE_THREAD_ID_RE = re .compile (r"^[A-Za-z0-9_-]+$" )
1516
1617
1718def get_virtual_path_prefix () -> str :
18- configured = str (getattr (conf , "sandbox_virtual_path_prefix" , "" ) or "" ).strip ()
19- if not configured :
20- return DEFAULT_VIRTUAL_PATH_PREFIX
21- return "/" + configured .strip ("/" )
19+ return "/" + VIRTUAL_PATH_PREFIX .strip ("/" )
2220
2321
2422def _validate_thread_id (thread_id : str ) -> str :
@@ -46,15 +44,15 @@ def sandbox_user_data_dir(thread_id: str) -> Path:
4644
4745def sandbox_workspace_dir (thread_id : str ) -> Path :
4846 _validate_thread_id (thread_id )
49- return _global_user_data_dir () / _WORKSPACE_DIR_NAME
47+ return _global_user_data_dir () / WORKSPACE_DIR_NAME
5048
5149
5250def sandbox_uploads_dir (thread_id : str ) -> Path :
53- return _thread_root_dir (thread_id ) / _UPLOADS_DIR_NAME
51+ return _thread_root_dir (thread_id ) / UPLOADS_DIR_NAME
5452
5553
5654def sandbox_outputs_dir (thread_id : str ) -> Path :
57- return _thread_root_dir (thread_id ) / _OUTPUTS_DIR_NAME
55+ return _thread_root_dir (thread_id ) / OUTPUTS_DIR_NAME
5856
5957
6058def ensure_thread_dirs (thread_id : str ) -> None :
@@ -72,16 +70,16 @@ def _resolve_user_data_base_dir(thread_id: str, relative_path: str) -> tuple[Pat
7270 return base_dir .resolve (), base_dir .resolve ()
7371
7472 namespace = parts [0 ]
75- if namespace == _WORKSPACE_DIR_NAME :
73+ if namespace == WORKSPACE_DIR_NAME :
7674 # Workspace is shared across threads, so it lives outside the per-thread root.
7775 base_dir = sandbox_workspace_dir (thread_id )
7876 target_path = base_dir .joinpath (* parts [1 :]) if len (parts ) > 1 else base_dir
7977 return base_dir .resolve (), target_path .resolve ()
80- if namespace == _UPLOADS_DIR_NAME :
78+ if namespace == UPLOADS_DIR_NAME :
8179 base_dir = sandbox_uploads_dir (thread_id )
8280 target_path = base_dir .joinpath (* parts [1 :]) if len (parts ) > 1 else base_dir
8381 return base_dir .resolve (), target_path .resolve ()
84- if namespace == _OUTPUTS_DIR_NAME :
82+ if namespace == OUTPUTS_DIR_NAME :
8583 base_dir = sandbox_outputs_dir (thread_id )
8684 target_path = base_dir .joinpath (* parts [1 :]) if len (parts ) > 1 else base_dir
8785 return base_dir .resolve (), target_path .resolve ()
@@ -124,7 +122,7 @@ def virtual_path_for_thread_file(thread_id: str, path: str | Path) -> str:
124122 else :
125123 workspace_relative = relative_path .as_posix ()
126124 relative_path_str = (
127- _WORKSPACE_DIR_NAME if workspace_relative in {"" , "." } else f"{ _WORKSPACE_DIR_NAME } /{ workspace_relative } "
125+ WORKSPACE_DIR_NAME if workspace_relative in {"" , "." } else f"{ WORKSPACE_DIR_NAME } /{ workspace_relative } "
128126 )
129127
130128 prefix = get_virtual_path_prefix ().rstrip ("/" )
0 commit comments